CN112100626A - 一种提高源代码审计漏洞命中率开发方法 - Google Patents
一种提高源代码审计漏洞命中率开发方法 Download PDFInfo
- Publication number
- CN112100626A CN112100626A CN202011016075.0A CN202011016075A CN112100626A CN 112100626 A CN112100626 A CN 112100626A CN 202011016075 A CN202011016075 A CN 202011016075A CN 112100626 A CN112100626 A CN 112100626A
- Authority
- CN
- China
- Prior art keywords
- vulnerability
- report
- source code
- code
- audit
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- 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/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种提高源代码审计漏洞命中率开发方法,包括以下步骤:源代码审计、漏洞特征提取、过滤漏洞误报、专家审核与反馈、扩增漏洞数据集、训练误报过滤器。本发明通过使用代码分析技术提取语法和语义信息,使用特征工程技术提取语法和语义特征,机器学习技术过滤漏洞报告中的误报,向用户提供一种低误报率的源代码审计方法,提高了静态扫描系统的可用性,来协助开发者交付更健壮的代码。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种提高源代码审计漏洞命中率开发方法。
背景技术
如果把网络信息安全工作比作一场战争的话,漏洞扫描就是这场战争中,盘旋在终端设备,网络设备上空的“全球鹰”。网络安全工作是防守和进攻的博弈,是保证信息安全,工作顺利开展的奠基石。及时和准确地审视自己信息化工作的弱点,审视自己信息平台的漏洞和问题,才能在这场信息安全战争中,处于先机,立于不败之地。只有做到自身的安全,才能立足本职,保证公司业务稳健的运行。
对于开发者而言,在使用源代码漏洞静态扫描系统时,面对包含大量误报的漏洞报告,审核漏洞难度大,会消耗大量时间,甚至会因为无法发现真实漏洞失去耐心,放弃使用扫描系统;但是软件中依然存在真实漏洞,虽然真实漏洞数量较少,但是危害性高,不及时解决容易被恶意开发者利用,造成巨大经济损失。
发明内容
本发明的目的在于克服现有技术的不足,提供提高源代码审计漏洞命中率开发方法。
本发明的目的是通过以下技术方案来实现的:
一种提高源代码审计漏洞命中率开发方法,其特征在于,包括以下步骤:
对源代码进行审计,获取漏洞报告,将漏洞报告映射到漏洞数据集;
融合漏洞报告并对其进行向后程序切片,获取切片代码语法特征向量;
过滤器获取漏洞报告,并对漏洞数据集进行漏洞扫描,过滤掉漏洞报告中的误报;
其中,所述过滤器的训练,包括以下步骤:
漏洞专家对漏洞报告进行人工审核,并将误报的漏洞进行标记;
将经过漏洞专家审核得到的正报和误报数据存储至数据集;
系统对漏洞数据集进行扫描获取漏洞数据,并对每一个漏洞项进行特征提取,获取漏洞项的语法特征向量;
将漏洞项的语法特征向量以及正报或误报标签作为训练集,用于DNN模型训练;
系统将训练得到的误报过滤模型存入到 MongoDB,进行持久化存储;
过滤器对漏洞报告进行误报过滤时,只需要提取切片代码对应的语法和语义特征向量,即可使用已有的误报过滤模型进行误报过滤。
进一步的,所述所述代码审计使用开源源代码静态扫描工具SONARQUBE。
进一步的,所述获取切片代码语法特征向量包括以下子步骤:
S101,对融合漏洞报告中的漏洞代码进行后向程序切片,切片起点为漏洞代码行,终点为函数入口,获取切片代码;
S102,使用代码分析工具将切片代码转换为抽象语法树,并先序遍历抽象语法树获取标识符序列;
S103,使用 Word2Vec 进行词嵌入获取标识符对应特征向量;
S104,进行平均池化获取切片代码语法特征向量。
进一步的,所述获取切片代码包括以下步骤:
S201,通过代码分析工具提取漏洞函数的控制流图和数据流图;
S202,从漏洞代码行对应节点开始,遍历控制流图和数据流图;
S203,去除与漏洞代码行无数据流管连接点。
进一步的,所述代码分析工具为JOERN。
进一步的,所述专家审核漏洞报告包括以下子步骤:
S201,系统从每一种漏洞类型中随机选择部分漏洞,并交给漏洞专家进行人工审核;
S202,对于漏洞专家审核出来的误报漏洞,使用相似度算法搜索与误报漏洞相似的漏洞,并将其标记为误报。
本发明的有益效果:通过使用代码分析技术提取语法和语义信息,特征工程技术提取语法和语义特征,机器学习技术过滤漏洞报告中的误报,改善开发者漏洞审核流程,降低漏洞审核难度,实现了低误报率的源代码漏洞静态扫描系统来协助开发者交付更健壮的代码。
附图说明
图1是本发明的方法流程图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图说明本发明的具体实施方式。
本实施例中,如图1所示,一种提高源代码审计漏洞命中率开发方法,包括以下子步骤:
源代码审计;
漏洞特征提取;
过滤漏洞误报;
专家审核与反馈;
扩增漏洞数据集;
训练误报过滤器。
优选的,S1中所述的源代码审计,主要步骤如下:
S101,使用SONARQUBE进行源代码审计;
S102,获取SONARQUBE审计报告;
S103,将审计报告中的漏洞想对应到CWE漏洞项ID。
优选的,所述的漏洞特征提取,主要步骤如下:
S201,系统对融合漏洞报告中的漏洞代码进行后向程序切片,切片起点为漏洞代码行,终点为函数入口;
S202,程序切片通过代码分析工具提取漏洞函数的控制流图和数据流图;
S203,从漏洞代码行对应节点开始,遍历控制流图和数据流图,去除与漏洞代码行无数据流管连接点。获取切片代码;
S204,对于语法特征,系统首先使用JOERN获取切片代码AST(抽象语法树),并先序遍历AST 获取标识符序列;
S205,使用Word2Vec进行词嵌入获取标识符对应特征向量;
S206,进行平均池化获取切片代码语法特征向量。
优选的,所述的过滤漏洞误报,使用系统训练的漏洞误报过滤器,对漏洞数据集进行漏洞扫描,获取漏洞报告,判断漏洞报告中的漏洞为正报和误报。
优选的,所述的专家审核与反馈,主要步骤如下:
S301,系统从每一种漏洞类型中随机选择部分漏洞,并交给漏洞专家进行人工审核;
S302,对于漏洞专家审核出来的误报漏洞,使用相似度算法搜索与误报漏洞相似的漏洞,并将其标记为误报。
优选的,所述的扩增漏洞数据集,将由漏洞专家审核出来的误报漏洞存储至数据集,供机器学习使用。
优选的,所述的训练误报过滤器,主要步骤如下:
S401,对数据集进行漏洞扫描,获取漏洞报告,并根据数据标签将漏洞报告中的漏洞项判定为正报和误报;
S402,对漏洞项进行特征提取,提取每一个漏洞项对应的语法特征和语义特征向量;
S403,将漏洞项的语法和语义特征向量以及正报或误报标签作为训练集,用于 DNN 模型训练;
S404,系统将训练得到的误报过滤模型进行持久化存储;
S405,之后对漏洞报告进行误报过滤时,只需要提取切片代码对应的语法和语义特征向量,即可使用已有的误报过滤模型进行误报过滤。
优选的,所述使用训练后的过滤器对漏洞报告进行误报过滤时,只需要提取切片代码对应的语法和语义特征向量,即可使用已有的误报过滤模型进行误报过滤。
本发明通过使用代码分析技术提取语法和语义信息,特征工程技术提取语法和语义特征,机器学习技术过滤漏洞报告中的误报。向用户提供一种低误报率的源代码审计方法,提高了静态扫描系统的可用性,来协助开发者交付更健壮的代码。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护的范围由所附的权利要求书及其等效物界定。
Claims (6)
1.一种提高源代码审计漏洞命中率开发方法,其特征在于,包括以下步骤:
对源代码进行审计,获取漏洞报告,将漏洞报告映射到漏洞数据集;
融合漏洞报告并对其进行向后程序切片,获取切片代码语法特征向量;
过滤器获取漏洞报告,并对漏洞数据集进行漏洞扫描,过滤掉漏洞报告中的误报;
其中,所述过滤器的训练,包括以下步骤:
漏洞专家对漏洞报告进行人工审核,并将误报的漏洞进行标记;
将经过漏洞专家审核得到的正报和误报数据存储至数据集;
系统对漏洞数据集进行扫描获取漏洞数据,并对每一个漏洞项进行特征提取,获取漏洞项的语法特征向量;
将漏洞项的语法特征向量以及正报或误报标签作为训练集,用于DNN模型训练;
系统将训练得到的误报过滤模型存入到 MongoDB,进行持久化存储;
过滤器对漏洞报告进行误报过滤时,只需要提取切片代码对应的语法和语义特征向量,即可使用已有的误报过滤模型进行误报过滤。
2.根据权利要求1所述的一种提高源代码审计漏洞命中率开发方法,其特征在于,所述代码审计使用开源源代码静态扫描工具SONARQUBE。
3.根据权利要求1所述的一种提高源代码审计漏洞命中率开发方法,其特征在于,所述获取切片代码语法特征向量包括以下子步骤:
S101,对融合漏洞报告中的漏洞代码进行后向程序切片,切片起点为漏洞代码行,终点为函数入口,获取切片代码;
S102,使用代码分析工具将切片代码转换为抽象语法树,并先序遍历抽象语法树获取标识符序列;
S103,使用 Word2Vec 进行词嵌入获取标识符对应特征向量;
S104,进行平均池化获取切片代码语法特征向量。
4.根据权利要求3所述的一种提高源代码审计漏洞命中率开发方法,其特征在于,所述获取切片代码包括以下步骤:
S201,通过代码分析工具提取漏洞函数的控制流图和数据流图;
S202,从漏洞代码行对应节点开始,遍历控制流图和数据流图;
S203,去除与漏洞代码行无数据流管连接点。
5.根据权利要求3和4所述的一种提高源代码审计漏洞命中率开发方法,其特征在于,所述代码分析工具为JOERN。
6.根据权利要求1所述的一种提高源代码审计漏洞命中率开发方法,其特征在于,所述专家审核漏洞报告包括以下子步骤:
S301,系统从每一种漏洞类型中随机选择部分漏洞,并交给漏洞专家进行人工审核;
S302,对于漏洞专家审核出来的误报漏洞,使用相似度算法搜索与误报漏洞相似的漏洞,并将其标记为误报。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011016075.0A CN112100626B (zh) | 2020-09-24 | 2020-09-24 | 一种提高源代码审计漏洞命中率开发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011016075.0A CN112100626B (zh) | 2020-09-24 | 2020-09-24 | 一种提高源代码审计漏洞命中率开发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112100626A true CN112100626A (zh) | 2020-12-18 |
CN112100626B CN112100626B (zh) | 2023-06-09 |
Family
ID=73756057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011016075.0A Active CN112100626B (zh) | 2020-09-24 | 2020-09-24 | 一种提高源代码审计漏洞命中率开发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112100626B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112733137A (zh) * | 2020-12-24 | 2021-04-30 | 哈尔滨工业大学 | 一种面向漏洞检测的二进制代码相似性分析方法 |
CN117077153A (zh) * | 2023-10-18 | 2023-11-17 | 深圳海云安网络安全技术有限公司 | 基于大规模语言模型的静态应用安全检测误报判别方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
US20100100961A1 (en) * | 2002-10-31 | 2010-04-22 | Michael Scheidell | Intrusion detection system |
CN103942497A (zh) * | 2013-09-11 | 2014-07-23 | 杭州安恒信息技术有限公司 | 一种取证式网站漏洞扫描方法和系统 |
CN104462981A (zh) * | 2013-09-12 | 2015-03-25 | 深圳市腾讯计算机系统有限公司 | 漏洞检测方法及装置 |
CN104618177A (zh) * | 2014-12-29 | 2015-05-13 | 北京奇虎科技有限公司 | 网站漏洞审核方法及装置 |
CN107885999A (zh) * | 2017-11-08 | 2018-04-06 | 华中科技大学 | 一种基于深度学习的漏洞检测方法及系统 |
CN110222512A (zh) * | 2019-05-21 | 2019-09-10 | 华中科技大学 | 一种基于中间语言的软件漏洞智能检测与定位方法与系统 |
CN110245496A (zh) * | 2019-05-27 | 2019-09-17 | 华中科技大学 | 一种源代码漏洞检测方法及检测器和其训练方法及系统 |
CN110378122A (zh) * | 2019-06-28 | 2019-10-25 | 公安部第三研究所 | 针对web扫描器漏洞实现减少漏报及误报情形的系统及其方法 |
CN110753047A (zh) * | 2019-10-16 | 2020-02-04 | 杭州安恒信息技术股份有限公司 | 一种减少漏洞扫描误报的方法 |
CN111625272A (zh) * | 2020-06-08 | 2020-09-04 | 成都信息工程大学 | 一种源代码自动化审计开发方法 |
-
2020
- 2020-09-24 CN CN202011016075.0A patent/CN112100626B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100100961A1 (en) * | 2002-10-31 | 2010-04-22 | Michael Scheidell | Intrusion detection system |
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
CN103942497A (zh) * | 2013-09-11 | 2014-07-23 | 杭州安恒信息技术有限公司 | 一种取证式网站漏洞扫描方法和系统 |
CN104462981A (zh) * | 2013-09-12 | 2015-03-25 | 深圳市腾讯计算机系统有限公司 | 漏洞检测方法及装置 |
CN104618177A (zh) * | 2014-12-29 | 2015-05-13 | 北京奇虎科技有限公司 | 网站漏洞审核方法及装置 |
CN107885999A (zh) * | 2017-11-08 | 2018-04-06 | 华中科技大学 | 一种基于深度学习的漏洞检测方法及系统 |
CN110222512A (zh) * | 2019-05-21 | 2019-09-10 | 华中科技大学 | 一种基于中间语言的软件漏洞智能检测与定位方法与系统 |
CN110245496A (zh) * | 2019-05-27 | 2019-09-17 | 华中科技大学 | 一种源代码漏洞检测方法及检测器和其训练方法及系统 |
CN110378122A (zh) * | 2019-06-28 | 2019-10-25 | 公安部第三研究所 | 针对web扫描器漏洞实现减少漏报及误报情形的系统及其方法 |
CN110753047A (zh) * | 2019-10-16 | 2020-02-04 | 杭州安恒信息技术股份有限公司 | 一种减少漏洞扫描误报的方法 |
CN111625272A (zh) * | 2020-06-08 | 2020-09-04 | 成都信息工程大学 | 一种源代码自动化审计开发方法 |
Non-Patent Citations (2)
Title |
---|
李道祥: "面向漏洞检测的中间语言切片技术", no. 04, pages 138 - 41 * |
黄山: "基于动态二进制程序切片技术的软件攻击诊断", no. 07, pages 138 - 366 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112733137A (zh) * | 2020-12-24 | 2021-04-30 | 哈尔滨工业大学 | 一种面向漏洞检测的二进制代码相似性分析方法 |
CN117077153A (zh) * | 2023-10-18 | 2023-11-17 | 深圳海云安网络安全技术有限公司 | 基于大规模语言模型的静态应用安全检测误报判别方法 |
CN117077153B (zh) * | 2023-10-18 | 2024-01-26 | 深圳海云安网络安全技术有限公司 | 基于大规模语言模型的静态应用安全检测误报判别方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112100626B (zh) | 2023-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110933104B (zh) | 恶意命令检测方法、装置、设备及介质 | |
CN109858248B (zh) | 恶意Word文档检测方法和装置 | |
CN110795732A (zh) | 基于SVM的Android移动网络终端恶意代码的动静结合检测方法 | |
CN112100626A (zh) | 一种提高源代码审计漏洞命中率开发方法 | |
CN111866004B (zh) | 安全评估方法、装置、计算机系统和介质 | |
CN103294951B (zh) | 一种基于文档型漏洞的恶意代码样本提取方法及系统 | |
CN107688742B (zh) | 大规模快速移动应用app检测和分析方法 | |
CN108399336B (zh) | 一种安卓应用恶意行为的检测方法及装置 | |
CN113328994B (zh) | 一种恶意域名处理方法、装置、设备及机器可读存储介质 | |
CN103810428A (zh) | 一种宏病毒检测方法及装置 | |
CN113704328A (zh) | 基于人工智能的用户行为大数据挖掘方法及系统 | |
CN116346456A (zh) | 业务逻辑漏洞攻击检测模型训练方法及装置 | |
CN113297580B (zh) | 基于代码语义分析的电力信息系统安全防护方法及装置 | |
CN111988327B (zh) | 威胁行为检测和模型建立方法、装置、电子设备及存储介质 | |
CN116611416A (zh) | 样本数据的生成、信息检测方法、装置、设备及存储介质 | |
CN111414621A (zh) | 一种恶意网页文件识别方法及装置 | |
CN112163217B (zh) | 恶意软件变种识别方法、装置、设备及计算机存储介质 | |
CN111464687A (zh) | 一种陌生呼叫请求的处理方法及装置 | |
CN114117419A (zh) | 一种模板注入攻击的检测方法、装置、设备、存储介质 | |
CN113688240A (zh) | 威胁要素提取方法、装置、设备及存储介质 | |
CN113051161A (zh) | 基于历史代码变更信息的api误用检测方法 | |
CN114676428A (zh) | 基于动态特征的应用程序恶意行为检测方法及设备 | |
CN111984970A (zh) | 一种sql注入检测方法、系统及电子设备和存储介质 | |
CN115114627B (zh) | 一种恶意软件检测方法及装置 | |
CN113780597B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |