CN110543422A - 一种用于fpr的软件包代码缺陷数据处理方法、系统及介质 - Google Patents
一种用于fpr的软件包代码缺陷数据处理方法、系统及介质 Download PDFInfo
- Publication number
- CN110543422A CN110543422A CN201910837366.7A CN201910837366A CN110543422A CN 110543422 A CN110543422 A CN 110543422A CN 201910837366 A CN201910837366 A CN 201910837366A CN 110543422 A CN110543422 A CN 110543422A
- Authority
- CN
- China
- Prior art keywords
- defect
- fortify
- fpr
- scanning
- report
- 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.)
- Granted
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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种用于FPR的软件包代码缺陷数据处理方法、系统及介质,软件包代码缺陷数据处理方法实施步骤包括:输入基于FPR文件得到的PDF格式的Fortify扫描报告;将PDF格式的Fortify扫描报告转换为易处理的文本格式;针对转换为文本格式的Fortify扫描报告进行数据预处理去冗余;针对去冗余后的文本格式的Fortify扫描报告逐条提取缺陷信息并将其持久化存储到本地数据库;针对持久化存储到本地数据库的缺陷信息进行数据可视化从多个维度对缺陷数据进行统计分析并输出统计分析结果。本发明具有通用性好、准确率高、处理效率高的优点。
Description
技术领域
本发明涉及大规模软件代码缺陷的管理和分析领域,具体涉及一种用于FPR(Fortify Project Report,Fortify扫描报告)的软件包代码缺陷数据处理方法、系统及介质。
背景技术
代码质量对于软件的安全可靠及稳定运行十分重要。操作系统、数据库管理系统等软件的代码具有大规模的特点。以通用操作系统为例,内核代码往往达数百至数千万行,而且还在持续增长。在这些大规模软件的开发、调试和使用过程中,不可避免地会出现由于软件设计或编码缺陷等因素而导致的系统无法正常工作及安全性、可靠性受到影响的情况。另一方面,随着网络技术的不断发展,开源软件的影响力逐渐增加,近年来,越来越多的软件使用开源组件以提高软件开发效率;开源组件经验证、修改后纳入大规模软件研制,若被复用开源代码组件中存在脆弱点,那么其脆弱性往往会引入目标软件产品中。对于应用于关键领域中的软件,一旦出现故障或缺陷,会导致软件安装或运行出错,往往使得重要业务或实验失败,导致重大经济损失。为减少软件中存在的安全等缺陷,越来越多的软件安全检测产品厂商也已经在考虑关注软件开发的整个流程,将安全检测与监测融入需求分析、概要设计、详细设计、编码、测试等各个阶段以全面的保证软件的安全及正确性。
安全性检测目前大多数是通过测试的方式来实现。测试大体上分为黑盒测试和白盒测试两种。黑盒测试一般使用的是渗透的方法,这种方法仍然带有明显的黑盒测试本身的不足,需要大量的测试用例来进行覆盖,且测试完成后仍无法保证软件是否仍然存在风险。现在白盒测试中源代码扫描越来越成为一种流行的技术,使用源代码扫描产品对软件进行代码扫描,一方面可以找出潜在的风险,从内对软件进行检测,提高代码的安全性,另一方面也可以进一步提高代码的质量。黑盒的渗透测试和白盒的源代码扫描内外结合,可以使得软件的安全性得到很大程度的提高。
借助第三方商用工具对源代码进行扫描是发现和识别软件代码中存在的漏洞的重要手段之一。Fortify SCA是一个静态的、白盒的软件源代码安全性检测与分析工具。它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应用软件的源代码进行静态、动态以及运行过程进行分析,分析的过程中与它特有的软件安全漏洞规则集进行全面地匹配、查找,从而将源代码中存在的安全漏洞扫描出来,并给予整理报告。扫描的结果中包括详细的安全漏洞信息,还会有相关安全知识的说明以及修复意见;提供安全漏洞审计及团队协作功能,确保每一个漏洞都能够得到及时有效的跟踪、处理;帮助用户在实施QA测试的过程中能够对软件安全脆弱性和安全漏洞进行识别;同时提供系统运行的实时保护。具体地,采用Fortify SCA进行软件安全检测的主要技术优势如下:1、Fortify SCA支持从多方面分析软件源代码,查找软件安全漏洞,是目前采用分析技术最多、检查代码安全问题最全面的工具之一。2、Fortify SCA提供跨越软件数据流、语义、结构、控制流、配置不同层次和不同编程语言边界的静态分析功能,支持ASP.NET,C/C++,C#,ColdFusion,Java,JSP,PL/SQL,T-SQL,XML,VB .NET and other .NET languages等多种语言,能跟踪软件安全漏洞引入的过程,支持Windows、Solaris、Linux、AIX和Mac OS X等多种操作系统平台。3、目前覆盖数百种类别的安全漏洞,其安全代码规则多达数万条,且支持自定义软件安全代码规则。4、能够识别存在的安全漏洞并给出修复建议,提供丰富的软件安全代码规范及其文档资料,辅助开发人员了解各种软件安全漏洞的成因和修复方法,以便快速修复软件安全漏洞。软件安全审计人员也可以利用该工具对每种可能存在的软件安全隐患进行审计。5、测试结果准确度高,能为识别出的安全漏洞定位出代码行号;同时具有快速、低开销等特点。
基于上述优点,Fortify SCA成为软件源代码安全性检测的优选工具,在大型软件开发、调试、测试等过程中被广泛使用。Fortify SCA对被检测代码扫描后通常生成FPR(Fortify Project Report,Fortify扫描报告)文件。FPR文件通过.fpr文件扩展名来表示,其中包括漏洞分类、漏洞的全路径信息、漏洞所在的源代码行、漏洞的详细说明及修复建议等信息。Fortify支持通过命令行将FPR文件转换为PDF格式。PDF格式的扫描报告通常数十页,有的甚至达数百、上千页,一方面具有信息量大的特点,另一方面,信息表示也具有规整性。
目前包括Fortify在内的安全检测工具通常适用于万行、十余万行代码规模,对于数十万行及百万行以上规模软件,通常以功能模块为单位,采用分块扫描的方式提高安全检测的准确性及效率。以Linux操作系统为例,若以软件包为粒度分块,其关键代码通常由数百到数千软件包,每个软件包代码规模不等,万行代码规模并不少见。因此,针对软件包的Fortify扫描将生成数百到数千份扫描报告,每份报告中包含大量缺陷信息(包括缺陷警告信息)。针对Fortify扫描报告的缺陷数据的处理方法研究,现有工作都是通过人工阅读Fortify扫描报告的方式来对缺陷数据进行统计、分析,不但效率较低,也容易出错。同时开发人员得到Fortify的报告,也很难针对这种类型的报告进行大规模文档分析,因为在PDF转换过程中可能造成数据缺失、数据错位、冗余残留等情况,。为了进一步结合机器学习、数据挖掘、自然语言处理、语义分析等方法,对大规模软件的软件包FPR缺陷信息进行深入的审计、分析等,自动提取并导出去冗余的、规整化的海量缺陷描述信息也是十分必要的。因此,需要一种方法来对大规模的Fortify扫描报告的软件包代码缺陷数据进行自动预处理及分析。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种用于FPR的软件包代码缺陷数据处理方法、系统及介质,本发明具有通用性好、准确率高、处理效率高的优点。
为了解决上述技术问题,本发明采用的技术方案为:
一种用于FPR的软件包代码缺陷数据处理方法,实施步骤包括:
1)输入基于FPR文件得到的PDF格式的Fortify扫描报告;
2)将PDF格式的Fortify扫描报告转换为易处理的文本格式;
3)针对转换为文本格式的Fortify扫描报告进行数据预处理去冗余;
4)针对去冗余后的文本格式的Fortify扫描报告逐条提取缺陷信息并将其持久化存储到本地数据库;
5)针对持久化存储到本地数据库的缺陷信息进行数据可视化从多个维度对缺陷数据进行统计分析并输出统计分析结果。
优选地,步骤1)之前还包括通过Fortify并发扫描目标软件的源代码得到FPR文件,并将FPR转换生成PDF格式的Fortify扫描报告的步骤。
优选地,所述通过Fortify并发扫描目标软件的源代码得到FPR文件的详细步骤包括:
S1)通过指定的管理主机将目标软件按照功能划分为关键包和非关键包,并确定每一个关键包和非关键包的代码量;通过指定的管理主机将用于执行Fortify扫描任务的执行主机按照配置划分为高配置主机、低配置主机;
S2)通过指定的管理主机将代码量超过预设阈值的关键包分配给高配置主机,其余的关键包和非关键包划分给低配置主机,通过所述高配置主机、低配置主机分别并发执行Fortify扫描任务扫描所分配的关键包或者非关键包,生成包含Fortify扫描报告的FPR文件;
S3)高配置主机、低配置主机将FPR文件汇总给指定的管理主机。
优选地,步骤2)中将PDF格式的Fortify扫描报告转换为易处理的文本格式时,针对单个PDF格式的Fortify扫描报告的转换步骤包括:
2.1)读取PDF格式的Fortify扫描报告;
2.2)将PDF格式的Fortify扫描报告转换为文本格式的Fortify扫描报告,使得PDF格式的Fortify扫描报告中的文档元素以及排版信息均转换为文本格式。
优选地,步骤3)的详细步骤包括:
3.1)针对文本格式的Fortify扫描报告,以字段的形式读取转化完毕的文本文档内容,然后文本文档内容通过字段匹配的方式定位指定的字段t1和t2的位置,其中字段t1为“Vulnerability Examples by Category”,表示Fortify扫描报告中的按类别划分的漏洞示例;字段t2为“Detailed Project Summary”,表示Fortify扫描报告中的详细项目摘要;
3.2)提取字段t1和t2的位置之间的数据,得到去冗余后的核心缺陷描述信息。
优选地,步骤4)的详细步骤包括:
4.1)针对去冗余后的核心缺陷描述信息,定位所有的字段t3,将所有相邻的两个字段t3之间的文本分别记为X1,X2,…,Xn,其中n为缺陷类型数量,其中字段t3为“Category” ,表示Fortify扫描报告中的缺陷类型分类;
4.2)在文本X1,X2,…,Xn中遍历选择当前缺陷类型文本Xi;
4.3)在当前缺陷类型文本Xi中定位所有的字段t4,其中字段t4为“Fortify Priority”,表示Fortify扫描报告中的缺陷优先级;将所有相邻的两个字段t4之间的文本分别记为Y1,Y2,…, Ym,其中m为每一个缺陷的属性数量;
4.4)在文本Y1,Y2,…, Ym中遍历选择当前属性文本Yj;
4.5)判断当前属性文本Yj中是否存在字段t5,其中字段t5为“Source”,表示Fortify扫描报告中的缺陷信息;如果存在字段t5,则定位字段t5的位置;
4.6)根据文本Y1,Y2,…, Ym记录属性集合D中除缺陷信息Source以外的各个属性的位置,属性集合D中的属性包括缺陷代码Sink、安全等级Fortify Priority、缺陷类型Errortype、缺陷信息Source、文件等级Folder、缺陷领域Kingdom、摘要Abstract,其中缺陷信息Source表示Fortify扫描报告中的缺陷信息;
4.7)提取属性集合D中各个属性的值,如果不存在字段t5则缺陷信息Source设置为空,将属性集合D中各个属性的值持久化存储到本地数据库;
4.8)判断文本Y1,Y2,…, Ym是否已经遍历完毕,如果尚未遍历完毕则跳转执行步骤4.4);否则,跳转执行下一步;
4.9)判断文本X1,X2,…,Xn是否已经遍历完毕,如果尚未遍历完毕则跳转执行步骤4.2);否则,跳转执行步骤5)。
优选地,步骤5)中进行数据可视化从多个维度对缺陷数据进行统计分析时,对缺陷数据进行统计分析的多个维度包括缺陷类型Error Type、缺陷领域Kingdom、安全等级Fortify Priority、软件包类型,其中缺陷类型Error Type 、缺陷领域Kingdom、安全等级Fortify Priority为步骤4)得到的代码缺陷的属性,软件包类型为通过Fortify并发扫描目标软件的源代码时将目标软件按照功能划分的分类属性。
本发明还提供一种用于FPR的软件包代码缺陷数据处理系统,包括:
输入程序单元,用于输入基于FPR文件得到的PDF格式的Fortify扫描报告;
格式转换程序单元,用于将PDF格式的Fortify扫描报告转换为易处理的文本格式;
去冗余程序单元,用于针对转换为文本格式的Fortify扫描报告进行数据预处理去冗余;
属性提取程序单元,用于针对去冗余后的文本格式的Fortify扫描报告逐条提取缺陷信息并将其持久化存储到本地数据库;
可视化程序单元,用于针对持久化存储到本地数据库的缺陷信息进行数据可视化从多个维度对缺陷数据进行统计分析并输出统计分析结果。
本发明还提供一种用于FPR的软件包代码缺陷数据处理系统,包括计算机设备,该计算机设备被编程或配置以执行所述用于FPR的软件包代码缺陷数据处理方法的步骤,或者该计算机设备的存储介质上存储有被编程或配置以执行所述用于FPR的软件包代码缺陷数据处理方法的计算机程序。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行所述用于FPR的软件包代码缺陷数据处理方法的计算机程序。
和现有技术相比,本发明具有下述优点:针对现有分析工具缺乏对Fortify扫描报告进行自动预处理和分析的现状,本发明通过对Fortify扫描报告进行预处理、提取缺陷信息后导入数据库、从数据库导出后进行自动统计分析,支持从Fortify扫描报告中准确、完整获取缺陷信息的内容并进行永久性存储,并支持缺陷信息的自动统计和分析,为缺陷的进一步分析和修复提供了良好的支撑,具有通用性好、准确率高的优点。
附图说明
图1为本发明实施例方法的基本流程示意图。
图2为本发明实施例方法步骤1)之前生成PDF格式的Fortify扫描报告的流程示意图。
图3为本发明实施例方法步骤3)和步骤4)的基本流程示意图。
图4为本发明实施例方法中的单条缺陷数据示例。
具体实施方式
如图1所示,本实施例用于FPR的软件包代码缺陷数据处理方法的实施步骤包括:
1)输入基于FPR文件得到的PDF格式的Fortify扫描报告;
2)将PDF格式的Fortify扫描报告转换为易处理的文本格式;
3)针对转换为文本格式的Fortify扫描报告进行数据预处理去冗余;
4)针对去冗余后的文本格式的Fortify扫描报告逐条提取缺陷信息并将其持久化存储到本地数据库;
5)针对持久化存储到本地数据库的缺陷信息进行数据可视化从多个维度对缺陷数据进行统计分析并输出统计分析结果。
本实施例中,步骤1)之前还包括通过Fortify并发扫描目标软件的源代码得到FPR文件,并将FPR转换生成PDF格式的Fortify扫描报告的步骤。
参见图2,通过Fortify并发扫描目标软件的源代码得到FPR文件的详细步骤包括:
S1)通过指定的管理主机将目标软件按照功能划分为关键包和非关键包,并确定每一个关键包和非关键包的代码量;通过指定的管理主机将用于执行Fortify扫描任务的执行主机(主1~主机N)按照配置划分为高配置主机、低配置主机;本实施例中将目标软件按照功能划分时,以操作系统为例,可以软件包为粒度进行分块,这种划分方式具有逻辑相对独立、功能自然区分的优点;
S2)通过指定的管理主机将代码量超过预设阈值的关键包分配给高配置主机,其余的关键包和非关键包划分给低配置主机,通过所述高配置主机、低配置主机分别并发执行Fortify扫描任务扫描所分配的关键包或者非关键包,生成包含Fortify扫描报告的FPR文件;
S3)高配置主机、低配置主机将FPR文件汇总给指定的管理主机。
通过上述方式,可实现通过Fortify并发扫描目标软件的负载均衡,提高通过Fortify并发扫描目标软件的效率和速度。
本实施例中,步骤2)中将PDF格式的Fortify扫描报告转换为易处理的文本格式时,针对单个PDF格式的Fortify扫描报告的转换步骤包括:
2.1)读取PDF格式的Fortify扫描报告;
2.2)将PDF格式的Fortify扫描报告转换为文本格式的Fortify扫描报告,使得PDF格式的Fortify扫描报告中的文档元素以及排版信息均转换为文本格式。
将PDF格式的Fortify扫描报告转换为文本格式的Fortify扫描报告时可利用现有的格式转换软件,实现原理如下:2.2.1)从文件句柄创建一个pdf解析对象;2.2.2)通过pdf解析对象创建pdf文档对象,存储PDF格式的Fortify扫描报告的文档结构;2.2.3)创建pdf资源管理对象,存储共享资源;2.2.4)通过pdf资源管理对象解析对象并写入文本,从而得到文本格式的Fortify扫描报告。
参见图3,本实施例步骤3)的详细步骤包括:
3.1)针对文本格式的Fortify扫描报告,以字段的形式读取转化完毕的文本文档内容,然后文本文档内容通过字段匹配的方式定位指定的字段t1和t2的位置,其中字段t1为“Vulnerability Examples by Category”,表示Fortify扫描报告中的按类别划分的漏洞示例;字段t2为“Detailed Project Summary”,表示Fortify扫描报告中的详细项目摘要;
3.2)提取字段t1和t2的位置之间的数据,得到去冗余后的核心缺陷描述信息。
参见图3,本实施例步骤4)的详细步骤包括:
4.1)针对去冗余后的核心缺陷描述信息,定位所有的字段t3,将所有相邻的两个字段t3之间的文本分别记为X1,X2,…,Xn,其中n为缺陷类型数量,其中字段t3为“Category” ,表示Fortify扫描报告中的缺陷类型分类;
4.2)在文本X1,X2,…,Xn中遍历选择当前缺陷类型文本Xi;
4.3)一段缺陷类型文本Xi对应一条缺陷描述信息,在当前缺陷类型文本Xi中定位所有的字段t4,其中字段t4为“Fortify Priority” ,表示Fortify扫描报告中的缺陷优先级;将所有相邻的两个字段t4之间的文本分别记为Y1,Y2,…, Ym,其中m为每一个缺陷的属性数量;
4.4)在文本Y1,Y2,…, Ym中遍历选择当前属性文本Yj;
一段当前属性文本Yj对应一条缺陷数据的特有属性,参见图4所示实例,单条缺陷数据安全等级Fortify Priority(Low、High、Critical)、文件等级Folder、缺陷领域Kingdom、摘要Abstract、包括缺陷代码Sink、缺陷类型Error type(图4中为Dead Code,此外还有PoorStyle: Variable Never Used等)、文件名(图4中为Dead Code),还可能包含缺陷信息Source,缺陷信息Source与缺陷代码Sink类似,用于描述在其他代码文件所产生的缺陷位置及其±2行内的代码内容,如向函数传递参数时由于参数格式错误导致的缺陷;
4.5)判断当前属性文本Yj中是否存在字段t5,其中字段t5为“Source”,表示Fortify扫描报告中的缺陷信息;如果存在字段t5,则定位字段t5的位置;
4.6)根据文本Y1,Y2,…, Ym记录属性集合D中除缺陷信息Source以外的各个属性的位置,属性集合D中的属性包括缺陷代码Sink、安全等级Fortify Priority、缺陷类型Errortype、缺陷信息Source、文件等级Folder、缺陷领域Kingdom、摘要Abstract,其中缺陷信息Source表示Fortify扫描报告中的缺陷信息;文件名Filename用于描述缺陷代码所在的文件名称以及其所在的代码行数,如extensions.c:153、user.c:184等;缺陷代码Sink用于描述缺陷代码的详细信息;安全等级Fortify Priority根据缺陷的严重程度而定,分别有Low、Medium、High、Critical;缺陷类型Error type由Fortify内置的近300种缺陷类型确定,主要包括Poor Style: Variable Never Used、Dead Code等缺陷类型;缺陷信息Source用于描述在其他代码文件所产生的缺陷位置及其±2行内的代码内容,如向函数传递参数时由于参数格式错误导致的缺陷;文件等级Folder一般由安全等级Fortify Priority确定;缺陷领域Kingdom根据缺陷类型所属的领域而确定,主要包括Code Quality、SecurityFeatures等缺陷领域;摘要Abstract为对缺陷代码的部分摘要;
4.7)提取属性集合D中各个属性的值,如果不存在字段t5则缺陷信息Source设置为空,将属性集合D中各个属性的值持久化存储到本地数据库;
4.8)判断文本Y1,Y2,…, Ym是否已经遍历完毕,如果尚未遍历完毕则跳转执行步骤4.4);否则,跳转执行下一步;
4.9)判断文本X1,X2,…,Xn是否已经遍历完毕,如果尚未遍历完毕则跳转执行步骤4.2);否则,跳转执行步骤5)。
本实施例中,步骤5)中进行数据可视化从多个维度对缺陷数据进行统计分析时,对缺陷数据进行统计分析的多个维度包括缺陷类型Error type、缺陷领域Kingdom、安全等级Fortify Priority、软件包类型,其中缺陷类型Error type、缺陷领域Kingdom、安全等级Fortify Priority为步骤4)得到的代码缺陷的属性,软件包类型为通过Fortify并发扫描目标软件的源代码时将目标软件按照功能划分的分类属性。本实施例中,进行统计分析时首先人工将软件包按具体功能进行分类,再进行统计分析,统计时从数据库的所有表数据中提取对应的缺陷信息,如对缺陷类型的统计,即是将所有缺陷信息按缺陷类型分类,统计各缺陷类型的数目,最后将数据基于WEB借助图表工具Echart实现可视化,生成了相应的图表。
此外,本实施例还提供一种用于FPR的软件包代码缺陷数据处理系统,包括:
输入程序单元,用于输入基于FPR文件得到的PDF格式的Fortify扫描报告;
格式转换程序单元,用于将PDF格式的Fortify扫描报告转换为易处理的文本格式;
去冗余程序单元,用于针对转换为文本格式的Fortify扫描报告进行数据预处理去冗余;
属性提取程序单元,用于针对去冗余后的文本格式的Fortify扫描报告逐条提取缺陷信息并将其持久化存储到本地数据库;
可视化程序单元,用于针对持久化存储到本地数据库的缺陷信息进行数据可视化从多个维度对缺陷数据进行统计分析并输出统计分析结果。
此外,本实施例还提供一种用于FPR的软件包代码缺陷数据处理系统,包括计算机设备,该计算机设备被编程或配置以执行前述用于FPR的软件包代码缺陷数据处理方法的步骤,或者该计算机设备的存储介质上存储有被编程或配置以执行前述用于FPR的软件包代码缺陷数据处理方法的计算机程序。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行前述用于FPR的软件包代码缺陷数据处理方法的计算机程序。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种用于FPR的软件包代码缺陷数据处理方法,其特征在于实施步骤包括:
1)输入基于FPR文件得到的PDF格式的Fortify扫描报告;
2)将PDF格式的Fortify扫描报告转换为易处理的文本格式;
3)针对转换为文本格式的Fortify扫描报告进行数据预处理去冗余;
4)针对去冗余后的文本格式的Fortify扫描报告逐条提取缺陷信息并将其持久化存储到本地数据库;
5)针对持久化存储到本地数据库的缺陷信息进行数据可视化从多个维度对缺陷数据进行统计分析并输出统计分析结果。
2.根据权利要求1所述的用于FPR的软件包代码缺陷数据处理方法,其特征在于,步骤1)之前还包括通过Fortify并发扫描目标软件的源代码得到FPR文件,并将FPR转换生成PDF格式的Fortify扫描报告的步骤。
3.根据权利要求2所述的用于FPR的软件包代码缺陷数据处理方法,其特征在于,所述通过Fortify并发扫描目标软件的源代码得到FPR文件的详细步骤包括:
S1)通过指定的管理主机将目标软件按照功能划分为关键包和非关键包,并确定每一个关键包和非关键包的代码量;通过指定的管理主机将用于执行Fortify扫描任务的执行主机按照配置划分为高配置主机、低配置主机;
S2)通过指定的管理主机将代码量超过预设阈值的关键包分配给高配置主机,其余的关键包和非关键包划分给低配置主机,通过所述高配置主机、低配置主机分别并发执行Fortify扫描任务扫描所分配的关键包或者非关键包,生成包含Fortify扫描报告的FPR文件;
S3)高配置主机、低配置主机将FPR文件汇总给指定的管理主机。
4.根据权利要求1所述的用于FPR的软件包代码缺陷数据处理方法,其特征在于,步骤2)中将PDF格式的Fortify扫描报告转换为易处理的文本格式时,针对单个PDF格式的Fortify扫描报告的转换步骤包括:
2.1)读取PDF格式的Fortify扫描报告;
2.2)将PDF格式的Fortify扫描报告转换为文本格式的Fortify扫描报告,使得PDF格式的Fortify扫描报告中的文档元素以及排版信息均转换为文本格式。
5.根据权利要求1所述的用于FPR的软件包代码缺陷数据处理方法,其特征在于,步骤3)的详细步骤包括:
3.1)针对文本格式的Fortify扫描报告,以字段的形式读取转化完毕的文本文档内容,然后文本文档内容通过字段匹配的方式定位指定的字段t1和t2的位置,其中字段t1为“Vulnerability Examples by Category”,表示Fortify扫描报告中的按类别划分的漏洞示例;字段t2为“Detailed Project Summary”,表示Fortify扫描报告中的详细项目摘要;
3.2)提取字段t1和t2的位置之间的数据,得到去冗余后的核心缺陷描述信息。
6.根据权利要求1所述的用于FPR的软件包代码缺陷数据处理方法,其特征在于,步骤4)的详细步骤包括:
4.1)针对去冗余后的核心缺陷描述信息,定位所有的字段t3,将所有相邻的两个字段t3之间的文本分别记为X1,X2,…,Xn,其中n为缺陷类型数量,其中字段t3为“Category” ,表示Fortify扫描报告中的缺陷类型分类;
4.2)在文本X1,X2,…,Xn中遍历选择当前缺陷类型文本Xi;
4.3)在当前缺陷类型文本Xi中定位所有的字段t4,其中字段t4为“Fortify Priority”,表示Fortify扫描报告中的缺陷优先级;将所有相邻的两个字段t4之间的文本分别记为Y1,Y2,…, Ym,其中m为每一个缺陷的属性数量;
4.4)在文本Y1,Y2,…, Ym中遍历选择当前属性文本Yj;
4.5)判断当前属性文本Yj中是否存在字段t5,其中字段t5为“Source”,表示Fortify扫描报告中的缺陷信息;如果存在字段t5,则定位字段t5的位置;
4.6)根据文本Y1,Y2,…, Ym记录属性集合D中除缺陷信息Source以外的各个属性的位置,属性集合D中的属性包括缺陷代码Sink、安全等级Fortify Priority、缺陷类型Errortype、缺陷信息Source、文件等级Folder、缺陷领域Kingdom、摘要Abstract,其中缺陷信息Source表示Fortify扫描报告中的缺陷信息;
4.7)提取属性集合D中各个属性的值,如果不存在字段t5则缺陷信息Source设置为空,将属性集合D中各个属性的值持久化存储到本地数据库;
4.8)判断文本Y1,Y2,…, Ym是否已经遍历完毕,如果尚未遍历完毕则跳转执行步骤4.4);否则,跳转执行下一步;
4.9)判断文本X1,X2,…,Xn是否已经遍历完毕,如果尚未遍历完毕则跳转执行步骤4.2);否则,跳转执行步骤5)。
7.根据权利要求1所述的用于FPR的软件包代码缺陷数据处理方法,其特征在于,步骤5)中进行数据可视化从多个维度对缺陷数据进行统计分析时,对缺陷数据进行统计分析的多个维度包括缺陷类型Error type、缺陷领域Kingdom、安全等级Fortify Priority、软件包类型,其中缺陷类型Error type、缺陷领域Kingdom、安全等级Fortify Priority为步骤4)得到的代码缺陷的属性,软件包类型为通过Fortify并发扫描目标软件的源代码时将目标软件按照功能划分的分类属性。
8.一种用于FPR的软件包代码缺陷数据处理系统,其特征在于包括:
输入程序单元,用于输入基于FPR文件得到的PDF格式的Fortify扫描报告;
格式转换程序单元,用于将PDF格式的Fortify扫描报告转换为易处理的文本格式;
去冗余程序单元,用于针对转换为文本格式的Fortify扫描报告进行数据预处理去冗余;
属性提取程序单元,用于针对去冗余后的文本格式的Fortify扫描报告逐条提取缺陷信息并将其持久化存储到本地数据库;
可视化程序单元,用于针对持久化存储到本地数据库的缺陷信息进行数据可视化从多个维度对缺陷数据进行统计分析并输出统计分析结果。
9.一种用于FPR的软件包代码缺陷数据处理系统,包括计算机设备,其特征在于:该计算机设备被编程或配置以执行权利要求1~7中任意一项所述用于FPR的软件包代码缺陷数据处理方法的步骤,或者该计算机设备的存储介质上存储有被编程或配置以执行权利要求1~7中任意一项所述用于FPR的软件包代码缺陷数据处理方法的计算机程序。
10.一种计算机可读存储介质,其特征在于:该计算机可读存储介质上存储有被编程或配置以执行权利要求1~7中任意一项所述用于FPR的软件包代码缺陷数据处理方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910837366.7A CN110543422B (zh) | 2019-09-05 | 2019-09-05 | 一种用于fpr的软件包代码缺陷数据处理方法、系统及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910837366.7A CN110543422B (zh) | 2019-09-05 | 2019-09-05 | 一种用于fpr的软件包代码缺陷数据处理方法、系统及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110543422A true CN110543422A (zh) | 2019-12-06 |
CN110543422B CN110543422B (zh) | 2022-12-27 |
Family
ID=68712674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910837366.7A Active CN110543422B (zh) | 2019-09-05 | 2019-09-05 | 一种用于fpr的软件包代码缺陷数据处理方法、系统及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110543422B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111008376A (zh) * | 2019-12-09 | 2020-04-14 | 国网山东省电力公司电力科学研究院 | 一种基于代码动态分析的移动应用源代码安全审计系统 |
CN111258888A (zh) * | 2020-01-09 | 2020-06-09 | 上海丰蕾信息科技有限公司 | 数据报告生成与分析系统 |
CN112733156A (zh) * | 2021-01-29 | 2021-04-30 | 中国人民解放军国防科技大学 | 基于代码属性图的软件脆弱性智能检测方法、系统及介质 |
CN117634426A (zh) * | 2024-01-24 | 2024-03-01 | 上海合见工业软件集团有限公司 | 一种电路设计的缺陷标记生成方法、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110161938A1 (en) * | 2009-12-30 | 2011-06-30 | International Business Machines Corporation | Including defect content in source code and producing quality reports from the same |
CN105159822A (zh) * | 2015-08-12 | 2015-12-16 | 南京航空航天大学 | 一种基于文本词性和程序调用关系的软件缺陷定位方法 |
CN106445801A (zh) * | 2016-04-27 | 2017-02-22 | 南京慕测信息科技有限公司 | 一种基于频谱定位和可视化定位软件缺陷的方法 |
CN109815220A (zh) * | 2018-12-14 | 2019-05-28 | 深圳壹账通智能科技有限公司 | 一种缺陷数据处理方法和装置 |
-
2019
- 2019-09-05 CN CN201910837366.7A patent/CN110543422B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110161938A1 (en) * | 2009-12-30 | 2011-06-30 | International Business Machines Corporation | Including defect content in source code and producing quality reports from the same |
CN105159822A (zh) * | 2015-08-12 | 2015-12-16 | 南京航空航天大学 | 一种基于文本词性和程序调用关系的软件缺陷定位方法 |
CN106445801A (zh) * | 2016-04-27 | 2017-02-22 | 南京慕测信息科技有限公司 | 一种基于频谱定位和可视化定位软件缺陷的方法 |
CN109815220A (zh) * | 2018-12-14 | 2019-05-28 | 深圳壹账通智能科技有限公司 | 一种缺陷数据处理方法和装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111008376A (zh) * | 2019-12-09 | 2020-04-14 | 国网山东省电力公司电力科学研究院 | 一种基于代码动态分析的移动应用源代码安全审计系统 |
CN111008376B (zh) * | 2019-12-09 | 2021-11-05 | 国网山东省电力公司电力科学研究院 | 一种基于代码动态分析的移动应用源代码安全审计系统 |
CN111258888A (zh) * | 2020-01-09 | 2020-06-09 | 上海丰蕾信息科技有限公司 | 数据报告生成与分析系统 |
CN112733156A (zh) * | 2021-01-29 | 2021-04-30 | 中国人民解放军国防科技大学 | 基于代码属性图的软件脆弱性智能检测方法、系统及介质 |
CN112733156B (zh) * | 2021-01-29 | 2024-04-12 | 中国人民解放军国防科技大学 | 基于代码属性图的软件脆弱性智能检测方法、系统及介质 |
CN117634426A (zh) * | 2024-01-24 | 2024-03-01 | 上海合见工业软件集团有限公司 | 一种电路设计的缺陷标记生成方法、电子设备及存储介质 |
CN117634426B (zh) * | 2024-01-24 | 2024-04-05 | 上海合见工业软件集团有限公司 | 一种电路设计的缺陷标记生成方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110543422B (zh) | 2022-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110543422B (zh) | 一种用于fpr的软件包代码缺陷数据处理方法、系统及介质 | |
US10558554B2 (en) | Machine learning based software correction | |
CN110852065B (zh) | 一种文档审核方法、装置、系统、设备及存储介质 | |
CN111459799B (zh) | 一种基于Github的软件缺陷检测模型建立、检测方法及系统 | |
US8539475B2 (en) | API backward compatibility checking | |
US8495429B2 (en) | Log message anomaly detection | |
CN102804147B (zh) | 执行abap源代码的代码检查的代码检查执行系统 | |
US9612898B2 (en) | Fault analysis apparatus, fault analysis method, and recording medium | |
US8132156B2 (en) | Methods and systems for testing tool with comparative testing | |
US9690788B2 (en) | File type recognition analysis method and system | |
US20170228309A1 (en) | System and method for equivalence class analysis-based automated requirements-based test case generation | |
CN107862327B (zh) | 一种基于多特征的安全缺陷识别系统和方法 | |
CN108763091B (zh) | 用于回归测试的方法、装置及系统 | |
CN109492106B (zh) | 一种文本代码相结合的缺陷原因自动分类方法 | |
CN111522708B (zh) | 一种日志记录方法、计算机设备及存储介质 | |
CN110059006B (zh) | 代码审计方法及装置 | |
CN111581090A (zh) | 一种基于nlp和rf框架的自动化测试用例生成方法及系统 | |
CN111400446A (zh) | 一种标准文本的查重方法及系统 | |
KR101696694B1 (ko) | 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치 | |
CN111488314A (zh) | 一种基于Python的仿真日志分析方法 | |
CN114818643A (zh) | 一种保留特定业务信息的日志模板提取方法 | |
CN107577738A (zh) | 一种通过svm文本挖掘处理数据的fmeca方法 | |
CN107102909A (zh) | 一种面向复杂软件密集型系统的故障分类方法 | |
CN104536880A (zh) | 基于符号执行的gui程序测试用例扩增方法 | |
Corea et al. | A taxonomy of business rule organizing approaches in regard to business process compliance |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |