CN112560043A - 一种基于上下文语义的漏洞相似性度量方法 - Google Patents
一种基于上下文语义的漏洞相似性度量方法 Download PDFInfo
- Publication number
- CN112560043A CN112560043A CN202011392187.6A CN202011392187A CN112560043A CN 112560043 A CN112560043 A CN 112560043A CN 202011392187 A CN202011392187 A CN 202011392187A CN 112560043 A CN112560043 A CN 112560043A
- Authority
- CN
- China
- Prior art keywords
- vulnerability
- code
- context
- similarity
- semantics
- 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.)
- Withdrawn
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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3347—Query execution using vector based model
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
一种基于上下文语义的漏洞相似性度量方法,其特征是借鉴自然语言处理思想,从代码语义的角度出发,使用静态代码扫描工具进行源码安全扫描,基于控制流图、数据流图得到代码上下文信息,进行代码语义分析;将代码上下文语句映射到向量空间:function:T→T”;计算漏洞与已知类型的漏洞间的相似度Similarity(T”n,T”m),设定阈值识别并自动筛选误报的漏洞,并评估识别的查全率、查准率;能够有效过滤漏洞误报,减少静态代码扫描工具误报及开发人员或工程师筛选真正漏洞的成本,解决传统静态扫描误报率高的问题,提供高准确率的误报审查服务,同时确保系统漏洞被发现,保证软件安全性。
Description
技术领域
本发明属于软件工程领域,尤其是代码语义理解在软件工程领域的应用,用于过滤静态代码漏洞扫描工具产生的误报漏洞信息。
背景技术
随着软件应用领域的不断扩大,对信息系统的攻击日益增多,其可利用的攻击点往往是程序本身在源码设计或实现过程中存在错误或缺陷(称为漏洞)。源码安全审计可以在系统开发阶段发现潜在安全漏洞,从而帮助减少10%~50%安全漏洞。因此在源码级别对程序进行漏洞扫描,可以在源头上有效减少安全漏洞的产生,从而减少恶意攻击事件的发生,保证软件安全性。随着程序分析技术与静态扫描工具的快速发展,在系统发布前对程序进行漏洞扫描成为趋势。然而,现存静态扫描工具的结果中存在大量的误报漏洞,导致开发人员要花费大量的时间去筛选和审查静态扫描工具的结果,最终导致开发人员弃用这些扫描工具。
现有的静态扫描工具主要分要一下几类:一是现存大多静态扫描工具基于模式匹配、数据流分析等技术,通常未能充分考虑上下文,存在大量误报漏洞。例如条件分支中的不可达源码、容器中的可变内容等,为了尽可能不遗漏真实漏洞,现存静态扫描工具会将这些疑似漏洞全部检测出,大量误报的存在增加了开发人员或工程师筛选真正漏洞的成本。二是纯人工漏洞检测或过滤误报漏洞需要手动核查大量相关源码,亦存在成本高、耗时长等缺点。这些问题成为了源码安全扫描的阻碍,使得现存静态扫描工具未能有效协助开发人员发现真实漏洞。
在自然语言处理模型中,常常假设:出现在相同上下文的不同词汇应该具有相似的含义。把这个假设推广到代码中:出现在相同上下文的代码语句应该具有相似的含义。根据上下文分析代码语义,同时考虑代码本身具有的一些结构化的特性,如函数声明、分支、不可更改的代码顺序等,可以更充分的理解代码语义。
从代码语义的角度出发,使用静态代码扫描工具进行源码安全扫描,得到漏洞信息,根据数据流及控制流分析代码上下文信息,度量新漏洞与已知漏洞相似性,识别并自动筛选误报的漏洞,减少静态代码扫描工具误报及开发人员或工程师筛选真正漏洞的成本。可解决传统静态扫描误报率高的问题,提供高准确率的误报审查服务,同时确保系统漏洞被发现,进一步保证软件安全性。
发明内容
本发明要解决的问题是:静态漏洞检测工具误报率高以及纯人工筛选成本高耗时长问题。
本发明的技术方案为:一种基于上下文语义的漏洞相似性度量方法,包括以下步骤:
1)使用多种开源静态漏洞扫描工具对代码进行扫描,融合扫描结果,得到漏洞所在文件、漏洞所在代码行、漏洞类型,定位漏洞在源代码中出现的位置。
2)分析漏洞所在源语言程序上下文语义,主要包括以下几个步骤:
2.1)构建漏洞所在源语言程序控制流图CFG,将函数用控制流图G=(V,E)表示,其中V是节点的集合,E是有向边的集合,根据函数的调用关系,将图中V替换为对应的被调用函数的G,直到一个漏洞对应一个控制流图;
2.2)以数据参数为线索,考虑漏洞代码数据来源及去向,构建数据流图DFG;
2.3)结合漏洞代码CFG、DFG、函数名、注释等信息挖掘漏洞所在源语言程序上下文语义信息。
3)将代码上下文语句映射到向量空间:
function:T→T″
其中function是单射函数(injective),即每个T都只有唯一的T”与之对应,反之亦然;同时具有结构保存(structure-preserving)特征,即在T所属的空间上T1<T2,那么映射后在T”所属空间上有T″1<T″2。
4)计算新漏洞与已知类型的漏洞间相似度:
其中,Similarity表示漏洞间的相似度,T″n表示新漏洞代码对应的向量、T”m表示已知类型的漏洞对应的向量。
5)根据相似度进行漏洞误报筛选,当相似度小于设定的阈值时,则认为属于同一漏洞,即该漏洞是否属于误报。
6)评估识别的查准率和查全率:
其中,pricision表示查准率,recall表示查全率,TP为真阳性样本,FP为假阳性样本,TN为真阴性样本,FN为假阴性样本。
本发明的特点在于:1、借鉴自然语言处理方式理解代码语义,出现在相同上下文的代码语句应该具有相似的含义;2、综合考虑漏洞上下文对漏洞进行分析,在使用静态代码扫描工具对漏洞进行定位后,不单单只考虑漏洞本身,结合上下文对漏洞代码进行分析,绘制控制流图及数据流图,分析代码语义;3、将代码语句映射到向量空间,保证代码与向量一一对应且保持结构不变性;4、计算代码向量间的相似度,对漏洞进行分析筛选,减低静态代码扫描工具误报率。将这4点结合,本发明可以在原有静态代码扫描工具的基础上,结合数据流图、综合上下文分析代码语义,将代码表示为与原结构保持一致的向量,计算漏洞间的余弦相似度,以筛选漏洞误报。
本发明的有益效果是:借鉴自然语言处理思想,基于上下文对代码进行语义分析,计算漏洞间的相似度,对漏洞进行识别,有效过滤漏洞误报,减少静态代码扫描工具误报及开发人员或工程师筛选真正漏洞的成本,提供高准确率的误报审查服务,同时确保系统漏洞被发现,保证软件安全性。
附图说明
图1为本发明整体框架。
图2为上下文语义分析流程图。
图3为漏洞类型判断流程图。
具体实施方式
本发明中涉及的几项关键技术是WALA工具、CFG、DFG、word2vec模型。
1、WALA工具
WALA主要用于对Java和JavaScript进行静态代码分析,基于上下文敏感的切片。本发明中,使用WALA工具抽取程序中的控制流图,根据程序数据流图,定位到与此代码相关的语句或谓词,辅助进行代码上下文语义分析。
2、CFG
CFG即控制流图,代表了一个程序执行过程中会遍历到的所有路径,用图的形式表示一个过程内所有基本块执行的可能流向,也能反映一个过程的实时执行过程。本发明中用来辅助构建DFG及分析代码上下文。
3、DFG
DFG即数据流图,从数据的角度来描述一个系统,从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。本发明中用来辅助分析漏洞代码上下文信息。
4、word2vec模型
word2vec是用来产生词向量的浅层、双层的神经网络,用来训练以重新构建词文本,训练完成之后,word2vec模型可用来映射每个词到一个向量。本发明中用来将代码语句映射到向量空间。
下面用一个具体的示例来说明本方法的步骤,并展示结果。
我们选取了Juliet Test Suite数据集中的一份代码用于实验。
实验环境为:Ubuntu 16.04LTS,运行内存8GB,存储512GB SSD,
本发明的整体流程如图1所示,具体实施步骤如下:
1)使用已有的代码漏洞检测工具SpotBug、SourceMeter、FindBugs工具及WALA工具,对此数据集进行检测,定位漏洞所在文件及代码行;
2)将漏洞所在代码中的函数用控制流图G=(V,E)表示,每个控制流图有唯一的入口和出口节点,根据函数的调用关系,将图中V替换为对应的被调用函数的G,将V的父亲节点与替换进来的控制流图的入口节点相连,该节点孩子节点与替换进来的控制流图的出口节点相连,直到一个漏洞对应一个控制流图CFG;
3)以数据参数为线索,根据漏洞代码数据来源及去向,以漏洞代码为中心构建数据流图DFG,结合漏洞代码CFG、DFG、函数名、注释等信息挖掘漏洞所在源语言程序上下文语义信息,如图2所示;
4)使用word2vec模型将代码上下文语句映射到向量空间:function:T→T”,映射后的向量,与原语句一一对应,且具有结构保存特性,不改变代码之间的结构关系;
5)根据余弦公式计算漏洞与已知类型的漏洞间的相似度Similarity(T″n,T”m),若Similarity(T″n,T”m)<ε(其中ε表示设定的阈值),则认为该漏洞与已知类型漏洞属于同一类型,即是否为误报的漏洞,如图3所示;
6)评估识别的查准率pricision和查全率recall,得到查准率平均为97.51%,查全率平均为99.13%。
在本实例中,借鉴自然语言处理思想,从代码语义的角度出发,使用静态代码扫描工具进行源码安全扫描,基于控制流图、数据流图得到代码上下文信息,进行代码语义分析,将代码表示为与原结构保持一致的向量,计算漏洞与已知类型的漏洞间的相似度,筛选误报的漏洞,能够有效过滤漏洞误报,减少静态代码扫描工具误报及开发人员或工程师筛选真正漏洞的成本,解决传统静态扫描误报率高的问题,提供高准确率的误报审查服务,同时确保系统漏洞被发现,保证软件安全性。
Claims (8)
1.一种基于上下文语义的漏洞相似性度量方法,其特征是使用静态代码扫描工具进行源码安全扫描,基于控制流图、数据流图得到代码上下文信息,进行代码语义分析,将代码表示为与原结构保持一致的向量,计算漏洞与已知类型的漏洞间的相似度Similarity(T″n,T″m),筛选误报的漏洞。
2.根据权利要求1所描述的一种基于上下文语义的漏洞相似性度量方法,其特征是使用多种开源漏洞扫描工具对代码进行扫描,融合扫描结果,得到漏洞所在文件、漏洞所在代码行、漏洞类型,定位漏洞在源代码中出现的位置。
3.根据权利要求1所描述的一种基于上下文语义的漏洞相似性度量方法,其特征分析漏洞所在源语言程序上下文语义,主要包括以下几个步骤:
3.1)构建漏洞所在源语言程序控制流图CFG,将函数用控制流图G=(V,E)表示,其中V是节点的集合,E是有向边的集合,根据函数的调用关系,将图中V替换为对应的被调用函数的G,直到一个漏洞对应一个控制流图;
3.2)以数据参数为线索,考虑漏洞代码数据来源及去向,构建数据流图DFG;
3.3)结合漏洞代码CFG、DFG、函数名、注释等信息挖掘漏洞所在源语言程序上下文语义信息。
4.根据权利要求1所描述的一种基于上下文语义的漏洞相似性度量方法,其特征是将代码上下文语句映射到向量空间:
function:T→T″
其中function是单射函数(injective),即每个T都只有唯一的T″与之对应,反之亦然;同时具有结构保存(structure-preserving)特征,即在T所属的空间上T1<T2,那么映射后在T″所属空间上有T″1<T″2。
6.根据权利要求1所描述的一种基于上下文语义的漏洞相似性度量方法,其特征是根据相似度进行漏洞误报筛选,当相似度小于设定的阈值时,则认为属于同一漏洞,即该漏洞是否属于误报的漏洞。
8.根据权利要求1所描述的一种基于上下文语义的漏洞相似性度量方法,其特征是借鉴自然语言处理思想,从代码语义的角度出发,使用静态代码扫描工具进行源码安全扫描,基于控制流图、数据流图得到代码上下文信息,进行代码语义分析;将代码上下文语句映射到向量空间:function:T→T″;计算漏洞与已知类型的漏洞间的相似度Similarity(T″n,T″m),设定阈值筛选误报的漏洞,并评价识别的查准率、查全率;能够有效过滤漏洞误报,减少静态代码扫描工具误报及开发人员或工程师筛选真正漏洞的成本,解决传统静态扫描误报率高的问题,提供高准确率的误报审查服务,同时确保系统漏洞被发现,保证软件安全性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011392187.6A CN112560043A (zh) | 2020-12-02 | 2020-12-02 | 一种基于上下文语义的漏洞相似性度量方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011392187.6A CN112560043A (zh) | 2020-12-02 | 2020-12-02 | 一种基于上下文语义的漏洞相似性度量方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112560043A true CN112560043A (zh) | 2021-03-26 |
Family
ID=75047225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011392187.6A Withdrawn CN112560043A (zh) | 2020-12-02 | 2020-12-02 | 一种基于上下文语义的漏洞相似性度量方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112560043A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407945A (zh) * | 2021-06-18 | 2021-09-17 | 北京计算机技术及应用研究所 | 一种基于人机协同的规模化Fuzzing优化系统及方法 |
CN115563619A (zh) * | 2022-09-27 | 2023-01-03 | 北京墨云科技有限公司 | 基于文本预训练模型的漏洞相似性对比方法及系统 |
CN116996326A (zh) * | 2023-09-26 | 2023-11-03 | 国网江西省电力有限公司信息通信分公司 | 基于蜜网的协同式主动防御方法 |
CN117077153A (zh) * | 2023-10-18 | 2023-11-17 | 深圳海云安网络安全技术有限公司 | 基于大规模语言模型的静态应用安全检测误报判别方法 |
-
2020
- 2020-12-02 CN CN202011392187.6A patent/CN112560043A/zh not_active Withdrawn
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407945A (zh) * | 2021-06-18 | 2021-09-17 | 北京计算机技术及应用研究所 | 一种基于人机协同的规模化Fuzzing优化系统及方法 |
CN113407945B (zh) * | 2021-06-18 | 2023-08-22 | 北京计算机技术及应用研究所 | 一种基于人机协同的规模化Fuzzing优化系统及方法 |
CN115563619A (zh) * | 2022-09-27 | 2023-01-03 | 北京墨云科技有限公司 | 基于文本预训练模型的漏洞相似性对比方法及系统 |
CN116996326A (zh) * | 2023-09-26 | 2023-11-03 | 国网江西省电力有限公司信息通信分公司 | 基于蜜网的协同式主动防御方法 |
CN116996326B (zh) * | 2023-09-26 | 2023-12-26 | 国网江西省电力有限公司信息通信分公司 | 基于蜜网的协同式主动防御方法 |
CN117077153A (zh) * | 2023-10-18 | 2023-11-17 | 深圳海云安网络安全技术有限公司 | 基于大规模语言模型的静态应用安全检测误报判别方法 |
CN117077153B (zh) * | 2023-10-18 | 2024-01-26 | 深圳海云安网络安全技术有限公司 | 基于大规模语言模型的静态应用安全检测误报判别方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112560043A (zh) | 一种基于上下文语义的漏洞相似性度量方法 | |
Le Goues et al. | A systematic study of automated program repair: Fixing 55 out of 105 bugs for $8 each | |
Shang et al. | Studying the relationship between logging characteristics and the code quality of platform software | |
US10664601B2 (en) | Method and system automatic buffer overflow warning inspection and bug repair | |
CN104636256A (zh) | 一种内存访问异常的检测方法及装置 | |
Kirbas et al. | The relationship between evolutionary coupling and defects in large industrial software | |
WO2019055378A1 (en) | METHOD AND APPARATUS FOR FINDING LONG PROCESSES IN A CODE | |
CN101853200A (zh) | 一种高效动态软件漏洞挖掘方法 | |
CN114491566B (zh) | 一种基于代码相似性的模糊测试方法、装置及存储介质 | |
CN112733150A (zh) | 一种基于脆弱性分析的固件未知漏洞检测方法 | |
US20230050691A1 (en) | System for detecting malicious programmable logic controller code | |
Garg et al. | Learning from what we know: How to perform vulnerability prediction using noisy historical data | |
Ognawala et al. | Automatically assessing vulnerabilities discovered by compositional analysis | |
Dewey et al. | Uncovering use-after-free conditions in compiled code | |
Li et al. | Automated source code instrumentation for verifying potential vulnerabilities | |
US20230141948A1 (en) | Analysis and Testing of Embedded Code | |
Han et al. | An optimized static propositional function model to detect software vulnerability | |
Khan et al. | Detecting wake lock leaks in android apps using machine learning | |
CN114996111A (zh) | 一种配置项对软件系统性能影响的分析方法及系统 | |
Xiaomeng et al. | A survey on source code review using machine learning | |
Melnik et al. | Enforcing secure coding rules for the C programming language using the eclipse development environment | |
Gao et al. | Automatic buffer overflow warning validation | |
CN113392016A (zh) | 对程序异常情况处理的规约生成方法、装置、设备及介质 | |
Kim et al. | Source code analysis for static prediction of dynamic memory usage | |
Harzevili et al. | Automatic Static Vulnerability Detection for Machine Learning Libraries: Are We There Yet? |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210326 |
|
WW01 | Invention patent application withdrawn after publication |