CN110175123A - 一种基于符号表达式静态缺陷警报关联识别方法 - Google Patents
一种基于符号表达式静态缺陷警报关联识别方法 Download PDFInfo
- Publication number
- CN110175123A CN110175123A CN201910427209.9A CN201910427209A CN110175123A CN 110175123 A CN110175123 A CN 110175123A CN 201910427209 A CN201910427209 A CN 201910427209A CN 110175123 A CN110175123 A CN 110175123A
- Authority
- CN
- China
- Prior art keywords
- alarm
- character expression
- expression
- exp
- event correlation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
- G06F8/434—Pointers; Aliasing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Maintenance And Management Of Digital Transmission (AREA)
Abstract
本发明公开一种基于符号表达式的静态缺陷警报关联识别方法,本方法可以通过挖掘警报间的深层次关联信息建立警报关联。本发明首先根据警报间对应符号表达式的逻辑关系建立了警报间的关联推导规则,然后在缺陷检测阶段根据缺陷触发条件识别出警报并推导出不同警报间的关联关系,最后根据警报间的关联关系对警报进行自动判定。通过实验证明,本发明的静态缺陷警报关联识别方法相比未应用警报关联技术的现有方法,能在一定程度上提高人工判定警报的效率,有效减轻人工判定警报的工作。
Description
技术领域
本发明涉及软件静态分析技术,尤其涉及一种基于符号表达式的静态缺陷警报关联识别方法。
背景技术
静态分析技术是一种检测程序语义缺陷的有效技术,通过静态分析程序的语法与语义,并基于程序安全规则判断被测程序是否违反了程序安全属性。目前,在静态测试领域,已经出现了一些相对成熟的工具,国外具有代表性的主要有PMD、Findbugs、Coverity、K8等,国内主要有DTS(Defect Test System)等静态缺陷检测工具。
据统计,因为静态技术对程序的非平凡属性分析时不够精确,利用这些静态检测工具对程序编译与测试后,语义缺陷密度大致是1个 /KLOC,这些存在的缺陷严重影响着软件质量,将直接导致程序运行时出现系统崩溃、运算结果异常、安全漏洞等情况,这些检测出的真实缺陷和误报称之为警报。
随着软件的规模与复杂度不断递增,静态检测工具检测出的警报数量也急剧增加,这些检测出的警报需要警报判定人员逐一进行人工判定,既耗时又耗力,同时也造成了缺陷检测的成本大幅度增加。
静态缺陷检测结果分析显示,检测出的警报间存在着某种关联关系。如果能够找到这些警报间的关联关系,并对警报进行合理地分组,在人工判定警报时,只需要对一组中的一个或几个警报进行判定,从而可以减轻警报判定人员的负担。
发明内容
有鉴于此,本发明的主要目的在于首先针对程序静态缺陷检测存在高误报需要耗费大量人力消除的问题,并针对此问题提出了警报关联识别方法。
为达到上述目的,本发明的技术方案是这样实现的:
一种基于符号表达式的静态缺陷警报关联识别方法,该方法包括:
1、一种基于符号表达式的静态缺陷警报关联识别方法,其特征在于,该识别方法包括以下几个步骤:
A、识别出警报并采用符号表达式表示警报相关变量的取值;
B、按照警报的符号表达式级数从小到大进行排序,得出警报序列;
C、根据警报间对应的符号表达式的逻辑关系构建警报关联推导规则;
D、对警报集合中的警报进行两两比较,并判定两个警报是否为同类缺陷模式;
E、判断警报间是否存在关联关系,若警报间存在关联关系,则将其加入到各自对应的关联集合中,若警报间不存在关联关系,则执行步骤D;
F、根据警报间的关联关系,对警报进行自动判定;
G、结束算法。
其中,所述步骤A中在缺陷检测阶段根据缺陷触发条件识别出警报,具体过程如下:
A1、在缺陷检测阶段根据缺陷触发条件识别出警报;
A2、采用符号表达式表示警报相关变量的取值。
所述步骤B中建立警报级数排序,具体过程如下:
B1、通过构建符号表达式级数表示警报对应符号表达式的复杂程度,根据警报对应符号表达式的个数将符号表达式级数分为n个等级,假定单个符号表达式SaExp为1级,每增加一个逻辑运算符号或者符号表达式,相应的级数也增加1,则符号表达式为2级, SaExp&&SbExp、SaExp||SbExp为3级,依次类推;
B2、首先判断所有警报对应符号表达式的级数,然后按照警报的符号表达式级数从小到大进行排序,得出警报序列。
所述步骤C中构建警报关联推导规则,具体过程如下:
根据警报间符号表达式的逻辑关系,假定警报ai对应的符号表达式为ζExp(ai),警报aj对应的符号表达式为ζExp(aj),ζExp(a)表示任意警报对应的一个符号表达式,构建警报关联推导规则如下:若警报ai和警报aj对应的符号表达式满足ζExp(ai)=ζExp(aj),则警报ai和警报aj存在恒等关联,若警报ai和警报aj对应的符号表达式满足ζExp(ai)=ζExp(aj)||ζExp(a),则警报ai和警报aj存在或关联。
所述步骤D中对警报集合中的警报进行两两比较,并判定两个警报是否为同类缺陷模式,具体过程如下:
D1、依次取出警报集合中两个元素,并进行比较,判断是否存在警报间未比较的警报,如果存在两个警报没有比较,则执行步骤D2,如果不存在两个警报没有比较,则执行步骤F;
D2、判断两个警报是否同类缺陷模式,若两个警报属于同类缺陷模式,则执行步骤F;若两个警报不属于同类缺陷模式,则执行步骤 D1。
所述步骤E中判定警报间是否存在关联关系,具体过程如下:
E1、若两个警报对应的符号表达式满足ζExp(ai)=ζExp(aj),则两个警报存在恒等关联关系,并加入到其对应的恒等关联集合中;否则,执行步骤E2;
E2、若两个警报对应的符号表达式满足ζExp(ai)=ζExp(aj)||ζExp(a),则两个警报存在或关联关系,并加入到其对应的或关联集合中;否则,执行步骤E3;
E3、如果这两种关联都不存在,则警报间不存在关联关系,执行步骤D1。
所述步骤F中进行警报自动判定过程,具体过程如下:
F1、人工判定警报级数最小的警报a(1≤i≤N,其中N表示警报级数最小的个数);
F2、判断警报ai的恒等关联集合是否为空,若集合不为空,依次遍历警报ai的恒等关联集合,则集合中警报的判定结果与警报ai的判定结果相同,若集合为空,执行步骤F3;
F3、判断警报ai的或关联集合是否为空,若集合不为空,则执行步骤F31,若集合为空,则执行步骤F4;
F31、若警报ai的判定结果是真实缺陷,则或关联集合中警报的判定结果与警报ai的判定结果相同;否则执行步骤F32;
F32、若警报ai的判定结果是误报,则将警报ai的或关联集合中的警报全部加入到人工判定集合中;
F4、判断人工判定集合是否为空,若集合不为空,执行步骤F5,若集合为空,执行步骤H;
F5、依次遍历人工判定集合的警报,人工亲自判定每个警报;
G、结束算法。
本发明所提供的基于符号表达式的静态缺陷警报关联识别方法,具有以下优点:
应用本发明的静态缺陷警报关联识别方法相比未应用警报关联技术的现有测试方法,能在一定程度上提升人工判定警报的效率,有效减轻人工判定警报的工作。
附图说明
图1为本发明基于符号表达式的静态缺陷警报关联识别流程示意图;
图2为警报恒等关联判定示意图
图3为警报或关联判定示意图
图4为警报判定处理示意图
具体实施方式
下面结合附图及本发明的实例对本发明的恒等关联、或关联方法作进一步详细的说明。
如,下面的代码片段:
上图表示工程中检测出的一段代码实例片段,在该实例中,语句 S1、S2、S3、S4、S5在没有进行任何空指针判断下进行就引用*p,会引起空指针解引用缺陷类型的警报,该警报对应的相关变量为指针*p, 5个警报对应着相同的符号表达式,属于恒等关联关系。
如,下面的代码片段:
上图表示检测出的另一段代码实例片段。在该实例中,语句S2、 S6、S9中各报告了一个数组越界警报,语句S2、S6因为潜在的存在分母为0的取值可能,语句S9中drawWidth取值存在小于0的可能,违反了sqrt中参数必须大于等于0的规则,drawWidth的取值来源也是多个,这3个警报存在或关联。
图1为本发明的缺陷警报关联识别流程图,如图1所示,该方法包括如下步骤:
步骤A、识别出警报并采用符号表达式表示警报相关变量的取值;
步骤B、按照警报的符号表达式级数从小到大进行排序,得出警报序列;
步骤C、根据警报间对应的符号表达式的逻辑关系构建警报关联推导规则;
步骤D、对警报集合中的警报进行两两比较,并判定两个警报是否为同类缺陷模式;
步骤E、判断警报间是否存在关联关系,若警报间存在关联关系,则将其加入到各自对应的关联集合中,若警报间不存在关联关系,则执行步骤D;
步骤F、根据警报间的关联关系,对警报进行自动判定。
步骤G、结束算法。
所述步骤E1中对警报恒等关联过程具体如图2,包括以下步骤:
E11、首先判断警报a的恒等关联集合是否为空,若集合为空,执行步骤E12,若集合不为空,执行步骤E13;
E12、进行警报a的或关联判定;
E13、依次遍历恒等关联集合中的警报元素,并将遍历的每个警报元素的判定结果赋值为警报a的判定结果。
所述步骤E2中对警报或关联过程具体如图3,包括以下步骤:
E21、首先判断警报a的或关联集合是否为空,若集合为空,执行步骤E22,若集合不为空,执行步骤E33;
E22、执行步骤E26;
E23、判断警报a的判定结果是否为真实缺陷,若警报a的判定结果是真实缺陷,则执行步骤E24,若警报a的判定结果是误报,则执行步骤E25;
E24、依次遍历或关联集合中的警报元素,并将遍历的每个警报元素的判定结果赋值为警报a的判定结果;
E25、依次遍历或关联集合中的警报元素,并将遍历的每个警报元素加入到人工判定集合中;
E26、执行下一步骤。
所述步骤F4中对警报判定过程具体如图4,包括以下步骤:
F41、判断已经得出警报判定结果是否存在不一致的情况,若同一个警报的判定结果存在不一致,则执行步骤F42,否则,执行步骤 F43;
F42、将判定结果不一致的警报加入到人工判定集合中;
F43、判断人工判定集合是否为空,若该集合为空,则执行步骤 F45,若该集合不为空,则执行步骤F44;
F44、人工判定集合中的警报;
F45、结束或关联算法。
Claims (6)
1.一种基于符号表达式的静态缺陷警报关联识别方法,其特征在于,该识别方法包括以下几个步骤:
A、识别出警报并采用符号表达式表示警报相关变量的取值;
B、按照警报的符号表达式级数从小到大进行排序,得出警报序列;
C、根据警报间对应的符号表达式的逻辑关系构建警报关联推导规则;
D、判断警报间是否存在关联关系,若警报间存在关联关系,则将其加入到各自对应的关联集合中;
E、根据警报间的关联关系,对警报进行自动判定。
2.根据权利要求1所述的基于符号表达式的静态缺陷警报关联识别方法,其特征在于,所述步骤A中在缺陷检测阶段识别出警报并采用符号表达式表示警报相关变量的取值,具体过程如下:
A1、在静态缺陷检测过程中识别并得到警报;
A2、将警报的相关变量取值由符号表达式表示,其中基于符号化三值逻辑模型的符号表达式可以对警报的相关变量实例化,符号表达式是由符号通过数学运算与关系操作构成,包括逻辑表达式、逻辑表达式间的与运算和非运算。
3.根据权利要求1所述的基于符号表达式的静态缺陷警报关联识别方法,其特征在于,所述步骤B中警报级数排序,具体过程如下:
B1、通过构建符号表达式级数表示警报对应符号表达式的复杂程度,根据警报对应符号表达式的个数将符号表达式级数分为n个等级,假定单个符号表达式SaExp为1级,每增加一个逻辑运算符号或者符号表达式,相应的级数也增加1,则符号表达式为2级,SaExp&&SbExp、SaExp||SbExp为3级,依次类推;
B2、首先判断所有警报对应符号表达式的级数,然后按照警报的符号表达式级数从小到大进行排序,得出警报序列。
4.根据权利要求1所述的基于符号表达式的静态缺陷警报关联识别方法,其特征在于,所述步骤C中警报关联推导规则,具体过程如下:
根据警报间符号表达式的逻辑关系,假定警报ai对应的符号表达式为ζExp(ai),警报aj对应的符号表达式为ζExp(aj),ζExp(a)表示任意警报对应的一个符号表达式,构建警报关联推导规则如下:若警报ai和警报aj对应的符号表达式满足ζExp(ai)=ζExp(aj),则警报ai和警报aj存在恒等关联,若警报ai和警报aj对应的符号表达式满足ζExp(ai)=ζExp(ai)||ζExp(a),则警报ai和警报aj存在或关联。
5.根据权利要求1所述的基于符号表达式的静态缺陷警报关联识别方法,其特征在于,所述步骤D中判定警报间是否存在关联关系,具体过程如下:
D1、判断警报ai和警报aj对应的符号表达式是否满足恒等关联条件;
D2、判断警报ai和警报aj对应的符号表达式是否满足或关联条件;
D3、如果这两种关联都不存在,则警报间不存在关联关系,执行步骤D1。
6.根据权利要求1所述的基于符号表达式的静态缺陷警报关联识别方法,其特征在于,所述步骤E中根据警报间的关联关系,对警报进行自动判定,具体过程如下:
E1、人工判定警报级数最小的警报ai(1≤i≤N,其中N表示警报级数最小的个数);
E2、判断警报ai的恒等关联集合是否为空,若集合不为空,则依次遍历警报ai的恒等关联集合,并将集合中警报的判定结果赋值为警报ai的判定结果,若集合为空,执行步骤E3;
E3、判断警报ai的或关联集合是否为空,若集合不为空,则执行步骤E31,若集合为空,则执行步骤E4;
E31、若警报ai的判定结果是真实缺陷,则或关联集合中警报的判定结果与警报ai的判定结果相同;否则执行步骤E32;
E32、若警报ai的判定结果是误报,则将警报ai的或关联集合中的警报全部加入到人工判定集合中;
E4、判断人工判定集合是否为空,若集合不为空,执行步骤E5,若集合为空,结束算法;
E5、依次遍历人工判定集合的警报,人工亲自判定每个警报。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910427209.9A CN110175123A (zh) | 2019-05-22 | 2019-05-22 | 一种基于符号表达式静态缺陷警报关联识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910427209.9A CN110175123A (zh) | 2019-05-22 | 2019-05-22 | 一种基于符号表达式静态缺陷警报关联识别方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110175123A true CN110175123A (zh) | 2019-08-27 |
Family
ID=67691794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910427209.9A Pending CN110175123A (zh) | 2019-05-22 | 2019-05-22 | 一种基于符号表达式静态缺陷警报关联识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110175123A (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294594A (zh) * | 2013-05-08 | 2013-09-11 | 南京大学 | 一种基于测试的静态分析误报消除方法 |
CN103580900A (zh) * | 2012-08-01 | 2014-02-12 | 上海宝信软件股份有限公司 | 一种基于事件链的关联分析系统 |
CN103678128A (zh) * | 2013-12-13 | 2014-03-26 | 北京邮电大学 | 一种基于抽象解释技术的缺陷警报分组方法及装置 |
CN104679646A (zh) * | 2013-11-29 | 2015-06-03 | 阿里巴巴集团控股有限公司 | 一种用于检测sql代码缺陷的方法和装置 |
CN103218296B (zh) * | 2013-04-22 | 2015-12-02 | 北京邮电大学 | 一种充分检测空指针引用缺陷的方法 |
US20150373564A1 (en) * | 2013-02-21 | 2015-12-24 | Zte Corporation | Alarm Processing Method and Device, Alarm Associated Information Setting Method |
CN106681851A (zh) * | 2016-12-08 | 2017-05-17 | 中国石油大学(华东) | 程序代码级内存缺陷漏报分析及解决方法 |
US20180046564A1 (en) * | 2016-08-11 | 2018-02-15 | Tata Consultancy Services Limited | System and method for cause point analysis for effective handling of static analysis alarms |
CN108897678A (zh) * | 2018-06-20 | 2018-11-27 | 中国联合网络通信集团有限公司 | 静态代码检测方法和静态代码检测系统、存储设备 |
CN109426614A (zh) * | 2017-09-01 | 2019-03-05 | 深圳市源伞新科技有限公司 | 缺陷检测方法、设备、系统和计算机可读存储介质 |
-
2019
- 2019-05-22 CN CN201910427209.9A patent/CN110175123A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103580900A (zh) * | 2012-08-01 | 2014-02-12 | 上海宝信软件股份有限公司 | 一种基于事件链的关联分析系统 |
US20150373564A1 (en) * | 2013-02-21 | 2015-12-24 | Zte Corporation | Alarm Processing Method and Device, Alarm Associated Information Setting Method |
CN103218296B (zh) * | 2013-04-22 | 2015-12-02 | 北京邮电大学 | 一种充分检测空指针引用缺陷的方法 |
CN103294594A (zh) * | 2013-05-08 | 2013-09-11 | 南京大学 | 一种基于测试的静态分析误报消除方法 |
CN104679646A (zh) * | 2013-11-29 | 2015-06-03 | 阿里巴巴集团控股有限公司 | 一种用于检测sql代码缺陷的方法和装置 |
CN103678128A (zh) * | 2013-12-13 | 2014-03-26 | 北京邮电大学 | 一种基于抽象解释技术的缺陷警报分组方法及装置 |
US20180046564A1 (en) * | 2016-08-11 | 2018-02-15 | Tata Consultancy Services Limited | System and method for cause point analysis for effective handling of static analysis alarms |
CN106681851A (zh) * | 2016-12-08 | 2017-05-17 | 中国石油大学(华东) | 程序代码级内存缺陷漏报分析及解决方法 |
CN109426614A (zh) * | 2017-09-01 | 2019-03-05 | 深圳市源伞新科技有限公司 | 缺陷检测方法、设备、系统和计算机可读存储介质 |
CN108897678A (zh) * | 2018-06-20 | 2018-11-27 | 中国联合网络通信集团有限公司 | 静态代码检测方法和静态代码检测系统、存储设备 |
Non-Patent Citations (2)
Title |
---|
张大林: "静态缺陷检测优化若干关键技术研究", 《中国博士学位论文全文数据库信息科技辑》 * |
董玉坤等: "基于区域内存模型的C程序静态分析", 《软件学报》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020010701A1 (zh) | 污染物异常监测方法、系统、计算机设备和存储介质 | |
CN107122483B (zh) | 基础地理信息数据质检方法、装置及系统 | |
CN108763931A (zh) | 基于Bi-LSTM和文本相似性的漏洞检测方法 | |
CN108965340B (zh) | 一种工业控制系统入侵检测方法及系统 | |
CN107391353A (zh) | 基于日志的复杂软件系统异常行为检测方法 | |
CN109308411B (zh) | 基于人工智能决策树的分层检测软件行为缺陷的方法和系统 | |
CN103970657B (zh) | 软件缺陷检测方法及装置 | |
CN111047173B (zh) | 基于改进d-s证据理论的社团可信度评估方法 | |
CN112733156A (zh) | 基于代码属性图的软件脆弱性智能检测方法、系统及介质 | |
CN108804326A (zh) | 一种软件代码自动检测方法 | |
CN112906738A (zh) | 一种水质检测及处理方法 | |
CN115952503A (zh) | 融合黑白灰安全检测技术的应用安全测试方法及系统 | |
CN114139880B (zh) | 企业安全管理风险动态监测系统 | |
CN106126736A (zh) | 面向软件安全性bug修复的软件开发者个性化推荐方法 | |
Azzalini et al. | FAIR-DB: Function Al dependencies to discover data bias | |
CN110175123A (zh) | 一种基于符号表达式静态缺陷警报关联识别方法 | |
CN116614366B (zh) | 一种基于边缘计算的工业互联网优化方法及系统 | |
CN110675521B (zh) | 一种代打卡异常监测分析方法、装置、系统及存储介质 | |
CN112073396A (zh) | 一种内网横向移动攻击行为的检测方法及装置 | |
CN114662981B (zh) | 基于大数据应用的污染源企业监管方法 | |
CN116756659A (zh) | 智能运维管理方法、装置、设备及存储介质 | |
CN115470524B (zh) | 涉密文件泄露检测方法、系统、设备及介质 | |
CN104751059A (zh) | 基于函数模板的软件行为分析方法 | |
CN105814546B (zh) | 用于辅助对算法链的检验和验证的方法和系统 | |
Eddy et al. | A defect prevention concept using artificial intelligence |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190827 |