CN115795489A - 一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置 - Google Patents

一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置 Download PDF

Info

Publication number
CN115795489A
CN115795489A CN202310086897.3A CN202310086897A CN115795489A CN 115795489 A CN115795489 A CN 115795489A CN 202310086897 A CN202310086897 A CN 202310086897A CN 115795489 A CN115795489 A CN 115795489A
Authority
CN
China
Prior art keywords
analysis
software
tracking
static
information
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
Application number
CN202310086897.3A
Other languages
English (en)
Other versions
CN115795489B (zh
Inventor
毛得明
孙治
张玲
饶志宏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETC 30 Research Institute
Original Assignee
CETC 30 Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by CETC 30 Research Institute filed Critical CETC 30 Research Institute
Priority to CN202310086897.3A priority Critical patent/CN115795489B/zh
Publication of CN115795489A publication Critical patent/CN115795489A/zh
Application granted granted Critical
Publication of CN115795489B publication Critical patent/CN115795489B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置,所述方法包括:使用动态分析工具运行待分析软件,生成待分析软件编译后的二进制程序,并对所述二进制程序进行跟踪,获取跟踪数据;在跟踪数据中,提取二进制程序内存漏洞相关的动态分析敏感数据;对动态分析敏感数据,执行关于动态分析与静态分析的语义信息映射与融合;基于映射与融合后的静态分析信息,执行软件代码漏洞检测。本发明通过充分利用硬件级的进程跟踪技术完成了内存对象、指针对象、污点对象等敏感信息提取,基于动态和静态上下文的映射与融合实现了高精度的静态污点分析,能够大幅降低静态污点分析方法的误报率。

Description

一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置
技术领域
本发明涉及软件漏洞分析技术领域,尤其涉及到一种基于硬件级进程跟踪的软件漏洞静态分析方法、装置、设备及存储介质。
背景技术
随着信息技术的高速发展,软件系统的安全问题也变得更为重要。大型IT公司在软件系统漏洞发现和修补投入了大量的人力和财力,通常会在软件开发阶段就会对软件进行不间断的软件测试,以期望能够在系统上线前或者漏洞被发现利用前,能够提前发现并修补软件漏洞。然而,从发现漏洞到开发人员生成软件补丁的过程既繁琐又费力,导致了针对软件漏洞的安全攻击事件增长迅速,造成的经济和社会危害也越发严重。
软件漏洞挖掘方法主要分为了动态分析和静态分析方法两类。其中,模糊测试技术是一种经典的动态分析方法,它具有挖掘效率高、自动化程度高等优点,但是其依赖于程序崩溃来发现软件漏洞,且无法遍历所有的程序路径,使得模糊测试技术受到了限制;符号执行技术是一种经典的静态分析方法,它能够使用符号变量代替具体值作为程序或函数的参数,具有代价小、覆盖率高等优点,但缺点是程序路径状态空间的爆炸导致实用性较差;静态污点分析是另外一种静态分析方法,它将受外部源影响的一系列初始对象标记为污染源来引导分析,通常会在分析大型程序时,由于程序对象被错误地污染产生大量误报。
上述技术在漏洞挖掘分析过程中都表现出明显的差异性和互补性,近年来包含两种及以上的混合分析技术成为了工业界与学术界的关注热点。目前,典型的有符号执行辅助的模糊测试混合分析方法,通过符号执行提升模糊测试的覆盖率;静态分析引导的模糊测试混合分析方法,通过静态分析减少模糊测试的分析范围。然而,现有的以模糊测试为主的混合分析技术仍无法完全克服模糊测试技术的局限性。若能够降低静态分析的误报率和提升方法的精准度,那么静态分析将会有更为广阔的应用前景。
发明内容
本发明的主要目的在于提供一种基于硬件级进程跟踪的软件漏洞静态分析方法、装置、设备及存储介质,旨在解决目前针对软件代码漏洞静态分析效率低、误报率高的技术问题。
为实现上述目的,本发明提供一种基于硬件级进程跟踪的软件漏洞静态分析方法,所述方法包括以下步骤:
S1:使用动态分析工具运行待分析软件,生成待分析软件编译后的二进制程序,并对所述二进制程序进行跟踪,获取跟踪数据;
S2:在跟踪数据中,提取二进制程序内存漏洞相关的动态分析敏感数据;
S3:对动态分析敏感数据,执行关于动态分析与静态分析的语义信息映射与融合;
S4:基于映射与融合后的静态分析信息,执行软件代码漏洞检测。
可选的,所述步骤S1,具体包括:
S101:使用动态分析工具编译待分析软件,生成待分析软件编译后的二进制程序;
S102:使用模糊测试工具测试二进制程序,获取进程动态信息;
S103:使用进程跟踪工具,记录待分析软件的进程运行时的状态信息,以生成跟踪数据。
可选的,所述步骤S102中,还包括:设置预设终止时间,在测试时间满足预设终止时间时,发送程序终止信号,以确保程序能够自动终止。
可选的,所述步骤S103后,所述方法还包括:
S104:通过挂钩系统调用,在进程跟踪时记录内存页面,以过滤跟踪数据中的无效数据;
S105:通过记录并维护快速散列跟踪段,并将其与全局散列表映射进行比较,以过滤已经出现在全局映射中的重复数据。
可选的,所述动态分析敏感数据,具体包括:内存对象信息;其中,所述内存对象信息为:每个由指令
Figure SMS_1
分配或释放的内存对象
Figure SMS_2
维护三元组
Figure SMS_3
,其中
Figure SMS_4
是对象的大小,
Figure SMS_5
是其运行时地址,
Figure SMS_6
是调用上下文关系。
可选的,所述动态分析敏感数据,具体包括:指针对象信息;其中,所述指针对象信息包括:目的内存对象、目的内存对象的内存地址、目的内存对象的偏移量;源内存对象、源内存对象的内存地址、源内存对象的偏移量。
可选的,所述动态分析敏感数据,具体包括:污点对象信息;其中,所述污点对象信息包括:污染缓冲区的字节数。
可选的,所述步骤S3中,所述语义信息映射与融合,具体为:
S301:在静态分析时,采用与动态分析相同的ID编号和上下文关系,以实现对内存对象的重映射;
S302:根据污点处动态信息是否可用,执行调整静态污点分析策略步骤或仅使用静态信息完成分析步骤。
可选的,所述步骤S4,具体包括:
S401:针对每一种待分析的漏洞类型,定义对应的污点分析规则;
S402:调用静态污点分析框架进行数据流、上下文和敏感字段分析,收集所有被污点指令和内存对象;
S403:将收集的被污点指令和内存对象与动态分析的信息重映射与融合,根据污点分析规则,输出对应的漏洞检测结果。
此外,为了实现上述目的,本发明还提供了一种基于硬件级进程跟踪的软件漏洞静态分析装置,所述装置包括:
跟踪模块,用于使用动态分析工具运行待分析软件,生成待分析软件编译后的二进制程序,并对所述二进制程序进行跟踪,获取跟踪数据;
提取模块,用于在跟踪数据中,提取二进制程序内存漏洞相关的动态分析敏感数据;
映射模块,用于对动态分析敏感数据,执行关于动态分析与静态分析的语义信息映射与融合;
检测模块,用于基于映射与融合后的静态分析信息,执行软件代码漏洞检测。
此外,为了实现上述目的,本发明还提供了一种基于硬件级进程跟踪的软件漏洞静态分析设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于硬件级进程跟踪的软件漏洞静态分析程序,所述基于硬件级进程跟踪的软件漏洞静态分析程序被所述处理器执行时实现上述的基于硬件级进程跟踪的软件漏洞静态分析方法的步骤。
此外,为了实现上述目的,本发明还提供了一种存储介质,所述存储介质上存储有基于硬件级进程跟踪的软件漏洞静态分析程序,所述基于硬件级进程跟踪的软件漏洞静态分析程序被处理器执行时实现上述的基于硬件级进程跟踪的软件漏洞静态分析方法的步骤。
本发明的有益效果为:本发明实施例提出的一种基于硬件级进程跟踪的软件漏洞静态分析方法、装置、设备及存储介质,所述方法包括:使用动态分析工具运行待分析软件,生成待分析软件编译后的二进制程序,并对所述二进制程序进行跟踪,获取跟踪数据;在跟踪数据中,提取二进制程序内存漏洞相关的动态分析敏感数据;对动态分析敏感数据,执行关于动态分析与静态分析的语义信息映射与融合;基于映射与融合后的静态分析信息,执行软件代码漏洞检测。本发明通过充分利用硬件级的进程跟踪技术完成了内存对象、指针对象、污点对象等敏感信息提取,基于动态和静态上下文的映射与融合实现了高精度的静态污点分析,能够大幅降低静态污点分析方法的误报率。
附图说明
图1为本发明中实施例方案涉及的硬件运行环境的装置结构示意图;
图2为本发明中基于硬件级进程跟踪的软件漏洞静态分析方法实施例的流程示意图;
图3为本发明中基于硬件级进程跟踪的软件漏洞静态分析方法的原理步骤示意图;
图4为本发明中进程的关键区域跟踪的原理步骤示意图;
图5为本发明中代码污点静态分析的原理步骤示意图;
图6为本发明中一种基于硬件级进程跟踪的软件漏洞静态分析装置的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的装置结构示意图。
如图1所示,该装置可以包括:处理器1001,例如CPU,通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选的用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的装置的结构并不构成对装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于硬件级进程跟踪的软件漏洞静态分析程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的基于硬件级进程跟踪的软件漏洞静态分析程序,并执行以下操作:
使用动态分析工具运行待分析软件,生成待分析软件编译后的二进制程序,并对所述二进制程序进行跟踪,获取跟踪数据;
在跟踪数据中,提取二进制程序内存漏洞相关的动态分析敏感数据;
对动态分析敏感数据,执行关于动态分析与静态分析的语义信息映射与融合;
基于映射与融合后的静态分析信息,执行软件代码漏洞检测。
本发明应用于装置的具体实施例与下述应用基于硬件级进程跟踪的软件漏洞静态分析方法的各实施例基本相同,在此不作赘述。
本发明实施例提供了一种基于硬件级进程跟踪的软件漏洞静态分析方法,参照图2,图2为本发明基于硬件级进程跟踪的软件漏洞静态分析方法实施例的流程示意图。
本实施例中,所述基于硬件级进程跟踪的软件漏洞静态分析方法包括以下步骤:
S1:使用动态分析工具运行待分析软件,生成待分析软件编译后的二进制程序,并对所述二进制程序进行跟踪,获取跟踪数据;
S2:在跟踪数据中,提取二进制程序内存漏洞相关的动态分析敏感数据;
S3:对动态分析敏感数据,执行关于动态分析与静态分析的语义信息映射与融合;
S4:基于映射与融合后的静态分析信息,执行软件代码漏洞检测。
具体而言,在实际应用中,针对软件源代码漏洞静态分析的目标是,面对规模化且逻辑复杂的实际工程项目能够高效地完成漏洞分析,较为精准地定位出代码中的漏洞代码位置。而基于静态分析技术的漏洞分析,需要解决的现实问题是大量的漏洞误报,提升分析结果的精确率,减少人工进一步核实检验的工作,为实现全自动的软件漏洞挖掘提供强有力的支持。
本实施例提出的方案基于硬件级进程跟踪的软件漏洞静态分析方法,充分利用硬件级的进程跟踪技术完成了内存对象、指针对象、污点对象等敏感信息提取,基于动态和静态上下文的映射与融合实现了高精度的静态污点分析,能够大幅降低静态污点分析方法的误报率。
如图3所示,主要分为四个步骤:一,进程的关键区域跟踪,使用动态分析工具运行待分析的软件,利用硬件级进程跟踪技术实时监视待分析软件;二,动态分析信息提取,通过关键指令和函数调用堆栈的跟踪,提取内存对象、指针对象、污点对象等敏感信息;三,语义的重映射与融合,由于提取敏感信息来自于程序运行时,因此需要消除动态分析上下文与静态分析上下文的语义差异,本方案采用了在程序编译中间语言打标记等技术手段来消除语义差异,完成动态分析与静态分析的语义信息映射与融合;四,代码污点静态分析,通过融合了动态分析与静态分析的数据流,完成显式污点传播分析中的赋值和函数调用等污点,实现上下文敏感、流敏感、域敏感、对象敏感的静态污点分析,并输出代码漏洞检测结果。
(一)对于进程的关键区域跟踪:
进程的关键区域跟踪是监控程序运行时的状态,采用的是英特尔在处理器内置的进程跟踪特性Intel Processor Trace(简称Intel PT技术),利用该技术只需要编写少量的代码即可实现高效的获取动态分析所需的敏感信息。 Intel PT技术在其第五代处理器(简称CPU)之后引入的一个硬件部件,CPU开始记录分支指令信息,所记录的信息以压缩数据包的形式存储在内存中。由于分支信息记录完全由硬件完成,这个开销对于大多数应用来讲基本上可以忽略不计。如图4所示,具体步骤如下:
(1)使用高版本的LLVM编译待分析的软件,生成待分析软件编译后的二进制程序。编译器版本通常选取LLVM7.0或者LLVM9.0,并在编译中间表示(简称IR)每一条指令都分配唯一的id编号。
(2)为了获取进程动态信息需要运行二进制程序,使用开源的模糊测试工具libfuzzer测试二进制程序。通过设置30秒的硬时间限制发送 SIGTERM 信号,以确保程序能够自动终止。
(3)使用Intel PT提供的libipt库编写控制流跟踪程序,跟踪在待分析程序的进程运行时状态包括时序和程序流信息,当CPU遇到任何分支指令(je, call, ret)时,都会记录该分支发生的情况并将其收集到操作系统提供的循环缓冲区中。
(4)过滤重复或者无效的数据包。由于PT技术跟踪产生的完整数据包有重复或者无效的数据,这会降低分析的效率。通过挂钩相关系统调用(例如,mmap、mprotect)并在 PT跟踪旁边记录内存页面来解决无效数据包;通过记录并维护快速散列跟踪段,并将它们与全局散列表映射进行比较,过滤掉那些已经出现在全局映射中的数据包。
(二)对于动态分析敏感信息提取:
动态分析敏感信息提取的目的是从上一步的跟踪数据中,进一步提取出程序内存漏洞相关的敏感数据。在程序执行期间分析软件内存型漏洞,动态分析所需的信息包括4部分,1)内存对象的分配和释放;2)对这些内存对象的读写访问;3)前面两部分中涉及指令的函数调用上下文;4)调用系统敏感API 的参数,例如write、read函数。从上述信息中可以计算出与内存对象对应的动态指针和污点信息。具体步骤如下:
(1)内存对象信息提取,为每个由指令
Figure SMS_8
分配或释放的内存对象
Figure SMS_12
维护三元组
Figure SMS_14
,其中
Figure SMS_9
是对象的大小,
Figure SMS_11
是其运行时地址,
Figure SMS_15
是调用上下文关系,而堆对象的大小是从传递给分配进程的参数中提取的,例如 malloc函数。然后,通过计算相同上下文
Figure SMS_16
和指令
Figure SMS_7
,可以将内存对象
Figure SMS_10
的所有访问实例上下文融合,计算其
Figure SMS_13
,作为该内存对象的唯一标识。
(2)指针对象信息提取,通过筛选跟踪程序对象的所有写操作,若内存写指令写入的目标内存对象为
Figure SMS_18
的内存地址
Figure SMS_20
,那么写入值的源对象
Figure SMS_22
的内存地址
Figure SMS_19
,那么目的内存对象
Figure SMS_21
的偏移量
Figure SMS_23
指向源内存对象
Figure SMS_24
的偏移量
Figure SMS_17
(3)污点对象信息提取,使用与静态污点分析相同的污点源(source)。由于程序运行时动态地污染了输入 API 函数读取的字节数,需要记录污染了缓冲区的字节计数,提供给后续静态污点分析。
(三)对于语义的重映射与融合:
语义的重映射与融合目的是消除动态分析上下文与静态分析上下文的语义差异,使得获取的程序运行时敏感信息能够应用到静态污点分析。由于动态分析需要在本机执行CPU 指令,其内存对象是在程序运行时的堆栈上创建,需要建立相应的映射关系来融合动态分析与静态分析数据。具体步骤如下:
(1)内存对象的重映射,在进程的关键区域跟踪步骤中,已经为每个IR 指令分配一个唯一的id编号,在静态分析过程中,通过使用与动态分析相同的id编号,并使用与动态上下文
Figure SMS_25
相同的静态上下文定义,那么在相同上下文中创建的同一个内存对象,静态和动态对象 id 的计算结果也相同。
(2)语义的融合,在进行污点分析时,首先判断在污点处动态信息是否可用,若动态信息不可用,那么仅使用静态信息完成分析;若动态信息可用,则调整该内存地址的约束条件,并修改此处的静态污点分析策略。另外,在静态污点传播时,假如动态信息在此处可用时且是内存写相关的API,还会赋予其更高的优先级,以确保静态污点分析的精准度。
(四)对于代码污点静态分析:
代码污点静态分析的目标是实现基于融合动态分析信息的静态污点分析,完成上下文敏感、流敏感、域敏感、对象敏感的静态污点分析,检测分析软件的内存型漏洞,可发现的漏洞类别包括:缓冲区溢出、内存越界、释放后使用、双重释放等,并输出软件代码漏洞检测结果。如图5所示,具体步骤如下:
(1)针对每一种待分析的漏洞类型,定义对应的污点分析规则,包括:缓冲区溢出、内存越界、释放后使用、双重释放,形成污点分析判定规则集。
(2)调用开源的静态污点分析框架例如DataFlowSanitizer对输入 API 系列(例如scanf、gets等)进行数据流、上下文和敏感字段分析,分析过程自动注入和传播污点,并收集所有被污点的指令和内存对象。
(3)另外程序的命令行参数也要作为污点源。参数的污点分析由底层指针将待分析函数参数化,在传播污点标签时,通过指针引用关系分析以获取指令的目标操作数的指针集合。
(4)将步骤(2)、(3)收集的被污点指令和内存对象,与动态分析的信息重映射与融合,根据步骤(1)定义的污点分析判定规则集,输出对应的漏洞检测结果。
本实施例中,提供了一种基于硬件级进程跟踪的软件漏洞静态分析方法,利用了硬件级的进程跟踪技术,实现了进程的关键区域的跟踪,以及内存对象、指针对象、污点对象等敏感信息提取,构建了动态和静态上下文的映射与融合机制。通过引入动态分析信息,能够大幅降低静态污点分析方法的误报率,减少人工进一步核实检验的工作,提升了漏洞分析的效率。相比现有方案主要具备以下有益效果和优点:采用基于硬件的进程跟踪技术,充分利用CPU硬件特性,快速地提取出指针分析和静态污点分析相关的敏感信息;构建了程序运行时数据映射到静态污点分析的映射与融合机制,实现动态分析的上下文与静态分析上下文互通;采用基于融合了动态分析的静态污点分析,融合了程序运行时的动态信息,提升漏洞检测的准确率。
参照图6,图6为本发明基于硬件级进程跟踪的软件漏洞静态分析装置实施例的结构框图。
本发明实施例提出的基于硬件级进程跟踪的软件漏洞静态分析装置包括:
跟踪模块10,用于使用动态分析工具运行待分析软件,生成待分析软件编译后的二进制程序,并对所述二进制程序进行跟踪,获取跟踪数据;
提取模块20,用于在跟踪数据中,提取二进制程序内存漏洞相关的动态分析敏感数据;
映射模块30,用于对动态分析敏感数据,执行关于动态分析与静态分析的语义信息映射与融合;
检测模块40,用于基于映射与融合后的静态分析信息,执行软件代码漏洞检测。
本申请基于硬件级进程跟踪的软件漏洞静态分析装置的具体实施方式与上述基于硬件级进程跟踪的软件漏洞静态分析方法各实施例基本相同,在此不再赘述。
此外,本发明还提出一种可读存储介质,所述可读存储介质包括计算机可读存储介质,其上存储有基于硬件级进程跟踪的软件漏洞静态分析程序。所述可读存储介质可以是图1的终端中的存储器1005,也可以是如ROM(Read-OnlyMemory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘中的至少一种,所述可读存储介质包括若干指令用以使得一台具有处理器的基于硬件级进程跟踪的软件漏洞静态分析设备执行本发明各个实施例所述的基于硬件级进程跟踪的软件漏洞静态分析方法。
本申请可读存储介质中基于硬件级进程跟踪的软件漏洞静态分析程序的具体实施方式与上述基于硬件级进程跟踪的软件漏洞静态分析方法各实施例基本相同,在此不再赘述。
可以理解的是,在本说明书的描述中,参考术语“一实施例”、“另一实施例”、“其他实施例”、或“第一实施例~第N实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种基于硬件级进程跟踪的软件漏洞静态分析方法,其特征在于,所述方法包括以下步骤:
S1:使用动态分析工具运行待分析软件,生成待分析软件编译后的二进制程序,并对所述二进制程序进行跟踪,获取跟踪数据;
S2:在跟踪数据中,提取二进制程序内存漏洞相关的动态分析敏感数据;
S3:对动态分析敏感数据,执行关于动态分析与静态分析的语义信息映射与融合;
S4:基于映射与融合后的静态分析信息,执行软件代码漏洞检测。
2.如权利要求1所述的基于硬件级进程跟踪的软件漏洞静态分析方法,其特征在于,所述步骤S1,具体包括:
S101:使用动态分析工具编译待分析软件,生成待分析软件编译后的二进制程序;
S102:使用模糊测试工具测试二进制程序,获取进程动态信息;
S103:使用进程跟踪工具,记录待分析软件的进程运行时的状态信息,以生成跟踪数据。
3.如权利要求2所述的基于硬件级进程跟踪的软件漏洞静态分析方法,其特征在于,所述步骤S102中,还包括:设置预设终止时间,在测试时间满足预设终止时间时,发送程序终止信号,以确保程序能够自动终止。
4.如权利要求2所述的基于硬件级进程跟踪的软件漏洞静态分析方法,其特征在于,所述步骤S103后,所述方法还包括:
S104:通过挂钩系统调用,在进程跟踪时记录内存页面,以过滤跟踪数据中的无效数据;
S105:通过记录并维护快速散列跟踪段,并将其与全局散列表映射进行比较,以过滤已经出现在全局映射中的重复数据。
5.如权利要求1所述的基于硬件级进程跟踪的软件漏洞静态分析方法,其特征在于,所述动态分析敏感数据,具体包括:内存对象信息;其中,所述内存对象信息为:每个由指令
Figure QLYQS_1
分配或释放的内存对象
Figure QLYQS_2
维护三元组
Figure QLYQS_3
,其中
Figure QLYQS_4
是对象的大小,
Figure QLYQS_5
是其运行时地址,
Figure QLYQS_6
是调用上下文关系。
6.如权利要求1所述的基于硬件级进程跟踪的软件漏洞静态分析方法,其特征在于,所述动态分析敏感数据,具体包括:指针对象信息;其中,所述指针对象信息包括:目的内存对象、目的内存对象的内存地址、目的内存对象的偏移量;源内存对象、源内存对象的内存地址、源内存对象的偏移量。
7.如权利要求1所述的基于硬件级进程跟踪的软件漏洞静态分析方法,其特征在于,所述动态分析敏感数据,具体包括:污点对象信息;其中,所述污点对象信息包括:污染缓冲区的字节数。
8.如权利要求1所述的基于硬件级进程跟踪的软件漏洞静态分析方法,其特征在于,所述步骤S3中,所述语义信息映射与融合,具体为:
S301:在静态分析时,采用与动态分析相同的ID编号和上下文关系,以实现对内存对象的重映射;
S302:根据污点处动态信息是否可用,执行调整静态污点分析策略步骤或仅使用静态信息完成分析步骤。
9.如权利要求1所述的基于硬件级进程跟踪的软件漏洞静态分析方法,其特征在于,所述步骤S4,具体包括:
S401:针对每一种待分析的漏洞类型,定义对应的污点分析规则;
S402:调用静态污点分析框架进行数据流、上下文和敏感字段分析,收集所有被污点指令和内存对象;
S403:将收集的被污点指令和内存对象与动态分析的信息重映射与融合,根据污点分析规则,输出对应的漏洞检测结果。
10.一种基于硬件级进程跟踪的软件漏洞静态分析装置,其特征在于,所述装置包括:
跟踪模块,用于使用动态分析工具运行待分析软件,生成待分析软件编译后的二进制程序,并对所述二进制程序进行跟踪,获取跟踪数据;
提取模块,用于在跟踪数据中,提取二进制程序内存漏洞相关的动态分析敏感数据;
映射模块,用于对动态分析敏感数据,执行关于动态分析与静态分析的语义信息映射与融合;
检测模块,用于基于映射与融合后的静态分析信息,执行软件代码漏洞检测。
CN202310086897.3A 2023-02-09 2023-02-09 一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置 Active CN115795489B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310086897.3A CN115795489B (zh) 2023-02-09 2023-02-09 一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310086897.3A CN115795489B (zh) 2023-02-09 2023-02-09 一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置

Publications (2)

Publication Number Publication Date
CN115795489A true CN115795489A (zh) 2023-03-14
CN115795489B CN115795489B (zh) 2023-05-09

Family

ID=85430611

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310086897.3A Active CN115795489B (zh) 2023-02-09 2023-02-09 一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置

Country Status (1)

Country Link
CN (1) CN115795489B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117235746A (zh) * 2023-11-15 2023-12-15 深圳海云安网络安全技术有限公司 一种基于多维ast融合检测的源代码安全管控平台

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1710866A (zh) * 2005-06-30 2005-12-21 西安交通大学 Linux环境下基于调用栈图的入侵检测方法
US20090282393A1 (en) * 2006-06-23 2009-11-12 Microsoft Corporation Securing Software By Enforcing Data Flow Integrity
CN109583200A (zh) * 2017-09-28 2019-04-05 中国科学院软件研究所 一种基于动态污点传播的程序异常分析方法
CN110708279A (zh) * 2019-08-19 2020-01-17 中国电子科技网络信息安全有限公司 一种基于群体智能的漏洞挖掘模型构建方法
EP3667531A1 (en) * 2018-12-11 2020-06-17 Koninklijke Philips N.V. A computing device with increased resistance against address probing
CN113268427A (zh) * 2021-06-15 2021-08-17 中国电子科技网络信息安全有限公司 一种针对二进制程序的崩溃分析方法及系统
CN113569244A (zh) * 2021-09-18 2021-10-29 成都数默科技有限公司 一种基于处理器跟踪的内存恶意代码检测方法
CN114462044A (zh) * 2021-12-30 2022-05-10 中国科学院信息工程研究所 一种基于污点分析的uefi固件漏洞静态检测方法及装置
CN115033895A (zh) * 2022-08-12 2022-09-09 中国电子科技集团公司第三十研究所 一种二进制程序供应链安全检测方法及装置
CN115563627A (zh) * 2022-12-06 2023-01-03 中国电子科技集团公司第三十研究所 一种基于人机协同的二进制程序漏洞静态分析方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1710866A (zh) * 2005-06-30 2005-12-21 西安交通大学 Linux环境下基于调用栈图的入侵检测方法
US20090282393A1 (en) * 2006-06-23 2009-11-12 Microsoft Corporation Securing Software By Enforcing Data Flow Integrity
CN109583200A (zh) * 2017-09-28 2019-04-05 中国科学院软件研究所 一种基于动态污点传播的程序异常分析方法
EP3667531A1 (en) * 2018-12-11 2020-06-17 Koninklijke Philips N.V. A computing device with increased resistance against address probing
CN110708279A (zh) * 2019-08-19 2020-01-17 中国电子科技网络信息安全有限公司 一种基于群体智能的漏洞挖掘模型构建方法
CN113268427A (zh) * 2021-06-15 2021-08-17 中国电子科技网络信息安全有限公司 一种针对二进制程序的崩溃分析方法及系统
CN113569244A (zh) * 2021-09-18 2021-10-29 成都数默科技有限公司 一种基于处理器跟踪的内存恶意代码检测方法
CN114462044A (zh) * 2021-12-30 2022-05-10 中国科学院信息工程研究所 一种基于污点分析的uefi固件漏洞静态检测方法及装置
CN115033895A (zh) * 2022-08-12 2022-09-09 中国电子科技集团公司第三十研究所 一种二进制程序供应链安全检测方法及装置
CN115563627A (zh) * 2022-12-06 2023-01-03 中国电子科技集团公司第三十研究所 一种基于人机协同的二进制程序漏洞静态分析方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
JUNWEI TANG;RUIXUAN LI;KAIPENG WANG;XIWU GU;ZHIYONG XU;: "A Novel Hybrid Method to Analyze Security Vulnerabilities in Android Applications" *
傅涛;孙文静;: "一种基于静、动态分析相结合的漏洞挖掘分析方法" *
张玲 等: "基于多空间显著特征的目标跟踪算法" *
王福维: "面向动态污点分析技术的二进制程序分析与漏洞挖掘研究" *
饶志宏 等: "软件与系统漏洞分析与发现技术研究构想和成果展望" *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117235746A (zh) * 2023-11-15 2023-12-15 深圳海云安网络安全技术有限公司 一种基于多维ast融合检测的源代码安全管控平台
CN117235746B (zh) * 2023-11-15 2024-03-01 深圳海云安网络安全技术有限公司 一种基于多维ast融合检测的源代码安全管控平台

Also Published As

Publication number Publication date
CN115795489B (zh) 2023-05-09

Similar Documents

Publication Publication Date Title
CN109583200B (zh) 一种基于动态污点传播的程序异常分析方法
US9274923B2 (en) System and method for stack crawl testing and caching
US8352921B2 (en) Static analysis defect detection in the presence of virtual function calls
CN113497809B (zh) 基于控制流和数据流分析的mips架构漏洞挖掘方法
US20060277371A1 (en) System and method to instrument references to shared memory
CN112100072A (zh) 应用程序代码的静态检测方法、装置、设备及介质
CN111832026B (zh) 一种漏洞利用定位方法、系统、装置及介质
CN101853200A (zh) 一种高效动态软件漏洞挖掘方法
US11580228B2 (en) Coverage of web application analysis
CN112560043A (zh) 一种基于上下文语义的漏洞相似性度量方法
CN115795489B (zh) 一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置
CN112925524A (zh) 一种检测驱动程序中不安全直接存储器访问的方法及装置
US7624304B2 (en) Defect detection for integers
Seo et al. A profiling method by PCB hooking and its application for memory fault detection in embedded system operational test
Peng et al. {GLeeFuzz}: Fuzzing {WebGL} Through Error Message Guided Mutation
CN104750602B (zh) 一种动态污点数据分析方法及装置
CN111240728A (zh) 应用程序更新方法、装置、设备和存储介质
CN115495745A (zh) 一种基于风险函数的工业软件源代码静态检测方法及系统
CN114741700A (zh) 基于符号化污点分析的公共组件库漏洞可利用性分析方法及装置
Pomorova et al. Assessment of the source code static analysis effectiveness for security requirements implementation into software developing process
CN114443418A (zh) 一种基于硬件虚拟化的riscv内存溢出漏洞检测方法及装置
US11449317B2 (en) Detection of semantic equivalence of program source codes
CN116340081A (zh) 一种基于硬件虚拟化的riscv内存访问违例检测方法及装置
CN112015658A (zh) 一种用于软件集成测试用例的生成方法及装置
CN111143851A (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