CN114546561A - 一种程序静态分析结果中最佳修复点的展示方法 - Google Patents
一种程序静态分析结果中最佳修复点的展示方法 Download PDFInfo
- Publication number
- CN114546561A CN114546561A CN202210163490.1A CN202210163490A CN114546561A CN 114546561 A CN114546561 A CN 114546561A CN 202210163490 A CN202210163490 A CN 202210163490A CN 114546561 A CN114546561 A CN 114546561A
- Authority
- CN
- China
- Prior art keywords
- node
- degree
- program
- taint propagation
- static analysis
- 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
- 230000003068 static effect Effects 0.000 title claims abstract description 32
- 230000008439 repair process Effects 0.000 title claims abstract description 28
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000011156 evaluation Methods 0.000 claims abstract description 22
- 238000012545 processing Methods 0.000 claims abstract description 10
- 230000008030 elimination Effects 0.000 claims abstract description 4
- 238000003379 elimination reaction Methods 0.000 claims abstract description 4
- 239000002131 composite material Substances 0.000 claims description 3
- 230000008569 process Effects 0.000 claims description 2
- 230000007547 defect Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- 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
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种程序静态分析结果中最佳修复点的展示方法,该方法包括以下步骤:S1、获取所有污点传播路径,并对所获取的污点传播路径进行去重处理;S2、分析去重处理后的每一条污点传播路径,并基于分析结果进行组合以构建全程序污点传播流图;S3、基于全程序污点传播流图获取每个节点的出度和入度,并计算出每个节点的路径数量;S4、计算每个节点的综合评估值并进行比较,选取最大的综合评估值进行标记,进而得到最大综合评估值对应的最佳修复点。本发明通过对静态分析工具输出的所有污点传播路径进行分析并构建出全程序污点传播流图,然后对全程序污点传播流图进行处理标记出最佳修复点,能够大大节省代码审计人员的工作量,提高了工作效率。
Description
技术领域
本发明涉及计算机程序数据处理技术领域,具体而言,涉及一种程序静态分析结果中最佳修复点的展示方法。
背景技术
现有技术中,程序静态分析大多采用污点分析技术,其用于检测程序可能存在的一些缺陷(如敏感数据泄露),对于敏感数据泄露的检测一般是对敏感数据泄露的数据源头进行检测,然后通过污点传播分析技术找到该数据源头所携带的数据,并沿着程序的传播路径直到找到敏感信息泄露的点。这种敏感信息的源头,我们称之为source点,敏感信息泄露的点,我们称之为sink点;从source点到sink点的污染传播路径,我们称之为污点传播流图。在对程序的缺陷进行扫描分析时,一般分析的结果以这种污点传播流图在界面上展示出来。然而,由于分析时尽可能地遍历程序中的污点传播路径,所以难免会存在一些重复的污点传播路径,甚至会有很多污点传播路径的节点存在重合的情况。所以在界面上对缺陷代码进行审计时,会存在很多重复的情况,开发人员在进行代码审计分析缺陷结果时难免会陷入繁杂的污点传播结果中去。
鉴于此,研究一种能够节省代码审计人员工作量的程序静态分析结果中最佳修复点的展示方法是本领域技术人员亟需解决的技术问题。
发明内容
鉴于此,本发明提出了一种程序静态分析结果中最佳修复点的展示方法,所述方法通过对静态分析工具输出的所有污点传播路径进行分析进而构建出全程序污点传播流图,然后对全程序污点传播流图进行处理进而标记出属于最佳修复点的节点,能够大大节省代码审计人员的工作量,提高了工作效率。
本发明提出的一种程序静态分析结果中最佳修复点的展示方法,包括:
S1、获取程序静态分析工具输出的所有污点传播路径,然后对所获取的污点传播路径进行去重处理;
S2、分析去重处理后的每一条污点传播路径,并基于分析结果进行组合以构建全程序污点传播流图;
S3、分析全程序污点传播流图以获取每个节点的出度和入度,基于每个节点的出度和入度计算出每个节点的路径数量;
S4、基于步骤S3中得到的每个节点的出度、入度和路径数量计算每个节点的综合评估值并进行比较,选取最大的综合评估值进行标记,进而得到最大综合评估值对应的最佳修复点。
作为上述程序静态分析结果中最佳修复点的展示方法的优选方案,所述程序静态分析工具是指一种利用JDT分析源码的CodeSence Java引擎。
作为上述程序静态分析结果中最佳修复点的展示方法的优选方案,所述步骤S1中对所获取的污点传播路径进行去重处理具体为:循环遍历所获取的每一条污点传播路径,然后删除重复的污点传播路径。
作为上述程序静态分析结果中最佳修复点的展示方法的优选方案,所述步骤S2的具体实现方式为:获取具有前向边和后向边的污点传播路径,将具有前向边和后向边的污点传播路径中的路径节点沿着其后向边的方向进行组合,进而构建出全程序污点传播流图。
作为上述程序静态分析结果中最佳修复点的展示方法的优选方案,所述步骤S3的具体实现方式包括:
S31、遍历全程序污点传播流图中的每一个节点,并查看与对应节点相关联的节点,进而获取每个节点的出度和入度,其中,节点的出度是指以该节点为弧尾,起始于该节点的弧的数目;节点的入度是指以该节点为弧头,终止于该节点的弧的数目;
S32、基于每个节点的出度和入度计算出每个节点的路径数量,用公式表示为:
Ni=ni1×ni2 (1)
式(1)中,Ni表示第i个节点的路径数量,ni1表示第i个节点的出度,ni2表示第i个节点的入度。
作为上述程序静态分析结果中最佳修复点的展示方法的优选方案,所述步骤S4中每个节点的综合评估值用公式表示为:
Ai=ni1·a+ni2·b+Ni·c (2)
式(2)中,Ai表示第i个节点的综合评估值,a表示第i个节点的出度的权重,b表示第i个节点的入度的权重,c表示第i个节点的路径数量的权重,其中,a+b+c=1。
本发明所提出的一种程序静态分析结果中最佳修复点的展示方法,该展示方法首先对程序静态分析工具输出的所有污点传播路径进行去重和分析,构建出全程序污点传播流图,然后对全程序污点传播流图中的每个节点的出度、入度和综合评估值进行计算进而标记出属于最佳修复点的节点,能够大大节省了程序代码审计人员的工作量,有效提高了工作效率。
附图说明
此处所说明的附图仅仅用来提供对本发明的进一步解释,构成被申请的一部分,并不构成对本发明的限定。在附图中:
图1为本发明中一种程序静态分析结果中最佳修复点的展示方法的流程图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
具体地,本发明具体实施例提出的一种程序静态分析结果中最佳修复点的展示方法,如图1所示,包括如下步骤:
S1、获取程序静态分析工具输出的所有污点传播路径,然后对所获取的污点传播路径进行去重处理,具体地,利用程序静态分析工具对程序进行分析以输出程序内所有污点传播路径节点,每一个节点携带自身对应的代码信息、前向边和后向边;然后,循环遍历所获取的每一条污点传播路径并删除重复的污点传播路径;
其中,所述程序静态分析工具是指一种利用JDT(Java Development Toolkit,计算机编程语言开发工具包)分析源码的CodeSence Java(计算机编程语言读出码)引擎。该CodeSence Java引擎能够利用JDT分析源码,进而有效检测出源码漏洞。
S2、分析去重处理后的每一条污点传播路径,并基于分析结果进行组合以构建全程序污点传播流图;
具体地,首先,对去重处理后的每一条污点传播路径进行分析,获取具有前向边和后向边的污点传播路径,将具有前向边和后向边的污点传播路径中的路径节点按照前向边和后向边的关系把对应节点连接起来,进而构建出全程序污点传播流图;
S3、分析全程序污点传播流图以获取每个节点的出度和入度,基于每个节点的出度和入度计算出每个节点的路径数量;
具体地,所述步骤S3包括以下步骤:
S31、遍历全程序污点传播流图中的每一个节点,并查看与对应节点相关联的节点,进而获取每个节点的出度和入度,其中,节点的出度是指以该节点为弧尾,起始于该节点的弧的数目;节点的入度是指以该节点为弧头,终止于该节点的弧的数目;
S32、基于每个节点的出度和入度计算出每个节点的路径数量,用公式表示为:
Ni=ni1×ni2 (1)
式(1)中,Ni表示第i个节点的路径数量,ni1表示第i个节点的出度,ni2表示第i个节点的入度。
S4、基于步骤S3中得到的每个节点的出度、入度和路径数量计算每个节点的综合评估值并进行比较,选取最大的综合评估值进行标记,进而得到最大综合评估值对应的最佳修复点。
具体地,所述每个节点的综合评估值用公式表示为:
Ai=ni1·a+ni2·b+Ni·c (2)
式(2)中,Ai表示第i个节点的综合评估值,a表示第i个节点的出度的权重,b表示第i个节点的入度的权重,c表示第i个节点的路径数量的权重,其中,a+b+c=1。
本实施例中,a、b和c分别取值0.3、0.3和0.4。首先,利用静态分析工具输出程序内所有污点传播路径并进行去重处理;然后对每一条污点传播路径进行分析构建出全程序污点传播流图;基于全程序污点传播流图计算个节点的出度、入度和路径数量,进而计算每个节点的综合评估值;最后,综合比较所有节点的综合评估值并选取最大的综合评估值对应的节点进行标记,即找到最佳修复点,该展示方法能够大大节省代码审计人员的工作量,提高了工作效率。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种程序静态分析结果中最佳修复点的展示方法,其特征在于,所述方法包括以下步骤:
S1、获取程序静态分析工具输出的所有污点传播路径,然后对所获取的污点传播路径进行去重处理;
S2、分析去重处理后的每一条污点传播路径,并基于分析结果进行组合以构建全程序污点传播流图;
S3、分析全程序污点传播流图以获取每个节点的出度和入度,基于每个节点的出度和入度计算出每个节点的路径数量;
S4、基于步骤S3中得到的每个节点的出度、入度和路径数量计算每个节点的综合评估值并进行比较,选取最大综合评估值的节点进行标记,进而得到最大综合评估值对应的最佳修复点。
2.根据权利要求1所述的程序静态分析结果中最佳修复点的展示方法,其特征在于,所述程序静态分析工具是指一种利用JDT分析源码的CodeSence Java引擎。
3.根据权利要求2所述的程序静态分析结果中最佳修复点的展示方法,其特征在于,所述步骤S1中对所获取的污点传播路径进行去重处理具体为:循环遍历所获取的每一条污点传播路径,然后删除重复的污点传播路径。
4.根据权利要求3所述的程序静态分析结果中最佳修复点的展示方法,其特征在于,所述步骤S2的具体实现方式为:获取具有前向边和后向边的污点传播路径,将具有前向边和后向边的污点传播路径中的路径节点沿着其后向边的方向进行组合,进而构建出全程序污点传播流图。
5.根据权利要求4所述的程序静态分析结果中最佳修复点的展示方法,其特征在于,所述步骤S3的具体实现方式包括:
S31、遍历全程序污点传播流图中的每一个节点,并查看与对应节点相关联的节点,进而获取每个节点的出度和入度,其中,节点的出度是指以该节点为弧尾,起始于该节点的弧的数目;节点的入度是指以该节点为弧头,终止于该节点的弧的数目;
S32、基于每个节点的出度和入度计算出每个节点的路径数量,用公式表示为:
Ni=ni1×ni2 (1)
式(1)中,Ni表示第i个节点的路径数量,ni1表示第i个节点的出度,ni2表示第i个节点的入度。
6.根据权利要求5所述的程序静态分析结果中最佳修复点的展示方法,其特征在于,所述步骤S4中每个节点的综合评估值用公式表示为:
Ai=ni1·a+ni2·b+Ni·c (2)
式(2)中,Ai表示第i个节点的综合评估值,a表示第i个节点的出度的权重,b表示第i个节点的入度的权重,c表示第i个节点的路径数量的权重,其中,a+b+c=1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210163490.1A CN114546561A (zh) | 2022-02-22 | 2022-02-22 | 一种程序静态分析结果中最佳修复点的展示方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210163490.1A CN114546561A (zh) | 2022-02-22 | 2022-02-22 | 一种程序静态分析结果中最佳修复点的展示方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114546561A true CN114546561A (zh) | 2022-05-27 |
Family
ID=81677271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210163490.1A Pending CN114546561A (zh) | 2022-02-22 | 2022-02-22 | 一种程序静态分析结果中最佳修复点的展示方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114546561A (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001001256A1 (en) * | 1999-06-30 | 2001-01-04 | Sun Microsystems, Inc. | Method and apparatus for static analysis of software code |
US20120266247A1 (en) * | 2011-04-18 | 2012-10-18 | International Business Machines Corporation | Automatic Inference Of Whitelist-Based Validation As Part Of Static Analysis For Security |
CN103729295A (zh) * | 2013-12-31 | 2014-04-16 | 北京理工大学 | 一种污点传播路径分析方法 |
CN104407969A (zh) * | 2014-11-03 | 2015-03-11 | 东南大学 | 基于路径特征的程序执行轨迹状态自动获取方法 |
CN105550120A (zh) * | 2016-01-29 | 2016-05-04 | 中国人民解放军信息工程大学 | 基于并行符号执行的多源多目标逼近测试方法 |
US20170286690A1 (en) * | 2016-03-31 | 2017-10-05 | International Business Machines Corporation | Automatic Generation of Data-Centric Attack Graphs |
CN109376535A (zh) * | 2018-08-14 | 2019-02-22 | 中国信息安全测评中心 | 一种基于智能化符号执行的漏洞分析方法及系统 |
CN109828995A (zh) * | 2018-12-14 | 2019-05-31 | 中国科学院计算技术研究所 | 一种基于视觉特征的图数据检测方法、系统 |
CN110110529A (zh) * | 2019-05-20 | 2019-08-09 | 北京理工大学 | 一种基于复杂网络的软件网络关键节点挖掘方法 |
CN110597715A (zh) * | 2019-08-28 | 2019-12-20 | 昆明理工大学 | 一种基于模糊测试的测试样本优化方法 |
CN110881050A (zh) * | 2019-12-20 | 2020-03-13 | 万翼科技有限公司 | 安全威胁检测方法及相关产品 |
CN113158183A (zh) * | 2021-01-13 | 2021-07-23 | 青岛大学 | 移动终端恶意行为检测方法、系统、介质、设备及应用 |
WO2021232279A1 (zh) * | 2020-05-20 | 2021-11-25 | 深圳市欢太科技有限公司 | 文件泄露漏洞的检测方法、装置、电子设备及存储介质 |
-
2022
- 2022-02-22 CN CN202210163490.1A patent/CN114546561A/zh active Pending
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001001256A1 (en) * | 1999-06-30 | 2001-01-04 | Sun Microsystems, Inc. | Method and apparatus for static analysis of software code |
US20120266247A1 (en) * | 2011-04-18 | 2012-10-18 | International Business Machines Corporation | Automatic Inference Of Whitelist-Based Validation As Part Of Static Analysis For Security |
CN103729295A (zh) * | 2013-12-31 | 2014-04-16 | 北京理工大学 | 一种污点传播路径分析方法 |
CN104407969A (zh) * | 2014-11-03 | 2015-03-11 | 东南大学 | 基于路径特征的程序执行轨迹状态自动获取方法 |
CN105550120A (zh) * | 2016-01-29 | 2016-05-04 | 中国人民解放军信息工程大学 | 基于并行符号执行的多源多目标逼近测试方法 |
US20170286690A1 (en) * | 2016-03-31 | 2017-10-05 | International Business Machines Corporation | Automatic Generation of Data-Centric Attack Graphs |
CN109376535A (zh) * | 2018-08-14 | 2019-02-22 | 中国信息安全测评中心 | 一种基于智能化符号执行的漏洞分析方法及系统 |
CN109828995A (zh) * | 2018-12-14 | 2019-05-31 | 中国科学院计算技术研究所 | 一种基于视觉特征的图数据检测方法、系统 |
CN110110529A (zh) * | 2019-05-20 | 2019-08-09 | 北京理工大学 | 一种基于复杂网络的软件网络关键节点挖掘方法 |
CN110597715A (zh) * | 2019-08-28 | 2019-12-20 | 昆明理工大学 | 一种基于模糊测试的测试样本优化方法 |
CN110881050A (zh) * | 2019-12-20 | 2020-03-13 | 万翼科技有限公司 | 安全威胁检测方法及相关产品 |
WO2021232279A1 (zh) * | 2020-05-20 | 2021-11-25 | 深圳市欢太科技有限公司 | 文件泄露漏洞的检测方法、装置、电子设备及存储介质 |
CN113158183A (zh) * | 2021-01-13 | 2021-07-23 | 青岛大学 | 移动终端恶意行为检测方法、系统、介质、设备及应用 |
Non-Patent Citations (1)
Title |
---|
孙宏伟: "面向用户的Android APP页面级隐私泄露检测关键技术研究", 计算机软件及计算机应用, no. 5, 15 May 2019 (2019-05-15) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111400724B (zh) | 基于代码相似性分析的操作系统脆弱性检测方法、系统及介质 | |
US10296447B2 (en) | Automated software program repair | |
US7971193B2 (en) | Methods for performining cross module context-sensitive security analysis | |
US8495586B2 (en) | Software for filtering the results of a software source code comparison | |
CN110059006B (zh) | 代码审计方法及装置 | |
US20190220387A1 (en) | Unexplored branch search in hybrid fuzz testing of software binaries | |
JP2005302028A (ja) | プログラムを計装するプローブ最適化のための方法およびシステム | |
US20090241096A1 (en) | Dynamic Software Tracing | |
WO2014180107A1 (zh) | 一种基于测试的静态分析误报消除方法 | |
JP7110789B2 (ja) | 自動化されたソフトウェアプログラム修復候補の選択 | |
CN107301120B (zh) | 用于处理非结构化日志的方法及装置 | |
CN112035359A (zh) | 程序测试方法、装置、电子设备及存储介质 | |
CN114491566B (zh) | 一种基于代码相似性的模糊测试方法、装置及存储介质 | |
CN112131122B (zh) | 一种源代码缺陷检测工具误报评估方法及装置 | |
JP2012503808A (ja) | ラスターイメージプロセッサの自動テスト方法およびシステム | |
JP4737624B2 (ja) | アプリケーションの障害原因の特定作業支援システム | |
CN109271322B (zh) | 一种软件测试范围确定方法、软件测试方法和装置 | |
US20060080578A1 (en) | Defect detection for integers | |
CN114546561A (zh) | 一种程序静态分析结果中最佳修复点的展示方法 | |
CN112698861A (zh) | 源代码克隆识别方法及系统 | |
JP2007122207A (ja) | プログラム分析プログラム、プログラム分析装置、プログラム分析方法 | |
JP7331681B2 (ja) | テスト実行プログラム、テスト実行方法、およびテスト実行装置 | |
JP2015102878A (ja) | プログラム関連分析方法 | |
CN112860544B (zh) | 一种代码检测方法、装置、设备和计算机可读存储介质 | |
CN116089299B (zh) | 一种二进制代码污点分析系统及方法 |
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 |