CN113626820B - 针对网络设备的已知漏洞定位方法及装置 - Google Patents
针对网络设备的已知漏洞定位方法及装置 Download PDFInfo
- Publication number
- CN113626820B CN113626820B CN202110709613.2A CN202110709613A CN113626820B CN 113626820 B CN113626820 B CN 113626820B CN 202110709613 A CN202110709613 A CN 202110709613A CN 113626820 B CN113626820 B CN 113626820B
- Authority
- CN
- China
- Prior art keywords
- function
- patch
- vulnerability
- module
- functions
- 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.)
- Active
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
-
- 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
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开一种针对网络设备的已知漏洞定位方法及装置,通过模块级的粗粒度定位和函数级的细粒度识别两个阶段对已知漏洞进行定位,最后根据对差异函数的筛选,并按照确定程度自高而低排序,识别安全修补代码。本发明服务于漏洞定位,有效提高定位的精度,提高了补丁对比的效率,避免了后续安全修补的误报,且可对现有补丁分析框架的漏报误报问题进行修正。
Description
技术领域
本发明涉及已知漏洞的补丁对比技术,主要涉及一种针对网络设备的已知漏洞定位方法及装置,针对网络设备中单体式可执行文件的已知漏洞进行定位,在基于模块划分和局部性的二进制比对技术之上,利用语义相似度衡量方法对比对结果进行筛选排序,提高网络设备的补丁分析效率,并且支持研究人员发现更多已知漏洞细节。
背景技术
补丁对比技术作为一种漏洞挖掘的辅助技术,通过比较分析原始程序与漏洞修复后的更新程序的差异,可以利用有限的漏洞报告描述和补丁程序对已知漏洞进行准确定位,以进一步发掘潜在的漏洞。通常补丁发布与用户部署修补之间存在较长的时间窗口,因此,可以通过补丁对比辅助漏洞挖掘迅速提取漏洞特征,定位漏洞函数,旨在挖掘类似潜在漏洞,这对于网络设备的运行安全检测和防护具有重要意义。目前常见的补丁对比工具有Diaphora和Bindiff等。
补丁对比常用的方法是基于二进制相似度的检测,常见的二进制相似度检测方法有基于静态方法的相似度检测、基于动态方法的相似度检测和基于机器学习方法的相似度检测等。其中,基于静态方法的相似度检测技术,通常将二进制代码转化为图,然后进行比较。如以图形同构理论为基础的Bindiff,但图同构算法耗时较长,缺乏多项式时间解,同时很容易受到细微控制流图(Control Flow Graph,CFG)变化的影响,因此具有较低的准确性。基于动态方法的相似度检测,通常使用相同的输入执行两个二进制文件的函数,通过比较执行结果进而衡量两个函数的相似程度,比较有代表性的如Blanket。动态方法擅长于提取代码的语义,并且对编译器优化和代码混淆具有良好的包容性,但是由于动态分析的性质,这些技术通常具有较差的可扩展性和不完整的代码覆盖。
现阶段对大型网络设备固件的补丁比对研究相对较少,网络设备作为封闭、复杂的信息系统,其漏洞的公开研究资料相对较少、漏洞细节缺失较多,大大增加了网络设备漏洞挖掘的难度。网络设备的封闭性和定制化程度高,使得单个可执行文件更大,因此使用普通的补丁对比工具得到需要待确认的差异函数更多,误报的可能性更高,导致漏洞定位效率和准确率问题更加严重。因此如果直接将目前研究的补丁比对方法应用于网络设备的已知漏洞定位,会存在2个主要的问题:
(1)基于补丁比对方法进行漏洞定位存在误报,即对比结果中包含大量非安全修补,由于固有的待确认差异多、筛选自动化程度低,实际工作中需要花费大量人力对结果一一确认。
(2)基于补丁比对方法进行漏洞定位存在漏报,如在没有调试符号的情况下,比对启发式算法可能将两个不相关的函数错误的匹配,导致正确的安全修补缺失。
网络设备自身的复杂性导致简单地进行指令对比难以快速逆向恢复漏洞细节并理解漏洞机理,因此使用现有的补丁对比工具对网络设备进行已知漏洞定位会很容易产生大量的漏报和误报情况,阻碍了研究人员的漏洞分析挖掘进程,给网络设备的安全性带来了隐患。
发明内容
为了克服现有的补丁对比方法应用于网络设备已知漏洞定位的困难,本发明提供一种针对网络设备的已知漏洞定位方法MDiff(MonolithDiff)及装置,通过模块级的粗粒度定位和函数级的细粒度识别两个阶段对已知漏洞进行定位,最后根据对差异函数的筛选,并按照确定程度自高而低排序,识别安全修补代码。
本发明的技术方案包括:
一种针对网络设备的已知漏洞定位方法,其步骤包括:
1)在修补前的具有主要功能的可执行文件中,识别具有永不返回且存在多个循环结构的函数,得到函数集合A,并根据函数集合A中各函数的交叉引用关系,找到调用进程创建函数的函数作为相应网络服务模块的入口函数,得到入口函数集合B;
2)根据函数引用和数据引用关系,获取各入口函数后续调用的函数,得到相应网络服务模块的初始模块函数集合C,并依据入口函数位置关系,将各入口函数周围的局部函数纳入相应的初始模块函数集合C,然后将各个模块中的公共调用函数删除,最后得到若干模块函数集合D;
3)基于已披露的漏洞信息,对各模块函数集合D进行筛选,得到目标函数集合E;
4)获取修复后的设备程序,分别生成修补前程序与修补后的补丁程序的控制流图,并对比修补前的控制流图,在补丁程序的控制流图中删除无变化的基本块,且修复前驱后继关系,生成补丁文件相应的新控制流图;
5)利用目标函数集合E,生成补丁程序修补前后的差异函数对,并结合相应的新控制流图,经过模拟执行后进行计算和比较,在所有函数对中选取语义相似度较高的函数对为安全修补;
6)通过度量筛选后函数的代码复杂度和脆弱性,对函数进行安全性排序,完成细粒度的漏洞定位。
进一步地,主要功能包括:网络协议服务代码或公共运行支撑代码。
进一步地,已披露的漏洞信息包括:漏洞受影响版本、漏洞类型和漏洞存在的模块。
进一步地,通过以下步骤得到目标函数集合E:
1)将已披露的漏洞信息作为漏洞标签;
2)将每一个入口函数的进程名称字符串与漏洞标签进行对比,并将对比一致的模块函数集合D作为目标函数集合E。
进一步地,在生成修补前程序与修补后的补丁程序的控制流图之前,分别将修补前与各修补后的所述可执行文件的原始代码,译为统一的中间表示;中间表示的类型包括:reg类型、imm类型或mem类型。
进一步地,在生成补丁文件相应的新控制流图之前,通过在各补丁文件修补后的控制流图中,检查是否存在调用特定的检查基本块与基本块的变化数量,剔除因引入新安全机制而导致的补丁函数对。
进一步地,通过以下步骤选取语义相似度较高的函数对:
1)根据新控制流图中各基本块的出入度,得到开始节点集合及结尾节点集合;
2)计算各开始节点与各结尾节点之间的所有执行路径;
3)将所述函数对分别输入各执行路径,得到最小语义相似度值;
4)将最小语义相似度值与一设定阈值对比,判断相应补丁文件是否为语义相似度较高的补丁文件,并适应性地加入语义相似度较高的补丁函数对。
进一步地,通过以下步骤对补丁文件集合中补丁文件进行安全性排序:
1)利用函数圈复杂度大小C1及函数循环结构数量C2,对补丁文件集合中补丁文件分箱;
2)利用脆弱性度量及是否调用敏感函数,对每个分箱中的补丁文件排序;
3)根据分箱结果及排序结果,对补丁文件集合中补丁文件进行安全性排序。
一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一所述方法。
一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一所述方法。
本发明采用以上技术方案与现有技术相比,具有以下优点:
(1)本发明针对网络设备单体式可执行文件的两阶段漏洞定位方法,通过模块级和函数级逐级定位的方式,该方法能有效提高定位的精度;
(2)本发明基于服务启动模式的模块识别技术和动静态语义结合的修补函数识别及排序技术,服务于漏洞定位;
(3)本发明对设备补丁进行预处理的操作,可以很好地避免出现因不同编译环境而导致基本块分裂、基本块合并、指令重排、指令替换等现象,避免了后续安全修补的误报;
(4)本发明大大降低了针对单体式可执行文件补丁对比的工作量,提高了补丁对比的效率;
(5)本发明使用的基于扩展局部轨迹的安全修补筛选和基于代码度量的安全修补排序方法,在一定程度上可以对现有补丁分析框架的漏报误报问题进行修正;
(6)本发明实现了一个原型系统MDiff,通过对15个真实已知漏洞的定位实验表明,本发明在定位效率和准确率方面都优于当前先进对比工具Bindiff和Diaphora。
附图说明
图1是MDiff工具的整体流程图。
图2是模块函数识别流程图。
图3是模块的入口函数特征示例图。
图4是模块代码识别过程示意图。
图5是扩展局部轨迹模拟执行的流程图。
具体实施方式
为使本发明的技术方案能更明显易懂,特举实施例并结合附图,对本发明实施例中的技术方案进行清楚、完整地描述。
网络设备通常把网络协议服务代码与公共运行支撑代码等主要功能一起封装到一个可执行文件中,本发明将其称为单体式可执行文件。其中网络协议服务通常包括SNMP、HTTP、IKE、OSPF、BGP等,这些单体式可执行文件中均涵盖了所有管理平面、控制平面、数据平面内容。单体式可执行文件是部分大型网络设备的主要网络协议的二进制文件,使用二进制补丁比对技术对其进行漏洞定位是一种分析漏洞详细信息的重要辅助手段,通过对已知漏洞进行定位可以及时获取更多漏洞的详细信息,这对于进一步分析和发掘网络设备的潜在安全问题有重大意义。
本发明方法主要面向网络设备的单体式可执行文件,实现了针对单体式可执行文件的两阶段漏洞定位方法MDiff,首先通过漏洞模块的CVE描述信息和目标模块的入口函数的识别,从而对单体式可执行文件进行粗粒度的模块级定位,然后针对目标模块中存在差异的函数进行动静态结合的语义信息分析,最后筛选定位漏洞函数。
实现对单体式可执行文件的已知漏洞对比需要解决以下几个关键问题:
关键问题1:如何对单体式可执行文件进行模块划分
由于网络设备的封闭性和定制化程度高,使得单个可执行文件非常大,有的单体可执行文件大小达到了305M,其中的函数个数就达到了381219,若通过Bindiff等工具进行补丁比对,会产生多达8429个差异位置。同时,待比对函数越多,非线性的启发式算法对比效率越低,甚至无法完成比对。在不影响补丁对比效果的前提下提升补丁对比效率是首要问题,我们依据网络设备的单体式可执行文件的特点,提出了一种基于网络协议服务启动模式进行模块识别方法,然后再对特定模块的函数进行补丁对比可以大大提升对比效率。由于进程的入口函数大致分为两种:一种是部分网络协议服务以守护进程模式运行,在后台持续监听数据包消息队列;第二种是以进程形式存在的网络协议服务具有固定的启动模式,比如通过调用类似process_create进程创建函数等。针对这两个特点,我们可以先通过识别永不返回且存在多个循环结构的函数,如图3中的daemon函数,然后我们根据该类函数的交叉引用找到如图3中的process_create函数,并将该调用process_create进程创建的函数作为潜在模块的入口函数,然后将这些模块的入口函数后续调用的所有函数都视为该模块的函数,最后我们基于已披露的漏洞信息,包括漏洞受影响版本、漏洞类型和漏洞存在的模块,即CVE描述,通过结合已知漏洞的CVE描述,我们将待分析的补丁对限定在单个特定模块代码中。
关键问题2:如何对现有补丁分析框架的漏报误报问题进行修正
根据当前典型的函数级别安全修补识别方法是Xu Z等人提出的Spain,该方法主要基于安全修补对程序语义影响较小的假设来识别安全修补。通过模拟执行函数修补前和修补后的差异基本块,并比较执行状态的差异程度,最后比较修补前后函数的相似度对漏洞函数进行筛选识别。而该补丁分析框架存在如下问题:1)该方法仅识别连续差异基本块,对于不连续的语义相近的差异基本块可能误报为非安全修补;2)该方法未考虑基本块删减类的修补方式,从而存在安全修补漏报;3)Spain所采用的基于符号公式的模拟执行方法,效率存在不足。针对问题一和问题二,本发明中我们引入扩展局部轨迹的概念,通过删除修补前后无变化基本块,并修复其前驱后继关系联结剩余的连续差异基本块集合,得到新的CFG,根据新的出入度得到扩展后的局部轨迹,然后对所有执行路径,即扩展局部轨迹,使用这些轨迹进行模拟执行,得到修补前与修补后函数的语义相似度。该方法可以有效应对问题二所述的删减基本块的修复方式,同时该方法也可以识别不连续的差异基本块,从而达到减少误报和漏报的修正目的。
本实施例公开一种针对网络设备的已知漏洞定位方法及装置。本装置的具体模块组成如图1所示,主要分为模块级的粗粒度定位和函数级的细粒度识别两个阶段,即针对网络设备此特点,本发明先对不同的网络模块进行粗粒度定位,然后再针对已识别出的、存在漏洞的网络协议服务代码模块,对于其中存在差异的函数进行动静态结合的语义信息分析,即基于动静态语义的细粒度定位。本方法的具体实施如下五个步骤,具体描述如下:
步骤1:利用网络协议服务的特点对单体式可执行文件中的模块进程的入口函数进行识别,并基于局部性模块识别代码进行模块函数补充。
本步骤属于基于模块识别的粗粒度漏洞定位阶段的第一部分操作,该步骤的目的为对单体式可执行文件进行模块划分。根据关键问题的分析,如图2模块识别流程图所示,首先识别具有永不返回且存在多个循环结构的函数,例如图3中的daemon函数,然后根据daemon函数的交叉引用找到调用了进程创建函数的函数作为某个网络服务模块的入口函数,然后根据调用图分析函数引用和数据引用关系,将该模块的入口函数后续调用的所有函数视为该进程特定模块的初始模块函数集合,然后基于局部性模块识别代码对每一个模块函数集合进行函数补充,如图4中粗实线的WEBVPN1为一个webvpn模块的入口函数,根据该模块的入口函数位置关系,将入口函数周围的局部函数也纳入初始模块函数集合,如图4中所示,将包含在DHCP、CMP网络协议的入口函数间,即灰色区域内的函数纳入webvpn初始模块函数集合。同理,继续提取webvpn的其余相关入口函数的模块函数集合,如WEBVPN2。最后,通过上述方法提取所有模块的入口函数相关的模块函数,并进一步计算并删除公共调用函数,最后得到各个模块的函数集合。
步骤2:利用CVE的漏洞模块描述信息对步骤一中得到的各个模块进行筛选,选出特定的漏洞模块;
本步骤属于基于模块识别的粗粒度漏洞定位阶段的第二部分操作,该步骤目的为从步骤一中得到的模块集合中挑选出特定的模块,以完成第一部分的模块级别的粗粒度漏洞定位。本方法主要通过提取CVE漏洞模块的描述信息中的关键信息作为漏洞标签,然后将每一个入口函数的进程名称字符串与漏洞标签进行对比,最后选出目标模块即为筛选出目标模块函数集合。
步骤3:对漏洞版本(修补前)和打补丁后(修补后)的单体式可执行文件进行预处理,使用反编译方法将原始代码翻译到统一的中间表示,识别并剔除因添加canary安全机制的安全修补。
本步骤属于基于动静态语义的细粒度定位方法阶段的第一部分操作,该步骤的目的为利用在中间表示代码中进行二进制比对,降低因为编译优化造成的代码差异,并将仅由canary校验带来变化的补丁对筛除。由于修补前和修补后编译优化选项及安全选项的不同会导致编译出不同的二进制代码,这种语法级的变化可能造成安全修补误报。本方法使用反编译方法将原始代码翻译到统一的中间表示,并基于中间表示进行比较,识别部分仅由编译优化造成的代码差异。因为经过反编译优化的函数,会存在内存偏移不同、特殊情况下使用的寄存器名不同等问题,因此这里引入了标准化过程,将中间表示中的操作数规范化为reg、imm或mem类型。例如,r1=INT_ADD R1,16:4规范化后为reg=INT_ADD reg,imm。对于修补后版本引入新的安全机制(如canary、CFI、PAC等)的问题,本方法通过检查是否存在调用特定的检查基本块,以及基本块的变化数量两个因素,将仅由引入新安全机制带来变化的补丁对识别并剔除。
步骤4:通过扩展局部轨迹增加模拟执行的基本单元,并根据模拟执行得到的语义对特定模块函数进行函数级别的漏洞函数定位。
本步骤属于基于动静态语义的细粒度定位方法阶段的第二部分操作,该步骤的目的为基于拓展局部轨迹增加模拟执行的基本单元,降低误报率和漏报率。本发明主要是提出了一种基于扩展局部轨迹的安全修补筛选方法,其中局部轨迹是指给定一个函数的控制流图中有限的节点序列,具体流程如图5所示,首先迭代删减无变化的基本块,并修复前驱后继关系得到新的CFG图;根据出入度得到开始和结尾节点集合,并计算始末节点之间的所有执行路径,即得到扩展局部轨迹;最后利用步骤2得到的目标模块函数集合,生成修补前后的函数对,其中该函数对是使用IDA的diaphora插件hook得到。本发明使用基于Ghidra仿真的模拟执行方法提高了Spain的效率不足问题,在模拟执行过程中,选取多组寄存器内存状态初值,将两个函数的多组执行路径(扩展局部轨迹)经过模拟执行后进行计算和比较,语义相似度最高的值即这个函数对的语义相似度,任一输入计算出的语义相似度大于阈值,即最大值大于阈值的补丁对都被视为安全修补,以降低安全修补漏报的概率。循环使用相同的初始值对所有执行路径进行模拟执行,得到执行后的寄存器及内存值作为该路径的语义摘要,然后计算两组语义摘要的相似度,以两者最高的执行路径语义相似度作为两个函数的语义相似度。最后根据阈值筛除相似度低的功能性修补,保留语义相似度高的为安全修补。
步骤5:通过度量函数代码复杂度和函数的脆弱性,将更可能是安全修补的函数排序在前,完成细粒度的漏洞定位。
本步骤属于基于动静态语义的细粒度定位方法阶段的第三部分操作,该步骤的目的为对潜在安全修补结果进行进一步的排序,便于安全人员对漏洞函数进行人工确认。经研究表明,一个函数如果脆弱性程度高,那么针对该函数的修补就更可能是一个安全修补。本方法首先利用复杂性度量,即函数圈复杂度大小C1和函数循环结构数量C2将目标补丁进行分箱,以避免遗漏复杂度低但潜在脆弱的函数对。接着利用脆弱性度量和是否调用敏感函数对每个分箱中的补丁对进行排序,如果修补前和修补后函数的控制结构V1越多或者存在调用敏感函数V2,或者函数圈复杂度增加更可能是加入了校验的脆弱性语义V3,那么这个补丁越可能是一个安全补丁。
表1静态语义衡量的维度
其中cyclo为圈复杂度大小,loops为循环结构数量,controls为控制结构数量。当待确认补丁对存在调用敏感函数的时候,敏感函数调用标志issec记为1,否则记为0,同理当函数圈复杂度增加的时候,函数复杂度增加标志isinc记为1,否则记为0。在实际测试中,我们对归一化结果保留了4位小数。k值代表复杂性权重,经过多次试验,在实际测试中设置为100。在计算出复杂性得分及脆弱性得分后,根据补丁对的复杂性得分Mc,可以将补丁对分组并得到若干复杂度得分的分箱,每个分箱内的补丁对的复杂性得分相同,同时每个分箱内的补丁对的按照脆弱性得分Mv由高到低排序。通过依次取各个复杂度分箱中top i层的补丁对,完成对整体目标的排序。
实验数据
本发明主要从测试时间、结果数量、结果准确性等方面来评估MDiff方法的性能。在实验中,选取了当前广泛使用的两个补丁分析工具BinDiff和Diaphora做对比,其中BinDiff为闭源工具,Diaphora是开源工具。
表2整体补丁比对效果对比
如表2所示(其中序号为已知漏洞的标识),在测试时间方面,我们提出的MDiff方法平均分析用时与所修改的基础工具Diaphora相当。而Diaphora和MDiff的测试用时是Bindiff的19倍,主要原因是Diaphora由Python语言编写,运行速度较慢。在具体的对比用时方面,由于限定了启发式算法可匹配的函数空间,MDiff在对比时间上与原工具Diaphora相比有微弱优势。在具体的粗粒度模块识别和细粒度模拟执行的用时方面,MDiff平均用时为1977秒,仅占整体用时的7%,说明模块拆分与细粒度识别的高效性。
在结果数量方面,借助多级的筛选排序机制,MDiff最终给出的平均结果数量为Bindiff和Diaphora的1%,最差的情况下能将结果数量降低到原本问题的4%以下。MDiff平均仅在31个差异中完成定位,最差的情况下仅在85个差异中完成定位,使得需要专家确认的函数量大幅度下降,增强漏洞定位的自动化程度。
在结果准确性方面,MDiff比Bindiff多准确定位1个漏洞,比Diaphora多准确定位3个漏洞,在大大降低研究人员工作量的同时,提升了漏洞定位的准确率。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,本发明的保护范围以权利要求所述为准。
Claims (8)
1.一种针对网络设备的已知漏洞定位方法,其步骤包括:
1)在修补前的具有主要功能的可执行文件中,识别具有永不返回且存在多个循环结构的函数,得到函数集合A,并根据函数集合A中各函数的交叉引用关系,找到调用进程创建函数的函数作为相应网络服务模块的入口函数,得到入口函数集合B;
2)根据函数引用和数据引用关系,获取各入口函数后续调用的函数,得到相应网络服务模块的初始模块函数集合C,并依据入口函数位置关系,将各入口函数周围的局部函数纳入相应的初始模块函数集合C,然后将各个模块中的公共调用函数删除,最后得到若干模块函数集合D;
3)基于已披露的漏洞信息,对各模块函数集合D进行筛选,得到目标函数集合E;
4)获取修复后的设备程序,分别生成修补前程序与修补后的补丁程序的控制流图,并对比修补前的控制流图,在补丁程序的控制流图中删除无变化的基本块,且修复前驱后继关系,生成补丁文件相应的新控制流图;
5)利用目标函数集合E,生成补丁程序修补前后的差异函数对,并结合相应的新控制流图,经过模拟执行后进行计算和比较,在所有函数对中选取语义相似度较高的函数对为安全修补;其中,所述在所有函数对中选取语义相似度较高的函数对为安全修补,包括:
根据新控制流图中各基本块的出入度,得到开始节点集合及结尾节点集合;
计算各开始节点与各结尾节点之间的所有执行路径;
将所述函数对分别输入各执行路径,得到最小语义相似度值;
将最小语义相似度值与一设定阈值对比,判断相应补丁文件是否为语义相似度较高的补丁文件,并适应性地加入语义相似度较高的补丁函数对;
6)通过度量筛选后函数的代码复杂度和脆弱性,对函数进行安全性排序,完成细粒度的漏洞定位;其中,所述通过度量筛选后函数的代码复杂度和脆弱性,对函数进行安全性排序,包括:
利用函数圈复杂度大小C1及函数循环结构数量C2,对补丁文件集合中补丁文件分箱;
利用脆弱性度量及是否调用敏感函数,对每个分箱中的补丁文件排序;
根据分箱结果及排序结果,对补丁文件集合中补丁文件进行安全性排序。
2.如权利要求1所述的方法,其特征在于,主要功能包括:网络协议服务代码或公共运行支撑代码。
3.如权利要求1所述的方法,其特征在于,已披露的漏洞信息包括:漏洞受影响版本、漏洞类型和漏洞存在的模块。
4.如权利要求1所述的方法,其特征在于,通过以下步骤得到目标函数集合E:
1)将已披露的漏洞信息作为漏洞标签;
2)将每一个入口函数的进程名称字符串与漏洞标签进行对比,并将对比一致的模块函数集合D作为目标函数集合E。
5.如权利要求1所述的方法,其特征在于,在生成修补前程序与修补后的补丁程序的控制流图之前,分别将修补前与各修补后的所述可执行文件的原始代码,译为统一的中间表示;中间表示的类型包括:reg类型、imm类型或mem类型。
6.如权利要求1所述的方法,其特征在于,在生成补丁文件相应的新控制流图之前,通过在各补丁文件修补后的控制流图中,检查是否存在调用特定的检查基本块与基本块的变化数量,剔除因引入新安全机制而导致的补丁函数对。
7.一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1-6中任一所述方法。
8.一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如权利要求1-6中任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110709613.2A CN113626820B (zh) | 2021-06-25 | 2021-06-25 | 针对网络设备的已知漏洞定位方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110709613.2A CN113626820B (zh) | 2021-06-25 | 2021-06-25 | 针对网络设备的已知漏洞定位方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113626820A CN113626820A (zh) | 2021-11-09 |
CN113626820B true CN113626820B (zh) | 2023-06-27 |
Family
ID=78378397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110709613.2A Active CN113626820B (zh) | 2021-06-25 | 2021-06-25 | 针对网络设备的已知漏洞定位方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113626820B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111310178A (zh) * | 2020-01-20 | 2020-06-19 | 武汉理工大学 | 跨平台场景下的固件漏洞检测方法及系统 |
CN111914260A (zh) * | 2020-06-22 | 2020-11-10 | 西安交通大学 | 一种基于函数差分的二进制程序漏洞检测方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106295348B (zh) * | 2015-05-29 | 2020-04-10 | 阿里巴巴集团控股有限公司 | 应用程序的漏洞检测方法及装置 |
CN104933362B (zh) * | 2015-06-15 | 2017-10-20 | 福州大学 | Android应用软件API误用类漏洞自动化检测方法 |
KR101732679B1 (ko) * | 2016-09-13 | 2017-05-04 | (주)이공감 | 사이버 보안 장치의 보안 자료 관리 방법 |
CN108268777B (zh) * | 2018-01-18 | 2020-06-30 | 中国人民大学 | 一种利用补丁信息进行未知漏洞发现的相似性检测方法 |
CN109241737B (zh) * | 2018-07-03 | 2021-07-13 | 中国科学院信息工程研究所 | 一种面向多种补丁模式的差异分支识别方法及系统 |
CN109460641B (zh) * | 2018-11-15 | 2021-06-08 | 成都网域复兴科技有限公司 | 一种针对二进制文件的漏洞定位发掘系统和方法 |
CN110147673B (zh) * | 2019-03-29 | 2021-08-31 | 中国科学院信息工程研究所 | 一种基于文本和源代码符号提取的漏洞位置标注方法和装置 |
-
2021
- 2021-06-25 CN CN202110709613.2A patent/CN113626820B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111310178A (zh) * | 2020-01-20 | 2020-06-19 | 武汉理工大学 | 跨平台场景下的固件漏洞检测方法及系统 |
CN111914260A (zh) * | 2020-06-22 | 2020-11-10 | 西安交通大学 | 一种基于函数差分的二进制程序漏洞检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113626820A (zh) | 2021-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Harer et al. | Automated software vulnerability detection with machine learning | |
Pham et al. | Detection of recurring software vulnerabilities | |
CN114077741B (zh) | 软件供应链安全检测方法和装置、电子设备及存储介质 | |
CN111177733B (zh) | 一种基于数据流分析的软件补丁检测方法及装置 | |
CN113821804B (zh) | 一种面向第三方组件及其安全风险的跨架构自动化检测方法与系统 | |
CN105550594A (zh) | 安卓应用文件的安全性检测方法 | |
CN109460641B (zh) | 一种针对二进制文件的漏洞定位发掘系统和方法 | |
Liao et al. | SmartDagger: a bytecode-based static analysis approach for detecting cross-contract vulnerability | |
CN112131120B (zh) | 一种源代码缺陷检测方法及装置 | |
CN111177731A (zh) | 一种基于人工神经网络的软件源代码漏洞检测方法 | |
CN109241737B (zh) | 一种面向多种补丁模式的差异分支识别方法及系统 | |
CN116305158A (zh) | 一种基于切片代码依赖图语义学习的漏洞识别方法 | |
Liu et al. | A smart contract vulnerability detection mechanism based on deep learning and expert rules | |
Pandey et al. | A framework for producing effective and efficient secure code through malware analysis | |
CN113626820B (zh) | 针对网络设备的已知漏洞定位方法及装置 | |
CN111722998B (zh) | 代码的质量控制方法、系统、设备及存储介质 | |
CN116932381A (zh) | 小程序安全风险自动化评估方法及相关设备 | |
Han et al. | An optimized static propositional function model to detect software vulnerability | |
CN116361806A (zh) | 基于多示例和注意力机制的智能合约分析方法及装置 | |
CN115408700A (zh) | 基于二进制程序模块化的开源组件检测方法 | |
CN115510449A (zh) | 源代码漏洞检测方法及装置 | |
Wang et al. | A semantic-based smart contract defect detection general platform | |
Liu | [Retracted] Software Vulnerability Mining Techniques Based on Data Fusion and Reverse Engineering | |
Edwards et al. | Identifying Security Vulnerabilities Early in the ECU Software Development Lifecycle | |
CN110321130A (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 |