一种计算机软件漏洞智能评估的方法与流程

文档序号:33460741发布日期:2023-03-15 03:42阅读:17来源:国知局
一种计算机软件漏洞智能评估的方法与流程
一种计算机软件漏洞智能评估的方法
1.技术领域
2.本发明涉及互联网安全领域,尤其涉及一种计算机软件漏洞智能评估的方法。


背景技术:

3.根据it研究与顾问咨询公司gartner统计数据显示,75%的黑客攻击发生在应用层。而由nist的统计显示92%的漏洞属于应用层而非网络层。越来越多的安全产品厂商也已经在考虑关注软件开发的整个流程,将安全检测与监测融入需求分析、概要设计、详细设计、编码、测试等各个阶段以全面的保证应用安全。
4.对于应用安全性的检测目前大多数是通过测试的方式来实现。测试大体上分为黑盒测试和白盒测试两种。黑盒测试一般使用的是渗透的方法,这种方法仍然带有明显的黑盒测试本身的不足,需要大量的测试用例来进行覆盖,且测试完成后仍无法保证软件是否仍然存在风险。现在白盒测试中源代码扫描越来越成为一种流行的技术,使用源代码扫描产品对软件进行代码扫描,一方面可以找出潜在的风险,从内对软件进行检测,可以有效保证测试的覆盖率,从更深层次更早发现代码漏洞。
5.静态应用安全测试 (sast) 也称静态分析,是一种测试方法,通过分析源代码发现容易让组织的应用受到攻击的安全漏洞。sast 在编译代码之前扫描应用。由于开发人员的数量远远多于安全人员,其日常工作所产出的代码数量,对于安全人员或团队而言,即便是寻找资源为一小部分应用执行代码审查,也并非易事。sast 工具的一个关键优势是能够分析 100% 的代码库。而且,与人工使用手动安全代码审查相比,其速度要快很多。这些工具只需几分钟即可扫描数百万行代码。sast 工具可自动识别关键漏洞,如缓冲区溢出、sql 注入、跨站点脚本等。
6.但是,工具始终是工具。工具也会犯错误,我们把这些错误称为假阳性(误报)。当工具报告的问题根本不是真正的问题时,就出现了假阳性。与此相反,当工具查不出应有的错误时,就会产生假阴性。造成大量误报最简单的原因是:工具无法像人类一样进行分析,因为它缺乏应用程序所处的上下文环境;因此,它必须谨慎行事,试图引起用户注意那些潜在的问题。另一方面,代码相似度计算是一个已经有40年研究历史的问题。它的应用主要聚焦在检测代码抄袭,软件维护中的相似代码查找,没有与安全工具的结合,不能单独解决代码安全问题。
7.自动化sast可以短时间内产生大量疑似漏洞记录,人工复核是必不可少的环节,但同时有成本高,速度慢的特点,无法充分发挥工具的优势。而个别调整规则或参数试图控制漏报与误报的比例,将对最终精度可能产生无法评估的影响(例如过拟合造成更多漏报)。
8.因此,有必要提供一种计算机软件漏洞智能评估的方法解决上述技术问题。
9.

技术实现要素:

10.本发明提供一种计算机软件漏洞智能评估的方法,解决了分析难度大,且不便于操作的问题。
11.为解决上述技术问题,本发明提供的计算机软件漏洞智能评估的方法包括:数据收集模块、规划学习模块、系统维护模块、结果更新模块;所述数据收集模块的输出端连接于所述规划学习模块的输入端,所述规划学习模块的输出端连接于所述结果更新模块的输入端,所述系统维护模块的输出端连接于所述数据收集模块的输入端,所述系统维护模块的输出端连接于所述规划学习模块的输入端,所述系统维护模块的输出端连接于所述结果更新模块的输入端。
12.优选的,所述数据收集模块由业界目前主流的sast工具提供完善的接口,数据收集模块通过调用接口,获取有关的扫描结果,对接口返回数据进行解析,结构化存储于数据库当中,若个别sast工具不直接开放接口,需考虑从例如siem、soc、splunk等安全平台中获取。
13.优选的,所述规则学习模块用于提取所有已经人工判定的记录,如结果状态字段, 典型的常见状态如待确认、无法利用、误报、确认等。由于各类常见漏洞类型真实占比各不相同,为保证分类器可以识别各类漏洞,建议按照样本所占比例等比例抽样,使总体符合二八原则,即80%的记录作为训练集,20%的记录作为测试集。
14.优选的,所述规则学习模块对训练集对应的代码片段可以使用如deckard、rtvnn、cdlh等深度学习方法通过计算目标代码片段和样本代码片段的相似度得到分类器,代码最相似的片段被认定具有相同的结果状态。为提升运行效率,待确认漏洞不需要与训练集中所有记录进行距离计算比较,只需要与同平台语言(例如c/java/python/javascript等)的同漏洞类型(例如owasp top10 a1-a10)样本计算比较即可,当测试集总体误报和漏报比例均符合给定阈值水平,认为训练有效,否则重复抽样训练。
15.优选的,所述系统维护模块在实际工作中存在经人工核实(标签)的记录越来越多,训练集应及时更新,还存在不管是人工或自动化标签的记录,有可能在后续中需要再次调整原标签,并及时更新分类器。
16.优选的,所述系统维护模块可以根据给定参数,例如间隔天数,标记数量增加量等,对增加后的总体样本触发重复调用规则学习模块,也可以支持手动干预调整后重新抽样(可略),训练,验证步骤。
17.优选的,所述结果更新模块将通过测试集检验的分类器应用至全体待分类记录,得到经智能分类器的初步判别结果,通过sast工具的api在报告当中更新状态,并显示由自动分类器得到分值(by automatic classifier,最大相似度),待进一步评估或处理。
18.优选的,所述结果更新模块包括输入单元、数据结果分析单元、数据结果整合单元、数据备份单元、输出单元,所述数据结果分析单元用于对评估结果进行统计分析,所述数据结构整合单元用于对分析后的评估结果进行整合分类。
19.优选的,所述数据备份单元内备份数量五十条,当储存数量超过五十条,将剔除最开始一条。
20.优选的,所述数据备份单元内数据可人工设置为星标数据,对于星标数据,数据备份单元不会将其删档,当星标数据数量超过五十条,则进行提醒,由人工进行选择。
21.与相关技术相比较,本发明提供的计算机软件漏洞智能评估的方法具有如下有益效果:本发明提供一种计算机软件漏洞智能评估的方法,通过引入机器学习方法智能评估,定期自动更新训练集,将专业人员持久积累的经验及时转化为判别规则,并对判别结果给出置信度(可靠度)水平,使专业人员可以更合理安排资源对漏洞进行确认和修复,对高度可靠的自动判别结果也可以减少人工环节,将sast工具结合智能学习方法,自动判别相似代码片段存在漏洞的可能性,优化sast工具的使用,辅助安全人员/代码审查人员评估代码安全。
22.附图说明
23.图1为本发明提供的计算机软件漏洞智能评估的方法的漏洞描述图;图2为本发明提供的计算机软件漏洞智能评估的方法的流程示意图;图3为本发明提供的结果更新模块的结构框图。
24.具体实施方式
25.下面结合附图和实施方式对本发明作进一步说明。
26.请结合参阅图1、图2、图3,其中,图1为本发明提供的计算机软件漏洞智能评估的方法的漏洞描述图;图2为本发明提供的计算机软件漏洞智能评估的方法的流程示意图;图3为本发明提供的结果更新模块的结构框图。计算机软件漏洞智能评估的方法包括:数据收集模块、规划学习模块、系统维护模块、结果更新模块;所述数据收集模块的输出端连接于所述规划学习模块的输入端,所述规划学习模块的输出端连接于所述结果更新模块的输入端,所述系统维护模块的输出端连接于所述数据收集模块的输入端,所述系统维护模块的输出端连接于所述规划学习模块的输入端,所述系统维护模块的输出端连接于所述结果更新模块的输入端。
27.所述数据收集模块由业界目前主流的sast工具提供完善的接口,数据收集模块通过调用接口,获取有关的扫描结果,对接口返回数据进行解析,结构化存储于数据库当中,若个别sast工具不直接开放接口,需考虑从例如siem、soc、splunk等安全平台中获取。
28.所述规则学习模块用于提取所有已经人工判定的记录,如结果状态字段, 典型的常见状态如待确认、无法利用、误报、确认等。由于各类常见漏洞类型真实占比各不相同,为保证分类器可以识别各类漏洞,建议按照样本所占比例等比例抽样,使总体符合二八原则,即80%的记录作为训练集,20%的记录作为测试集。
29.在对源码分析的过程中,扫描工具并未对源代码进行足够深入的理解,导致了很多关键信息丢失,为了防止漏报,本着“宁可错杀,不可错放”的原则,只能尽可能多的上报告警,最终导致了海量的误报。
30.每个语言或多或少都有自己的一些特性,如果不支持,会直接导致在污点传播分
析时无法确认标识符指向的对象(比如:javascript的变量声明提升)。这样的语言特性不胜枚举,每个语言又都不一样,而且不幸的是,大多数厂商在这方面并没有给予足够好的支持。
31.还有一个主要原因,部分检查器为了降低复杂度,只使用了过程内分析,失了上下文信息,从而无法准确定位到某些标识符正确指向的对象,最终导致误报或漏报。
32.通过规则学习模块对扫描结果进行人工审计,主要对误报、漏报进行分类评估。
33.所述规则学习模块对训练集对应的代码片段可以使用如deckard、rtvnn、cdlh等深度学习方法通过计算目标代码片段和样本代码片段的相似度得到分类器,代码最相似的片段被认定具有相同的结果状态。为提升运行效率,待确认漏洞不需要与训练集中所有记录进行距离计算比较,只需要与同平台语言(例如c/java/python/javascript等)的同漏洞类型(例如owasp top10 a1-a10)样本计算比较即可,当测试集总体误报和漏报比例均符合给定阈值水平,认为训练有效,否则重复抽样训练。
34.所述系统维护模块在实际工作中存在经人工核实(标签)的记录越来越多,训练集应及时更新,还存在不管是人工或自动化标签的记录,有可能在后续中需要再次调整原标签,并及时更新分类器。
35.所述系统维护模块可以根据给定参数,例如间隔天数,标记数量增加量等,对增加后的总体样本触发重复调用规则学习模块,也可以支持手动干预调整后重新抽样(可略),训练,验证步骤。
36.所述结果更新模块将通过测试集检验的分类器应用至全体待分类记录,得到经智能分类器的初步判别结果,通过sast工具的api在报告当中更新状态,并显示由自动分类器得到分值(by automatic classifier,最大相似度),待进一步评估或处理。
37.所述结果更新模块包括输入单元、数据结果分析单元、数据结果整合单元、数据备份单元、输出单元,所述数据结果分析单元用于对评估结果进行统计分析,所述数据结构整合单元用于对分析后的评估结果进行整合分类。
38.所述数据备份单元内备份数量五十条,当储存数量超过五十条,将剔除最开始一条。
39.所述数据备份单元内数据可人工设置为星标数据,对于星标数据,数据备份单元不会将其删档,当星标数据数量超过五十条,则进行提醒,由人工进行选择。
40.本发明提供的计算机软件漏洞智能评估的方法的工作原理如下:通过引入机器学习方法智能评估,定期自动更新训练集,将专业人员持久积累的经验及时转化为判别规则,并对判别结果给出置信度(可靠度)水平,使专业人员可以更合理安排资源对漏洞进行确认和修复,对高度可靠的自动判别结果也可以减少人工环节。
41.与相关技术相比较,本发明提供的计算机软件漏洞智能评估的方法具有如下有益效果:通过引入机器学习方法智能评估,定期自动更新训练集,将专业人员持久积累的经验及时转化为判别规则,并对判别结果给出置信度(可靠度)水平,使专业人员可以更合理安排资源对漏洞进行确认和修复,对高度可靠的自动判别结果也可以减少人工环节,将sast工具结合智能学习方法,自动判别相似代码片段存在漏洞的可能性,优化sast工具的使用,辅助安全人员/代码审查人员评估代码安全。
42.以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1