CN115237748A - 基于反馈增量驱动的符号执行方法 - Google Patents

基于反馈增量驱动的符号执行方法 Download PDF

Info

Publication number
CN115237748A
CN115237748A CN202210623335.3A CN202210623335A CN115237748A CN 115237748 A CN115237748 A CN 115237748A CN 202210623335 A CN202210623335 A CN 202210623335A CN 115237748 A CN115237748 A CN 115237748A
Authority
CN
China
Prior art keywords
path
target program
incremental
execution
program code
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
CN202210623335.3A
Other languages
English (en)
Other versions
CN115237748B (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.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
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 Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN202210623335.3A priority Critical patent/CN115237748B/zh
Publication of CN115237748A publication Critical patent/CN115237748A/zh
Application granted granted Critical
Publication of CN115237748B publication Critical patent/CN115237748B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • 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

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供一种基于反馈增量驱动的符号执行方法,该方法包括:对更新前后的目标程序代码进行静态分析,确定更新后的目标程序代码的增量信息;其中,增量信息包括增量代码和依赖信息;对更新后的目标程序代码进行符号执行,并根据更新后的目标程序代码中各路径对应的执行信息和增量信息,获取增量代码的相关路径;根据相关路径对应的执行信息,对相关路径进行裁剪后生成测试用例;根据测试用例对更新后的目标程序代码进行漏洞检测,得到更新后的目标程序代码的漏洞检测结果。本发明可实现最大限度地裁剪掉冗余路径,有效减少漏洞检测的冗余时间开销的同时,可使得漏洞检测结果更加完备和准确。

Description

基于反馈增量驱动的符号执行方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于反馈增量驱动的符号执行方法。
背景技术
对于真实的产品级软件而言,在软件开发维护各个阶段,由于添加功能、性能优化、适应环境、缺陷修补和代码重构等原因,软件将会不停地被更新。但软件更新行为往往容易引入新的缺陷或错误,不仅新添加或修改的代码会潜藏缺陷,经过测试的原有代码也可能受新代码的影响而诱发复杂的深层错误,且因其代码未被改动而易被忽略。因而软件更新迭代而产生的漏洞往往在软件开发生命周期中非常常见,这类漏洞其特殊性在于产生原因与软件的更新息息相关,因此可以通过增量式的检测来更有针对性地挖掘此类型漏洞。
增量符号执行通过专注于分析程序演化过程中的变化引入的增量行为来解决符号执行的可伸缩性问题。
目前主流的增量符号执行技术主要基于静态分析或基于捕获精确动态信息来定位增量行为。其中,DiSE(Directed incremental symbolic execution,定向增量符号执行)是当前较为先进的基于静态分析技术的工具,该工具首先通过静态分析技术来定位受到代码变更影响的程序片段,并用这些信息来指导符号执行探索受到增量代码影响的路径。但是由于静态分析信息精确性较差,可能会探索实际上并没有受到代码影响的路径,造成冗余时间开销。
基于动态信息来定位增量行为的方法如影子符号执行,该方法通过在同一个符号执行实例中执行不同的版本来判断其是否表现出不同的程序行为。但是该方法假定增量版本的测试套件产生的测试输入能够覆盖到程序所有的增量行为,因此该方法的效率和性能严重取决于初始输入数据,可能存在难以触发到测试套件没有覆盖到的软件的缺陷,因此该方法无法准确检测出所有漏洞,完备性较差。
发明内容
本发明提供一种基于反馈增量驱动的符号执行方法,用以解决现有技术中的一些问题,比如静态分析信息精确性较差,可能会探索实际上并没有受到代码影响的路径,造成冗余时间开销,而基于动态信息来定位增量行为则完备性较差,实现在减少冗余时间开销的同时,提高漏洞检测的完备性。
本发明提供一种基于反馈增量驱动的符号执行方法,包括:
对更新前后的目标程序代码进行静态分析,确定更新后的目标程序代码的增量信息;其中,所述增量信息包括增量代码和依赖信息;
对所述更新后的目标程序代码进行符号执行,并根据所述更新后的目标程序代码中各路径对应的执行信息和所述增量信息,获取所述增量代码的相关路径;
根据所述相关路径对应的执行信息,对所述相关路径进行裁剪后生成测试用例;
根据所述测试用例对所述更新后的目标程序代码进行漏洞检测,得到所述更新后的目标程序代码的漏洞检测结果。
根据本发明提供的一种基于反馈增量驱动的符号执行方法,所述对所述更新后的目标程序代码进行符号执行,并根据所述更新后的目标程序代码中各路径对应的执行信息和所述增量信息,获取所述增量代码的相关路径,包括:
采用符号执行遍历执行所述更新后的目标程序代码中的每条路径,并对每条路径进行域敏感数据流分析,得到所述更新后的目标程序代码中每条路径对应的执行信息;
根据所述更新后的目标程序代码中每条路径对应的执行信息和所述增量信息,获取所述更新后的目标程序代码中每条路径中与所述增量代码相关的变量;
将所述更新后的目标程序代码中,存在与所述增量代码相关的变量的路径,作为所述增量代码的相关路径。
根据本发明提供的一种基于反馈增量驱动的符号执行方法,所述相关路径中各路径的各控制节点,和所述相关路径中各路径中的与所述增量代码相关的变量,以键值表的形式进行存储。
根据本发明提供的一种基于反馈增量驱动的符号执行方法,所述执行信息中包含所述键值表、检测状态和分支谓词的覆盖情况中的一种或多种组合。
根据本发明提供的一种基于反馈增量驱动的符号执行方法,所述执行信息中包含所述键值表;
根据所述相关路径对应的执行信息,对所述相关路径进行裁剪,包括:
根据所述键值表,获取所述相关路径中未对所述目标程序的增量行为产生影响的路径;
对所述相关路径中未对所述目标程序代码的增量行为产生影响的路径进行裁剪。
根据本发明提供的一种基于反馈增量驱动的符号执行方法,所述执行信息中包含检测状态;
根据所述相关路径对应的执行信息,对所述相关路径进行裁剪,包括:
在所述相关路径中存在两个分支路径,且对两个分支路径中的任一分支路径检测完成的情况下,若判断获知另一分支路径触发的增量行为的检测状态为已检测的情况下,对所述另一分支路径进行裁剪。
根据本发明提供的一种基于反馈增量驱动的符号执行方法,所述执行信息中包含分支谓词的覆盖情况;
根据所述相关路径对应的执行信息,对所述相关路径进行裁剪,包括:
在所述相关路径中存在任一路径覆盖的分支谓词,与更新前的目标程序代码的任一路径覆盖的分支谓词存在交集的情况下,根据所述交集,对所述相关路径中的该路径的路径条件进行更新;
根据更新结果,对所述相关路径中的该路径的进行裁剪。
本发明还提供一种基于反馈增量驱动的符号执行装置,包括:
静态分析模块,用于对更新前后的目标程序代码进行静态分析,确定更新后的目标程序代码的增量信息;其中,所述增量信息包括增量代码和依赖信息;
动态执行模块,用于对所述更新后的目标程序代码进行符号执行,并根据所述更新后的目标程序代码中各路径对应的执行信息和所述增量信息,获取所述增量代码的相关路径;
裁剪模块,用于根据所述相关路径对应的执行信息,对所述相关路径进行裁剪后生成测试用例;
漏洞检测模块,用于根据所述测试用例对所述更新后的目标程序代码进行漏洞检测,得到所述更新后的目标程序代码的漏洞检测结果。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于反馈增量驱动的符号执行方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于反馈增量驱动的符号执行方法。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述基于反馈增量驱动的符号执行方法。
本发明提供的基于反馈增量驱动的符号执行方法,通过先基于静态分析,获取由于程序更新导致的增量信息;然后,基于符号执行,获取与增量信息中的增量代码相关的相关路径;然后,对相关路径进行后向路径总结,具体基于相关路径对应的执行信息,对未对目标程序代码的增量行为造成影响或重复的冗余的路径进行裁剪,以获取最大程度地保留覆盖目标程序代码的增量行为的最小化路径集合后,生成完备有效的测试用例,不仅使得漏洞检测结果更加完备和准确,而且可最大限度地裁剪掉冗余路径,有效减少漏洞检测的冗余时间开销。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的基于反馈增量驱动的符号执行方法的流程示意图之一;
图2是本发明提供的基于反馈增量驱动的符号执行方法中目标程序代码的分支谓词的覆盖情况的结构示意图;
图3是本发明提供的基于反馈增量驱动的符号执行方法的流程示意图之二;
图4是本发明提供的基于反馈增量驱动的符号执行装置的结构示意图;
图5是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了便于本领域技术人员理解,对本实施中出现的相关术语作简要介绍:
为了描述程序代码不同版本之间的差异,本实施例中针对程序代码的增量行为定义了几种特殊的符号,包括增量代码△,受到增量代码△影响的△-变量,△-事件和△-路径。
其中,△-变量指的是程序执行路径上数据依赖或控制依赖于增量代码△的变量;事件指的是一个实例或者指令的具体执行过程,△-事件指的是在实例执行过程中使用到的指令属于增量代码△,或者数据,或者控制依赖于△;△-路径指的是包含一个或者多个△-事件的路径。
例如,程序代码为:
Figure BDA0003675453650000061
Figure BDA0003675453650000071
在上述代码片段中第四行代码发生变更后我们可以将变量y定义为△-变量,第四行代码的执行即一个△-事件,同时程序执行路径1T2T(T表示选取分支条件为真)是一条△-路径。
现有的增量符号执行通过专注于分析程序演化过程中的变化引入的增量行为来解决符号执行的可伸缩性问题。符号执行技术自从提出已经经过了长足的发展,在软件测试和程序检查中具有出色的表现并且在学术界和工业界的应用日益增多,但是由于路径爆炸问题,将符号执行技术扩展到大型程序中仍然具有挑战性。
为了缓解路径爆炸的问题,一些研究人员提出了采用回归分析的方法,通过集中考虑程序及其演化之间的变化引入的增量行为来减少分析范围,从而避免对程序进行盲目分析。然而这些技术仍面临着难以高效而准确地探索程序增量行为的问题。
目前主流的增量符号执行技术主要分为静态分析或基于捕获精确动态信息来定位增量行为。但是,由于静态分析信息精确性较差,可能会探索实际上并没有受到代码影响的路径,造成冗余时间开销;而动态分析获取的增量行为的准确性,取决于编写的测试套件能否覆盖到程序所有的增量行为;一旦测试套件存在没有覆盖到的增量行为的问题,则无法准确检测出所有漏洞,完备性较差
因此,现有的增量行为检测中仍然面临着有效和精确地探索增量程序行为的挑战。
针对上述问题,本实施例提出一种基于反馈增量驱动的符号执行方法,该方法通过在每个分支位置记录可能诱发不同增量行为的变量来对之前探索的路径进行总结,从而实现检查当前路径是否可能包含与之前不同的增量行为。本方法可以识别在测试过程中与之前探索路径覆盖相同增量行为的路径,并通过删除这些冗余路径从而指数级减少探索路径,并保证漏洞检测的准确性和完备性。
下面结合图1描述本发明的基于反馈增量驱动的符号执行方法,该方法包括:
步骤101,对更新前后的目标程序代码进行静态分析,确定更新后的目标程序代码的增量信息;其中,所述增量信息包括增量代码和依赖信息;
需要说明的是,上述方法的执行主体可以是电子设备、电子设备中的部件、集成电路、或芯片。该电子设备可以是移动电子设备,也可以为非移动电子设备。
其中,目标程序代码为待进行漏洞检测的程序代码,其类型以及包含的执行路径数量等,可以根据实际需求进行设置。
依赖信息包括但不限于数据依赖信息和控制依赖信息。
增量代码为相对于更新前的目标程序代码,更新后的目标程序代码中包含的更新代码;
可选地,对更新前后的目标程序代码进行静态分析,可获取由于目标程序代码更新时不同版本差异而带来的增量代码,以及更新版本中的依赖信息,以指导后续的增量符号执行。
步骤102,对所述更新后的目标程序代码进行符号执行,并根据所述更新后的目标程序代码中各路径对应的执行信息和所述增量信息,获取所述增量代码的相关路径;
可选地,对更新后的目标程序代码进行符号执行,以获取更新后的目标程序代码中每条路径对应的执行信息;
然后,根据更新后的目标程序代码中每条路径对应的执行信息和增量信息,确定与增量代码相关的路径;
具体确定与增量代码相关的路径的方式,可以是先根据更新后的目标程序代码中每条路径对应的执行信息和增量信息,确定与增量信息相关的事件,根据与增量信息相关的事件,推导出与增量代码相关的路径;
或者,可以是先根据更新后的目标程序代码中每条路径对应的执行信息和增量信息,确定与增量信息相关的变量,根据与增量信息相关的变量,推导出与增量代码相关的路径。本实施例对此不作具体地限定。
步骤103,根据所述相关路径对应的执行信息,对所述相关路径进行裁剪后生成测试用例;
其中,执行信息为在符号执行过程中产生的与漏洞检测相关的信息,如与增量信息相关的变量、事件、分支谓词的覆盖情况和检测状态等,本实施例对此不作具体地限定。
为了对由程序代码更新带来的漏洞进行更加全面和准确地检测,本实施例基于增量符号执行的漏洞挖掘,主要目的是将测试分析范围限定到受软件更新影响的程序行为上。
可选地,为了有效生成定向深度分析增量行为的种子输入,本实施例从已遍历的动态路径执行信息中提取导向增量行为分析的必要条件,并利用该必要条件指导后续测试用例的生成或者选择。随着更多路径的覆盖及分析,更多的必要条件得以计算并收集,从而驱使符号执行更集中而有效地挖掘由软件更新可能引发的漏洞。
可选地,根据相关路径中各路径对应的执行信息,可以确定各路径对目标程序代码的增量行为的影响,根据各路径对目标程序代码的增量行为的影响,对与目标程序代码的增量行为无关或重复的冗余路径进行裁剪,以保留可覆盖目标程序代码的增量行为的最小化路径集合。
然后,对裁剪后的可覆盖目标程序代码的增量行为的最小化路径集合进行符号执行,得到可覆盖目标程序代码的所有增量行为的测试用例,进而更加高效准确地获取漏洞检测结果。
本实施例首先通过在符号执行过程中每条执行路径上进行域敏感数据流分析来准确找到受到增量行为影响的变量;其次,对每条探索过的路径前缀进行总结来明确增量行为是如何影响程序执行的,从而对冗余的路径进行裁剪,可准确判断当前路径是否覆盖了新的程序增量行为,进而最大程度地保留覆盖目标程序代码的增量行为的最小化路径集合。
步骤104,根据所述测试用例对所述更新后的目标程序代码进行漏洞检测,得到所述更新后的目标程序代码的漏洞检测结果。
可选地,在获取到可覆盖目标程序代码的所有增量行为的测试用例后,可根据该测试用例对更新后的目标程序代码进行漏洞检测,进而可快速准确地得到漏洞检测结果。
现有技术中,针对软件迭代更新过程中产生的漏洞,已有的增量符号执行技术通常通过单纯的静态分析标识程序增量行为,从而分析大量并未受程序更新所影响的执行路径;或者要求同时执行更新前后的两个不同程序版本,从而增加分析的难度和开销,降低方法的可用性。
面对软件持续更新为漏洞挖掘技术的效率及安全性的维护提出的巨大挑战,以及当前的增量符号执行技术存在难以便捷准确地捕获程序更新引起的增量行为的问题,本实施例提出的漏洞检测方法通过综合静态分析与动态反馈符号执行技术,可实现精确高效的标识和描述增量行为,并生成可覆盖目标程序代码的所有增量行为的测试用例,使得漏洞检测结果更加完备、高效和准确。具体来说,本实施例首先通过静态分析技术捕捉由于程序更新导致的增量信息,包括更新的代码部分以及依赖信息等;然后通过前向符号执行和后向路径总结,避免重复探索已经被之前的路径探索过的增量行为,进而提升增量软件测试的效率、准确性和完备性。
本实施例先基于静态分析,获取由于程序更新导致的增量信息;然后,基于符号执行,获取与增量信息中的增量代码相关的相关路径;然后,对相关路径进行后向路径总结,具体基于相关路径对应的执行信息,对未对目标程序代码的增量行为造成影响或重复的冗余的路径进行裁剪,获取最大程度地保留覆盖目标程序代码的增量行为的最小化路径集合后,生成完备有效的测试用例,不仅使得漏洞检测结果更加完备和准确,而且可最大限度地裁剪掉冗余路径,有效减少漏洞检测的冗余时间开销。
在上述实施例的基础上,本实施例中所述对所述更新后的目标程序代码进行符号执行,并根据所述更新后的目标程序代码中各路径对应的执行信息和所述增量信息,获取所述增量代码的相关路径,包括:采用符号执行遍历执行所述更新后的目标程序代码中的每条路径,并对每条路径进行域敏感数据流分析,得到所述更新后的目标程序代码中每条路径对应的执行信息;根据所述更新后的目标程序代码中每条路径对应的执行信息和所述增量信息,获取所述更新后的目标程序代码中每条路径中与所述增量代码相关的变量;将所述更新后的目标程序代码中,存在与所述增量代码相关的变量的路径,作为所述增量代码的相关路径。
可选地,为了精确地探索每条路径中与增量代码相关的变量,对每条执行路径进行符号执行和域敏感数据流分析,同时在符号执行过程中记录每条路径的执行信息,用于指导后续的路径汇总。
可选地,在确定更新后的目标程序代码的增量信息后,可采用符号执行遍历更新后的目标程序代码中的每条路径,并对每条路径进行域敏感数据流分析,得到更新后的目标程序代码中每条路径对应的执行信息;
然后,根据更新后的目标程序代码中每条路径对应的执行信息和增量信息,确定更新后的目标程序代码中每条路径中与所述增量代码相关的变量,并对当前执行状态进行更新,以得到每条路径中与增量代码相关的所有变量。
可选地,在任一路径为执行路径的情况下,对当前执行状态进行更新的具体步骤包括:采用一个四元组<pc,l,mem,VΔ>来表示当前的执行状态s,其中,pc为路径条件,l为执行路径的控制节点,mem为执行路径的内存映射,VΔ包括执行路径中所有进行更新的Δ-变量(与增量代码相关的变量),在符号执行过程中每当遇到赋值语句时,则表明该变量为与增量代码相关的变量,即需要对VΔ进行更新;即对于事件e:
Figure BDA0003675453650000121
如果e是一个Δ-事件那么生成其相应的Δ-变量v并将其添加到VΔ中,其中,v表示相应生成的变量;当该变量被重定义时,则该变量不是与增量代码相关的变量,需要对该变量进行检查并显示地移除。
例如,程序代码为:
1:x=y+1//V=V∪{x};
2:x=m*2-5//V=V\{x}//对x进行了重新定义;
对于上述实例代码,由于在第二行对x进行了重定义因此需要将其移除出VΔ,因为当第二行代码执行后,对于x而言第二行并不是与增量代码相关的事件,因此继续将x保留在VΔ中是没有意义的,需要将其移除,仅保留与增量代码相关的变量。
然后,判断将更新后的目标程序代码中各路径是否均存在与增量代码相关的变量;仅选择将存在与增量代码相关的变量的路径,作为增量代码的相关路径。
本实施例通过对更新后的目标程序代码进行符号执行,可得到更新后的目标程序代码中各路径中所有与增量代码相关的变量,以快速准确地确定所有与增量代码的相关路径。
在上述实施例的基础上,本实施例中所述相关路径中各路径的各控制节点,和所述相关路径中各路径中的与所述增量代码相关的变量,以键值表的形式进行存储。
可选地,在获取到相关路径中的各路径的执行信息后,可以通过进行路径摘要分析来描述各相关路径中增量代码对程序行为的影响。
具体通过构建一个全局的键值表ΠΔ,将各路径上某一控制点l及其后缀路径中可能会导致Δ-事件的变量联系起来,并存放在ΠΔ[l]中。
可选地,首先将该键值表初始化为空,每当一条新的路径被探索完成,即当前指令是abort语句或者halt语句时,动态地更新该路径中每个控制节点l及其对应的与增量代码相关的变量之间的映射关系。通过这一步骤可总结统计所有相关路径中所有控制节点l的变量信息。
在对键值表更新过程中,具体将ΠΔ[l]每次更新为ΠΔ[l]∪Vπ[l],其中Vπ[l]是指路径中控制点l后缀路径中影响Δ-事件的变量(即与增量代码相关的变量);当遇到赋值事件e:
Figure BDA0003675453650000131
时检查变量v是否在Vπ中,如果不在不进行任何更新,否则将Vπ更新为Vπ∪Use(exp);其中Use(exp)为表达式使用的所有的变量(与增量代码相关的变量);当遇到分支事件e:
Figure BDA0003675453650000132
对,如果该分支可能会导致新的Δ-事件序列的产生,就将该分支语句c所使用的所有变量(与增量代码相关的变量)加入到Vπ中。
为了便于后续分支的裁剪,本实例定义了Δ-关键分支与Δ-无关分支用于表示分支对程序增量行为的影响程度,相关定义如下:对于事件e:
Figure BDA0003675453650000133
I表示控制依赖与br的指令,如果存在增量行为相关的指令控制依赖于事件e,或者事件I使用的变量会对ΠΔ[l′]中的变量产生影响,那么将br定义为Δ-关键分支,否则将其定义为Δ-无关分支。
本实施例通过全局的键值表可建立相关路径中所有路径的所有控制节点l与其后缀路径中可能影响Δ-事件的变量之间的映射关系,进而可获取所有路径对程序行为的影响,以更加全面和完备地探索出对程序增量行为有影响的所有路径。
在上述实施例的基础上,本实施例中所述执行信息中包含所述键值表、检测状态和分支谓词的覆盖情况中的一种或多种组合。
其中,执行信息可仅包含键值表、检测状态或分支谓词的覆盖情况,或者包含键值表、检测状态和分支谓词的覆盖情况中的多种组合等,本实施例对此不作具体地限定。
检测状态用于表征当前路径所触发的增量行为是否被检测,包括已检测状态和未检测状态。
本实施例中相关路径中各路径的执行信息中包含与漏洞检测相关的丰富信息,包括各路径中各控制点与增量代码相关的变量之间的关联关系、检测状态、分支谓词的覆盖情况,通过这些与漏洞检测相关的丰富信息,即可快速准确地获取可完全覆盖程序增量行为的测试输入最小化路径集合,进而更加高效和准确地获取程序的增量行为,得到有效的漏洞检测结果。
在上述实施例的基础上,本实施例中所述执行信息中包含所述键值表;根据所述相关路径对应的执行信息,对所述相关路径进行裁剪,包括:根据所述键值表,获取所述相关路径中未对所述目标程序的增量行为产生影响的路径;对所述相关路径中未对所述目标程序代码的增量行为产生影响的路径进行裁剪。
可选地,在键值表中某一路径下与增量代码相关的变量为空的情况下,表明该路径未对目标程序代码的增量行为产生任何影响,即在该路径下没有任何增量行为可以触发,可以对此类路径进行裁剪。
虽然存在部分路径与增量代码相关,但与程序增量行为无关,即该路径不是△-路径。因此,该路径为冗余路径,可对该路径进行裁剪。
本实施例通过键值表,即可简单便捷地获取相关路径中各路径对目标程序的增量行为的影响,以对未对目标程序代码的增量行为产生影响的冗余路径进行裁剪,进而减少对冗余路径进行漏洞检测,减少冗余时间开销和计算成本开销。
本实施例中所述执行信息中包含检测状态;根据所述相关路径对应的执行信息,对所述相关路径进行裁剪,包括:在上述实施例的基础上,本实例基于获取到的Π中的信息,针对两种类型的路径进行裁剪,分别是没有被标识为△-路径,对程序增量行为不产生任何影响的路径;与之前探索过的△-路径探索相同△-事件,对程序增量行为的影响已经处理的路径。
可选地,在前向符号执行过程中,当在执行某一条路径过程中,如果发现当前路径使用到的变量均与程序增量行为无关,即该路径不会被定义为△-路径,则立即终止该路径。
可选地,在执行某条路径过程中,如果发现当前执行地△-事件顺序与之前探索过的△-路径完全一致,那么该路径将不会触发任何新的增量行为,具体而言,△-无关分支的执行不会影响增量行为的触发,因此对于这类△-无关分支,我们只需要探索其某一个分支即可,并且不会造成程序行为的缺失,在路径探索过程中,若相关路径中存在两个或多个分支路径,在探索完其某一个分支路径后,通过检查其他分支路径触发的行为是否已经被探索过,如果探索过那么裁剪掉该分支路径。
本实施例对触发的△-事件与之前探索过的路径事件相同的路径进行裁剪,由于此类路径触发的△-事件之前的路径已经探索过故可以将其裁剪。通过这种裁剪方式,可以进一步减少路径冗余,进行使得漏洞检测效率更高,漏洞检测结果更加准确。
在上述实施例的基础上,本实施例中所述执行信息中包含分支谓词的覆盖情况;根据所述相关路径对应的执行信息,对所述相关路径进行裁剪,包括:在所述相关路径中存在任一路径覆盖的分支谓词,与更新前的目标程序代码的任一路径覆盖的分支谓词存在交集的情况下,根据所述交集,对所述相关路径中的该路径的路径条件进行更新;根据更新结果,对所述相关路径中的该路径的进行裁剪。
可选地,由于分支条件的改变只会影响路径条件而不会影响状态的存储状况,因此可以重新调整和考虑程序输入空间的划分,并且这些变化可能会导致程序及其迭代版本在路径条件不同的情况下呈现出相同的程序行为。对于此类路径可利用路径约简方法进行隐式路径裁剪。
可选地,根据相关路径中各路径的分支谓词的覆盖情况,确定各路径覆盖的分支谓语;
判断各路径覆盖的分支谓语是否与更新前的目标程序代码的任一路径覆盖的分支谓词存在交集,在相关路径中存在任一路径覆盖的分支谓词,与更新前的目标程序代码的任一路径覆盖的分支谓词存在交集的情况下,虽然交集部分的分支谓语发生了改变,但不会对目标程序代码的内存区域产生任何影响,即不会引入增量行为,此时可以采用路径约简来隐式地对该路径进行裁剪。即,在该场景下,当遇到分支条件时,需要保证在当前执行路径上没有探索到任何赋值更改,并且当前分支不会造成任何赋值更改。
具体裁剪的方式为:对于当前执行状态s=<pc,l,mem,V_Δ>,在处理事件e:
Figure BDA0003675453650000161
时将路径条件pc约简更新为
Figure BDA0003675453650000162
其中cp是相应的分支条件,
Figure BDA0003675453650000163
为约简条件;根据更新后的路径条件,对该路径进行裁剪,以进一步裁剪掉对目标程序代码的执行状态没有任何影响的冗余路径,以得到可覆盖程序增量行为的测试输入最小化路径集合。
例如,更新前的程序代码为:
Figure BDA0003675453650000171
对于上述代码,第一行的条件语句发生了改变,但是更新后的程序代码的分支谓词覆盖范围与更新前的程序代码的分支谓词覆盖范围存在交集,该交集没有导致任何内存区域的更改或增量行为的产生,因此可以利用条件约简进行裁剪。
如图2所示,对于上述增量代码只需要重新检查a>0∧a≤1这一分支路径即可,对于a≤0或者a>1尽管该路径上存在△-事件,但其覆盖的程序行为与原始程序一致,故可以进行裁剪。
本实例通过根据相关路径中各路径的分支谓词的覆盖情况,对相关路径进行进一步地裁剪,可进一步裁剪掉对目标程序的增量行为无关的冗余路径,进而得到可覆盖程序增量行为的测试输入最小化路径集合。
如图3所示,为本实施例中基于反馈增量驱动的符号执行方法的完整流程示意图。针对程序的演化迭代,本方法的目的是系统化地生成一个可以覆盖程序增量行为的测试输入最小化集合;
为了达到此目的,本方法主要包括以下两个阶段,静态分析阶段和增量符号执行阶段,其中增量符号执行阶段由前向符号执行和后向路径汇总以及冗余路径的裁剪组成的反馈循环构成。具体步骤如下:
首先,在静态分析阶段计算与收集程序不同版本差异△(增量代码)以及在演化版本中的数据依赖信息和控制依赖信息,来指导后续的增量符号执行。其次,通过构建一个全局的键值表,建立起执行路径中某控制点与其后缀路径中可能影响△-事件的变量之间的映射关系;最后,显式或隐式地裁剪掉未覆盖增量程序行为的路径,以及覆盖程序行为且已经被探索过的路径。
下面对本发明提供的基于反馈增量驱动的符号执行装置进行描述,下文描述的基于反馈增量驱动的符号执行装置与上文描述的基于反馈增量驱动的符号执行方法可相互对应参照。
如图4,本实施例提供一种基于反馈增量驱动的符号执行装置,该装置包括静态分析模块401、动态执行模块402、裁剪模块403和漏洞检测模块404,其中:
静态分析模块401,用于对更新前后的目标程序代码进行静态分析,确定更新后的目标程序代码的增量信息;其中,所述增量信息包括增量代码和依赖信息;
可选地,对更新前后的目标程序代码进行静态分析,可获取由于目标程序代码更新时不同版本差异而带来的增量代码,以及更新版本中的依赖信息,以指导后续的增量符号执行。
动态执行模块402,用于对所述更新后的目标程序代码进行符号执行,并根据所述更新后的目标程序代码中各路径对应的执行信息和所述增量信息,获取所述增量代码的相关路径;
可选地,对更新后的目标程序代码进行符号执行,以获取更新后的目标程序代码中每条路径对应的执行信息;
然后,根据更新后的目标程序代码中每条路径对应的执行信息和增量信息,确定与增量代码相关的路径;
具体确定与增量代码相关的路径的方式,可以是先根据更新后的目标程序代码中每条路径对应的执行信息和增量信息,确定与增量信息相关的事件,根据与增量信息相关的事件,推导出与增量代码相关的路径;
或者,可以是先根据更新后的目标程序代码中每条路径对应的执行信息和增量信息,确定与增量信息相关的变量,根据与增量信息相关的变量,推导出与增量代码相关的路径。本实施例对此不作具体地限定。
裁剪模块403,用于根据所述相关路径对应的执行信息,对所述相关路径进行裁剪后生成测试用例;
可选地,根据相关路径中各路径对应的执行信息,可以确定各路径对目标程序代码的增量行为的影响,根据各路径对目标程序代码的增量行为的影响,对与目标程序代码的增量行为无关或重复的冗余路径进行裁剪,以保留可覆盖目标程序代码的增量行为的最小化路径集合。
然后,对裁剪后的可覆盖目标程序代码的增量行为的最小化路径集合进行符号执行,得到可覆盖目标程序代码的所有增量行为的测试用例,进而更加高效准确地获取漏洞检测结果。
本实施例首先通过在符号执行过程中每条执行路径上进行域敏感数据流分析来准确找到受到增量行为影响的变量;其次,对每条探索过的路径前缀进行总结来明确增量行为是如何影响程序执行的,从而对冗余的路径进行裁剪,可准确判断当前路径是否覆盖了新的程序增量行为,进而最大程度地保留覆盖目标程序代码的增量行为的最小化路径集合。
漏洞检测模块404,用于根据所述测试用例对所述更新后的目标程序代码进行漏洞检测,得到所述更新后的目标程序代码的漏洞检测结果。
可选地,在获取到可覆盖目标程序代码的所有增量行为的测试用例后,可根据该测试用例对更新后的目标程序代码进行漏洞检测,进而可快速准确地得到漏洞检测结果。
本实施例首先基于静态分析,获取由于程序更新导致的增量信息;然后,基于符号执行,获取与增量信息中的增量代码相关的相关路径;然后,对相关路径进行后向路径总结,具体基于相关路径对应的执行信息,对未对目标程序代码的增量行为造成影响或重复的冗余的路径进行裁剪,以获取最大程度地保留覆盖目标程序代码的增量行为的最小化路径集合后,生成完备有效的测试用例,不仅使得漏洞检测结果更加完备和准确,而且可最大限度地裁剪掉冗余路径,有效减少漏洞检测的冗余时间开销。
在上述实施例的基础上,本实施例中动态执行模块,具体用于:采用符号执行遍历执行所述更新后的目标程序代码中的每条路径,并对每条路径进行域敏感数据流分析,得到所述更新后的目标程序代码中每条路径对应的执行信息;根据所述更新后的目标程序代码中每条路径对应的执行信息和所述增量信息,获取所述更新后的目标程序代码中每条路径中与所述增量代码相关的变量;将所述更新后的目标程序代码中,存在与所述增量代码相关的变量的路径,作为所述增量代码的相关路径。
在上述实施例的基础上,本实施例中所述相关路径中各路径的各控制节点,和所述相关路径中各路径中的与所述增量代码相关的变量,以键值表的形式进行存储。
在上述实施例的基础上,本实施例中所述执行信息中包含所述键值表、检测状态和分支谓词的覆盖情况中的一种或多种组合。
在上述实施例的基础上,本实施例中所述执行信息中包含所述键值表;
裁剪模块,具体用于:根据所述键值表,获取所述相关路径中未对所述目标程序的增量行为产生影响的路径;对所述相关路径中未对所述目标程序代码的增量行为产生影响的路径进行裁剪。
在上述实施例的基础上,本实施例中所述执行信息中包含检测状态;
裁剪模块,具体用于:在所述相关路径中存在两个分支路径,且对两个分支路径中的任一分支路径检测完成的情况下,若判断获知另一分支路径触发的增量行为的检测状态为已检测的情况下,对所述另一分支路径进行裁剪。
在上述实施例的基础上,本实施例中所述执行信息中包含分支谓词的覆盖情况;
裁剪模块,具体用于:在所述相关路径中存在任一路径覆盖的分支谓词,与更新前的目标程序代码的任一路径覆盖的分支谓词存在交集的情况下,根据所述交集,对所述相关路径中的该路径的路径条件进行更新;根据更新结果,对所述相关路径中的该路径的进行裁剪。
图5示例了一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)501、通信接口(Communications Interface)502、存储器(memory)503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信。处理器501可以调用存储器503中的逻辑指令,以执行基于反馈增量驱动的符号执行方法,该方法包括:对更新前后的目标程序代码进行静态分析,确定更新后的目标程序代码的增量信息;其中,所述增量信息包括增量代码和依赖信息;对所述更新后的目标程序代码进行符号执行,并根据所述更新后的目标程序代码中各路径对应的执行信息和所述增量信息,获取所述增量代码的相关路径;根据所述相关路径对应的执行信息,对所述相关路径进行裁剪后生成测试用例;根据所述测试用例对所述更新后的目标程序代码进行漏洞检测,得到所述更新后的目标程序代码的漏洞检测结果。
此外,上述的存储器503中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的基于反馈增量驱动的符号执行方法,该方法包括:对更新前后的目标程序代码进行静态分析,确定更新后的目标程序代码的增量信息;其中,所述增量信息包括增量代码和依赖信息;对所述更新后的目标程序代码进行符号执行,并根据所述更新后的目标程序代码中各路径对应的执行信息和所述增量信息,获取所述增量代码的相关路径;根据所述相关路径对应的执行信息,对所述相关路径进行裁剪后生成测试用例;根据所述测试用例对所述更新后的目标程序代码进行漏洞检测,得到所述更新后的目标程序代码的漏洞检测结果。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的基于反馈增量驱动的符号执行方法,该方法包括:对更新前后的目标程序代码进行静态分析,确定更新后的目标程序代码的增量信息;其中,所述增量信息包括增量代码和依赖信息;对所述更新后的目标程序代码进行符号执行,并根据所述更新后的目标程序代码中各路径对应的执行信息和所述增量信息,获取所述增量代码的相关路径;根据所述相关路径对应的执行信息,对所述相关路径进行裁剪后生成测试用例;根据所述测试用例对所述更新后的目标程序代码进行漏洞检测,得到所述更新后的目标程序代码的漏洞检测结果。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种基于反馈增量驱动的符号执行方法,其特征在于,包括:
对更新前后的目标程序代码进行静态分析,确定更新后的目标程序代码的增量信息;其中,所述增量信息包括增量代码和依赖信息;
对所述更新后的目标程序代码进行符号执行,并根据所述更新后的目标程序代码中各路径对应的执行信息和所述增量信息,获取所述增量代码的相关路径;
根据所述相关路径对应的执行信息,对所述相关路径进行裁剪后生成测试用例;
根据所述测试用例对所述更新后的目标程序代码进行漏洞检测,得到所述更新后的目标程序代码的漏洞检测结果。
2.根据权利要求1所述的基于反馈增量驱动的符号执行方法,其特征在于,对所述更新后的目标程序代码进行符号执行,并根据所述更新后的目标程序代码中各路径对应的执行信息和所述增量信息,获取所述增量代码的相关路径,包括:
采用符号执行遍历执行所述更新后的目标程序代码中的每条路径,并对每条路径进行域敏感数据流分析,得到所述更新后的目标程序代码中每条路径对应的执行信息;
根据所述更新后的目标程序代码中每条路径对应的执行信息和所述增量信息,获取所述更新后的目标程序代码中每条路径中与所述增量代码相关的变量;
将所述更新后的目标程序代码中,存在与所述增量代码相关的变量的路径,作为所述增量代码的相关路径。
3.根据权利要求1或2所述的基于反馈增量驱动的符号执行方法,其特征在于,所述相关路径中各路径的各控制节点,和所述相关路径中各路径中的与所述增量代码相关的变量,以键值表的形式进行存储。
4.根据权利要求3所述的基于反馈增量驱动的符号执行方法,其特征在于,所述执行信息中包含所述键值表、检测状态和分支谓词的覆盖情况中的一种或多种组合。
5.根据权利要求4所述的基于反馈增量驱动的符号执行方法,其特征在于,所述执行信息中包含所述键值表;
根据所述相关路径对应的执行信息,对所述相关路径进行裁剪,包括:
根据所述键值表,获取所述相关路径中未对所述目标程序的增量行为产生影响的路径;
对所述相关路径中未对所述目标程序代码的增量行为产生影响的路径进行裁剪。
6.根据权利要求4所述的基于反馈增量驱动的符号执行方法,其特征在于,所述执行信息中包含检测状态;
根据所述相关路径对应的执行信息,对所述相关路径进行裁剪,包括:
在所述相关路径中存在两个分支路径,且对两个分支路径中的任一分支路径检测完成的情况下,若判断获知另一分支路径触发的增量行为的检测状态为已检测的情况下,对所述另一分支路径进行裁剪。
7.根据权利要求4所述的基于反馈增量驱动的符号执行方法,其特征在于,所述执行信息中包含分支谓词的覆盖情况;
根据所述相关路径对应的执行信息,对所述相关路径进行裁剪,包括:
在所述相关路径中存在任一路径覆盖的分支谓词,与更新前的目标程序代码的任一路径覆盖的分支谓词存在交集的情况下,根据所述交集,对所述相关路径中的该路径的路径条件进行更新;
根据更新结果,对所述相关路径中的该路径的进行裁剪。
8.一种基于反馈增量驱动的符号执行装置,其特征在于,包括:
静态分析模块,用于对更新前后的目标程序代码进行静态分析,确定更新后的目标程序代码的增量信息;其中,所述增量信息包括增量代码和依赖信息;
动态执行模块,用于对所述更新后的目标程序代码进行符号执行,并根据所述更新后的目标程序代码中各路径对应的执行信息和所述增量信息,获取所述增量代码的相关路径;
裁剪模块,用于根据所述相关路径对应的执行信息,对所述相关路径进行裁剪后生成测试用例;
漏洞检测模块,用于根据所述测试用例对所述更新后的目标程序代码进行漏洞检测,得到所述更新后的目标程序代码的漏洞检测结果。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述基于反馈增量驱动的符号执行方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述基于反馈增量驱动的符号执行方法。
CN202210623335.3A 2022-06-01 2022-06-01 基于反馈增量驱动的符号执行方法 Active CN115237748B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210623335.3A CN115237748B (zh) 2022-06-01 2022-06-01 基于反馈增量驱动的符号执行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210623335.3A CN115237748B (zh) 2022-06-01 2022-06-01 基于反馈增量驱动的符号执行方法

Publications (2)

Publication Number Publication Date
CN115237748A true CN115237748A (zh) 2022-10-25
CN115237748B CN115237748B (zh) 2023-07-04

Family

ID=83668895

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210623335.3A Active CN115237748B (zh) 2022-06-01 2022-06-01 基于反馈增量驱动的符号执行方法

Country Status (1)

Country Link
CN (1) CN115237748B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103559122A (zh) * 2013-10-14 2014-02-05 西安交通大学 基于程序行为切片的测试案例约减方法
CN104503901A (zh) * 2014-12-04 2015-04-08 中国人民解放军总参谋部第五十四研究所 一种基于静态路径分析的导向符号执行方法
CN106599695A (zh) * 2016-06-03 2017-04-26 南京大学 一种基于路径合并的可引导符号执行漏洞检测方法
CN106681851A (zh) * 2016-12-08 2017-05-17 中国石油大学(华东) 程序代码级内存缺陷漏报分析及解决方法
CN114510722A (zh) * 2022-02-17 2022-05-17 北京大学 增量代码的静态检测方法及检测系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103559122A (zh) * 2013-10-14 2014-02-05 西安交通大学 基于程序行为切片的测试案例约减方法
CN104503901A (zh) * 2014-12-04 2015-04-08 中国人民解放军总参谋部第五十四研究所 一种基于静态路径分析的导向符号执行方法
CN106599695A (zh) * 2016-06-03 2017-04-26 南京大学 一种基于路径合并的可引导符号执行漏洞检测方法
CN106681851A (zh) * 2016-12-08 2017-05-17 中国石油大学(华东) 程序代码级内存缺陷漏报分析及解决方法
CN114510722A (zh) * 2022-02-17 2022-05-17 北京大学 增量代码的静态检测方法及检测系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
王眉林;张旖旎;李明月;邵帅;刘湿润;: "基于符号执行提高缺陷分析的准确性研究" *
蔡军;邹鹏;熊达鹏;何骏;: "结合静态分析与动态符号执行的软件漏洞检测方法", 计算机工程与科学 *

Also Published As

Publication number Publication date
CN115237748B (zh) 2023-07-04

Similar Documents

Publication Publication Date Title
Godefroid Fuzzing: Hack, art, and science
US10380350B1 (en) Efficient and comprehensive source code fuzzing
US9983984B2 (en) Automated modularization of graphical user interface test cases
Korel et al. Dynamic program slicing methods
CN110287693B (zh) 基于符号执行路径剪枝的缓冲区溢出漏洞自动检测方法
CN109101815B (zh) 一种恶意软件检测方法及相关设备
US10725897B2 (en) Systems and methods for automatically parallelizing sequential code
US20120151449A1 (en) Scope Bounding with Automated Specification Inference for Scalable Software Model Checking
Kim et al. Software vulnerability detection methodology combined with static and dynamic analysis
CN111859380A (zh) Android App漏洞的零误报检测方法
CN113468525A (zh) 针对二进制程序的相似漏洞检测方法及装置
CN114817927A (zh) 基于分支覆盖指导的有效符号执行方法及装置
US8893101B2 (en) Hybrid dependency analysis using dynamic and static analyses
US11868465B2 (en) Binary image stack cookie protection
Sun et al. Osprey: A fast and accurate patch presence test framework for binaries
CN113935041A (zh) 面向实时操作系统设备的漏洞检测系统及方法
US11995192B2 (en) System for static analysis of binary executable code and source code using fuzzy logic and method thereof
CN115237748A (zh) 基于反馈增量驱动的符号执行方法
EP3872663B1 (en) Method and device for symbolic analysis of a software program
CN111796832B (zh) 热补丁文件生成方法、装置、设备及存储介质
Belle Lakshminarayan Fuzzing: A comparison of fuzzing tools
KR102663234B1 (ko) IoT 장치에 설치된 소프트웨어에서 취약점을 분석하는 시스템 및 방법
Yousaf et al. Efficient Identification of Race Condition Vulnerability in C code by Abstract Interpretation and Value Analysis
KR102421394B1 (ko) 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치 및 방법
CN114707143A (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