CN116451228A - 动态污点追踪方法、装置及相关在线污点传播分析*** - Google Patents

动态污点追踪方法、装置及相关在线污点传播分析*** Download PDF

Info

Publication number
CN116451228A
CN116451228A CN202310441463.0A CN202310441463A CN116451228A CN 116451228 A CN116451228 A CN 116451228A CN 202310441463 A CN202310441463 A CN 202310441463A CN 116451228 A CN116451228 A CN 116451228A
Authority
CN
China
Prior art keywords
stain
taint
propagation
function
data
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
CN202310441463.0A
Other languages
English (en)
Other versions
CN116451228B (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 Anpro Information Technology Co ltd
Original Assignee
Beijing Anpro Information Technology Co ltd
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 Anpro Information Technology Co ltd filed Critical Beijing Anpro Information Technology Co ltd
Priority to CN202310441463.0A priority Critical patent/CN116451228B/zh
Publication of CN116451228A publication Critical patent/CN116451228A/zh
Application granted granted Critical
Publication of CN116451228B publication Critical patent/CN116451228B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • 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
    • 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)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开的实施例提供一种动态污点追踪方法、装置及相关在线污点传播分析***。其中,该方法包括:主要通过部署Agent程序和在目标应用程序运行过程中通过所述Agent程序在目标应用程序的第一输入函数、第一传播函数、第一输出函数插桩探针进行监测,继而在目标应用程序处理请求输入时,通过所述探针监测所述函数执行记录其污点传播轨迹,以及在污点汇聚事件触发后及时根据所述污点传播轨迹还原相关污点传播路径,以实现目标应用程序运行时的对其中污点数据复杂传播的有效监控与即时响应、精准分析以及全面覆盖。

Description

动态污点追踪方法、装置及相关在线污点传播分析***
技术领域
本申请公开的实施例主要涉及软件分析技术领域,且更具体地,涉及一种动态污点追踪方法、装置及相关在线污点传播分析***。
背景技术
污点分析技术(Taint Analysis)是一种保障信息安全、防止信息完整性和保密性被破坏的有效手段,同时亦是网络与信息安全领域的重要研究方向。污点分析本质上是一种信息流分析技术,其关键在于:跟踪特定数据片段(即污点数据)在程序执行过程中的传播,以为其他分析提供支撑。其中,对污点传播的跟踪主要是通过污点传播分析实现。
污点传播分析是污点分析实践中的研究重点。根据分析过程中是否需要运行程序,污点传播分析可被分为静态污点传播分析模式和动态污点传播分析模式。其中,在静态污点传播分析模式下,虽然可在程序源码或其中间表示上分析程序变量间的数据依赖关系,以确定其中的污点传播路径,尤其是检测污点数据是否能够从污点源传播到污点汇聚点;但是静态污点传播分析的核心思考在于将污点传播的静态分析问题转化为对程序中静态数据依赖分析,故静态污点传播分析的实施往往需要遍历分析对象的全部程序源码或其中间表示,故而静态污点传播分析模式存在开销大、误差大等问题。动态污点传播分析模式是在程序运行过程中通过实时监控程序的污点数据在***中的传播来检测污点数据是否能够从污点源传播到污点汇聚点;其中尤以基于插桩的动态污点传播分析为污点传播分析技术的最佳实践。基于插桩的动态污点传播分析不仅无需特定的底层硬件或虚拟机环境,而且更加贴近源程序层次而支持更高的语义逻辑的安全策略,应用广泛且适用于更加抽象的程序逻辑的污点传播分析。但是,基于插桩的动态污点传播分析会因插桩会带来开销,盲目地广布插桩点虽然有助于记录更加丰富的程序运行和污点传播细节,却也会给***带来巨大开销,成为不可接受之重;而为应对***开销选择精简插桩策略的一些现有方案,却仅支持被动跟踪简单线性路径下的污点传播(及其记录)。于是,如何在应用程序运行过程中对其中污点数据的复杂传播实现及时有效且低成本的跟踪,成为了污点传播分析技术实践中需要解决的技术问题。
发明内容
根据本申请公开的实施例,提供一种动态污点追踪方案,通过合理插桩和相应安全策略追踪、还原相应污点传播路径,以实现目标应用程序运行时的对其中污点数据复杂传播的有效监控与即时响应、精准分析以及全面覆盖,进而快速且高效地识别出其中的疑似可利用路径。
在本公开的第一方面中,提供一种动态污点追踪方法。该方法包括:在目标应用程序运行的服务器端部署Agent程序;在目标应用程序运行过程中,通过所述Agent程序在目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针;继而在目标应用程序处理请求输入时,通过所述探针监测所述污点源函数、污点传播函数、污点汇聚函数执行,记录当前请求处理过程中的污点传播轨迹;以及在污点汇聚事件触发后,根据所述污点传播轨迹即时还原当前污点汇聚事件所从属的污点传播路径;其中的污点传播轨迹记录,主要通过所述探针分别获取其探针切点下相应的事件信息实现;具体地,所述事件信息,可以主要包括当前探针所获事件的事件类型、当前切点下污点传播轨迹和函数信息;对应于所述污点源函数、污点传播函数、污点汇聚函数,所述事件类型包括污点源输入型事件、污点传播型事件、污点汇聚型事件;所述函数信息可以包括当前探针所插桩的函数的限定函数名称。
可选地,在第一方面的一种实现方式中,可以是通过所述探针获取其探针切点下相应的污点数据来描述其所获所述事件信息中的切点下污点传播轨迹,所述污点数据可以是包括原始输入污点数据/衍生污点数据及其传播输入污点数据/汇聚输入污点数据;由此,进而所述的污点传播轨迹记录,可以包括:通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,继而捕获所述污点数据在该探针切点下所关联的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息,并将所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息及其标识记录到集合容器中;其中,所述的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息均包括当前切点下污点传播轨迹,对应其事件类型,所述切点下污点传播轨迹可以包括:所述探针获取的原始输入污点数据/衍生污点数据及其传播输入污点数据/汇聚输入污点数据,或对应的所述污点数据的唯一特征信息;对应地,所述污点传播路径还原,可以包括:在(任一)所述污点汇聚事件触发后,(均)根据所述集合容器中相应的污点汇聚事件信息及污点传播事件信息、污点源输入事件信息中的切点下污点传播轨迹,透过相关污点数据后向溯源,回放当前触发污点汇聚事件所从属的污点传播轨迹。
进一步,可选地,在上述实现方式中一种具体实现中,所述的污点传播轨迹记录过程中,所述探针追踪的污点数据,可以包括字符串数据等。
进一步,可选地,在上述实现方式中一种具体实现中,所述的污点传播轨迹记录过程中,通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,在所述探针切点下,可以有且不少于一个的所述原始输入污点数据/衍生污点数据/汇聚输入污点数据。
进一步,可选地,在上述实现方式中一种具体实现中,所述的污点传播轨迹记录过程中,在所述污点传播事件信息中,所述切点下污点传播轨迹中的单一衍生污点数据,可以有且不少于一个的所述衍生污点数据对应的传播输入污点数据。
进一步,可选地,在上述实现方式中一种具体实现中,所述的污点传播轨迹记录,还可以包括:将所述切点下污点传播轨迹中的所述污点数据/所述污点数据唯一特征信息,或所述切点下污点传播轨迹中的所述污点数据/所述污点数据的唯一特征信息、与其对应的事件类型和/或函数信息,记录到树形数据结构。
进一步,可选地,在上述实现方式中一种具体实现中,所述污点源输入/污点传播/污点汇聚事件信息标识,对应所述事件类型,可以包括:所述原始输入污点数据/衍生污点数据/汇聚输入污点数据,或对应的所述污点数据的唯一特征信息。
再进一步,可选地,在上述实现方式中一种具体实现中,其中通过所述污点数据/所述污点数据唯一特征信息作为所述事件信息标识,则还可以在所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息中的切点下污点传播轨迹中对应地缺省作为所述标识的所述污点数据/所述污点数据唯一特征信息。
进一步,可选地,在上述实现方式中一种具体实现中,所述污点传播路径信息可以包括:回放的所述污点传播轨迹所经过的污点源函数/污点传播函数/污点汇聚函数的函数序列,所述函数序列中的函数信息,包括所述函数的限定函数名称。
再进一步,可选地,在上述实现方式中一种具体实现中,所述函数序列中的函数信息中除其限定函数名称外,还包括:所述函数的函数调用栈,和/或,对应的原始输入污点数据/传播输入污点数据及其衍生数据/汇聚输入污点数据,所述衍生数据包括所述传播输入污点数据污染的衍生污点数据和/或包括所述衍生污点数据的方法参数/返回值。
结合第一方面的第一种可能实现方式、或上述第一种可能实现方式中的第三种可能实现方式、或上述第三种可能实现方式中的第一种可能实现方式等具体实现中,所述污点数据的唯一特征信息,可以包括所述污点数据的存储地址或摘要信息等。
可选地,在第一方面的一种实现方式中,在目标应用程序运行过程中,具体在所述请求处理过程中,可以有不少于一个的污点源函数/污点传播函数/污点汇聚函数被触发并通过所述探针记录相关污点传播轨迹。
可选地,在第一方面的一种实现方式中,在所述请求处理过程中,对于所述探针插桩的污点源函数/污点传播函数/污点汇聚函数,可以是:被多次触发并记录相关污点传播轨迹。
可选地,在第一方面的一种实现方式中,所述污点传播函数可以包括编码函数、解码函数;在动态污点传播分析过程中,所述编码函数、解码函数均可以被视为广义的传播函数。
可选地,在第一方面的一种实现方式中,在所述污点传播函数中,可以是自定义部分所述污点传播函数为清洁函数,以相关探针切点下的污点数据和污点和阻断其传播。
可选地,在第一方面的一种实现方式中,所述的通过Agent程序在目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针,可以采用动态插桩模式或静态插桩模式插桩所述探针。其中,所述的采用动态插桩模式插桩探针,可以包括:在目标应用程序运行的服务器端部署Agent程序;使所述Agent程序在目标应用程序运行过程中对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针;所述的采用静态插桩模式插桩所述探针,可以包括:通过修改代码或编译插桩来插桩所述探针;所述Agent程序包括所述探针代码或探针二进制文件,在目标应用程序运行过程中部署所述Agent程序,通过所述Agent程序部署对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针。
在本公开的第二方面中,提供了一种在线污点传播分析***,该***用于执行前述第一方面的方法及其各种实现方式中动态污点追踪的各个过程。该***包括:污点传播轨迹记录单元和污点传播路径重放单元;所述污点传播轨迹记录单元用于污点传播轨迹的记录;所述污点传播轨迹记录单元被配置得:通过在目标应用程序运行的服务器端部署Agent程序,在目标应用程序运行过程中对目标应用程序的污点源函数、污点传播函数、污点输出函数插桩探针以监测所述函数的执行,并在目标应用程序请求处理过程中通过所述探针监测当前请求处理过程中所述污点源函数、污点传播函数、污点汇聚函数的执行记录其中污点传播轨迹;所述污点传播路径重放单元用于污点传播路径的在线重放;所述污点传播路径重放单元被配置得:通过所述探针监测污点汇聚事件的触发,并在污点汇聚事件触发后,根据所述污点传播轨迹记录单元记录的相关污点传播轨迹即时还原当前污点汇聚事件所从属的污点传播路径;其中,所述污点传播轨迹记录单元通过所述探针分别获取其探针切点下相应的事件信息以记录所述污点传播轨迹,所述事件信息主要包括当前探针所获事件的事件类型、当前切点下污点传播轨迹和函数信息;所述事件类型包括污点源输入型事件、污点传播型事件、污点汇聚型事件;所述函数信息包括当前探针所插桩的函数的限定函数名称。
在本公开的第三方面中,提供了一种动态污点追踪装置。该装置包括:至少一个处理器,和至少一个处理器耦合的存储器,以及存储在存储器中的计算机程序;其中的处理器执行所述计算机程序,能够实现第一方面述及的动态污点追踪方法。
在本公开的第四方面中,提供了一种计算机可读存储介质。该计算机可读存储介质上存储有软件程序污点传播分析相关的计算机指令;该计算机指令在被计算机处理器执行时能够实现第一方面述及的动态污点追踪方法。
在本公开的第五方面中,提供了一种计算机程序产品。该程序产品包括计算机程序,该计算机程序在被计算机处理器执行时能够实现第一方面述及的动态污点追踪方法。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素,其中:
图1示出了本公开的实施例中提出的动态污点追踪的过程的示意图;
图2示出了本公开的实施例中的记录污点传播轨迹的过程的示意图;
图3示出了本公开的实施例中的还原污点传播路径的过程的示意图;
图4示出了本公开的实施例中提出的在线污点传播分析***的框图;
图5示出了能够实施本公开的多个实施例的计算设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
在本公开的实施例的描述中,技术术语“目标应用程序”,是指任一的作为目标对象的应用程序;在本公开的实施例的实施一般应用于软件分析与测试中,而在软件分析与测试的应用中,“目标应用程序”是指待分析或测试的应用软件。技术术语“污点源函数”是指直接引入污点数据(不受信任的数据)到***的函数;“污点汇聚函数”是指因污点数据输入、传播最终直接产生安全敏感操作(违反数据完整性)或者泄露隐私数据到外部(违反数据保密性)的函数;“污点传播函数”是指“污点源函数”与“污点汇聚函数”间与污点数据传播相关的函数;在动态污点分析研究与实践中,往往不同于静态污点分析中污点数据无害处理同污点传播分析过程同步进行,而是将对污点数据传播的无害化独立于动态污点传播分析、置于动态污点传播分析后进行专门的无害化分析,因此本公开中的“污点传播函数”是广义的“污点传播函数”,主要是指在不考虑数据无害化处理的前提下必然导致污点数据传播的函数;且更进一步地,本申请公开的相关方案主要旨在追踪应用程序运行时(runtime)污点数据的传播;换而言之,即主要是追踪目标应用程序处理请求输入时的污点数据传播,故本公开中的“污点源函数”、“污点传播函数”、“污点汇聚函数”更具体地在其本质上是与应用逻辑相关的函数(而并不涉及应用程序运行时环境以下的操作***或平台)。技术术语“探针切点”,亦简称“切点”,是指所述探针在其所插桩函数形成的切点,所述探针能够通过所述探针切点获取该切点下的信息,包括但不限于所述探针插桩函数的函数信息、请求处理过程中经过所述函数(也即触发所述函数)时的方法参数(包括经过该函数的输入和输出)和返回值等。在软件开发中,“限定函数名称”是指为避免与其他代码中的函数名称冲突而在代码中使用命名空间、类名、模块名等限定符进而将函数名称限定在特定作用域的一种函数信息表达方式;限定函数名称通常被表达为:“限定函数名称作用域的标识”+“函数(方法)名称”;不同的编程语言下,其限定函数名称的表达方式略有不同;例如,Java使用包名来限定函数名称的作用域,Python使用模块名来限定函数名称的作用域,PHP使用命名空间来限定函数名称的作用域等。总之,限定函数名称是可以作为识别相关函数的唯一标识,可以在不同的编程语言和环境中使用。
污点分析技术一直是保障信息安全、防止信息完整性和保密性被破坏的有效手段。随着移动互联网的飞速发展和Web应用技术的更新迭代,与之相关的应用软件漏洞攻击、隐私数据泄露等安全问题层出不穷,越发成为当下网络安全的热点和难点。在解决上述安全问题的实践中,得益于程序分析等相关技术的发展,污点分析在针对上述应用程序(例如Web应用、部分移动终端应用等)的安全分析测试方面能够落实更加精确、高效的分析检测。
在相关实践中,污点分析的对象主要针对目标应用程序请求处理过程中与业务逻辑相关的数据流,换而言之,主要也就是应用程序运行时环境中运行的代码/业务逻辑数据展开相关分析;而污点传播分析则是实现精确、高效分析测试的基础和重点。而如前文所述,污点传播分析可被分为静态污点传播分析模式和动态污点传播分析模式。其中,静态污点传播分析是指在不运行且不修改代码的前提下,通过分析程序变量间的数据依赖关系来检测(污点)数据能否从污点源传播到污点汇聚点。同样如前文所述,静态污点传播分析模式的缺陷严重制约了其在上述应用软件安全分析测试实践中的应用。而动态污点传播分析模式,尤其是基于插桩的动态污点传播分析无疑是上述实践中的最佳选择。当然,要在应用程序运行过程中对沿复杂路径传播的污点数据实现及时有效且低成本的跟踪,仍需要克服前面列举的诸多问题。
根据本公开的实施例,提出了一种动态污点追踪方案,旨在克服以上追踪污点数据传播过程中的种种问题。在该方案中,主要通过部署Agent程序和在目标应用程序运行过程中通过所述Agent程序在目标应用程序的第一输入函数、第一传播函数、第一输出函数插桩探针进行监测,继而在目标应用程序处理请求输入时,通过所述探针监测所述函数执行记录其污点传播轨迹,以及在污点汇聚事件触发后及时根据所述污点传播轨迹还原相关污点传播路径。通过上述方案的实施,无疑有助于软件开发测试人员实现对目标应用程序运行时的污点数据复杂传播的有效监控与即时响应、精准分析以及全面覆盖,进而以此为基础实现对目标应用程序中疑似可利用路径的快速且高效地发现和识别。
以下将参照附图来具体描述本公开的实施例。
图1示出了本公开的实施例中提出的动态污点追踪的过程的示意图。如图1所示,所述的动态污点追踪的过程100,主要包括:101,在目标应用程序运行的服务器端部署Agent程序;在目标应用程序运行过程中,通过所述Agent程序在目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针,继而在目标应用程序处理请求输入时,以所述探针监测所述污点源函数、污点传播函数、污点汇聚函数执行,记录当前请求处理过程中的污点传播轨迹;以及102,与此同时以所述探针监测污点汇聚事件触发,并在所述污点汇聚事件触发后,根据前面过程中记录的相关污点传播轨迹即时还原当前污点汇聚事件所从属的污点传播路径。其中,为了实现对目标应用程序中复杂路径下污点传播的有效追踪,在101中,主要通过被污点传播触发的所述探针分别获取其探针切点下相应的事件信息来落实所述的污点传播轨迹记录;具体来说,所述的事件信息,可以主要包括:当前探针所获事件的事件类型、当前切点下污点传播轨迹和函数信息;对应于所述污点源函数、污点传播函数、污点汇聚函数,所述事件类型包括污点源输入型事件、污点传播型事件、污点汇聚型事件;所述函数信息可以包括当前探针所插桩的函数的限定函数名称;所述限定函数名称旨在唯一标识当前函数。在相关实施例中,通常还将上述的污点传播轨迹信息记录在同一请求的上下文空间中,即所述当前请求的上下文空间中。
在一些实施例中,在101,可以是通过所述探针获取其探针切点下相应的污点数据来描述其所获所述事件信息中的切点下污点传播轨迹,所述污点数据可以是包括原始输入污点数据/衍生污点数据及其传播输入污点数据/汇聚输入污点数据。其中,图2示出了上述一些实施例中的记录污点传播轨迹的过程的示意图。如图2所示,其中的记录污点传播轨迹的过程200,可以包括:201,以所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据;其中,对于每一次所述污点源函数/污点传播函数/污点汇聚函数的触发执行(即有数据经过时),对应地检测所述函数输入,捕捉及追踪当前探针切点下的原始输入污点数据/传播输入污点数据及其衍生污点数据/汇聚输入污点数据,其中的传播输入污点数据及其衍生污点数据的捕捉与追踪,主要是通过捕捉(所述函数当前执行输入中)所述传播输入污点数据,继而透过预先配置以获取其在相应方法参数/返回值(即所述函数当前执行输出)中的衍生污点数据,以实现对其衍生污点数据的追踪;202,对于每一次追踪检测,若捕获追踪到相关污点数据,则继而根据捕捉和追踪所获污点数据信息及其他探针所获信息一并生成所述污点数据在该探针切点下所关联的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息,并将所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息及其标识记录到集合容器中;其中,所述的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息均包括当前切点下污点传播轨迹,对应其事件类型,所述切点下污点传播轨迹可以包括:所述探针获取的原始输入污点数据/衍生污点数据及其传播输入污点数据/汇聚输入污点数据,或对应的所述污点数据的唯一特征信息。对于是获取所述污点数据抑或是所述污点数据唯一特征信息来描述所述切点下污点传播轨迹,其中可以是,当所述探针仅能获取原始类型数据时,优选获取所述污点数据唯一特征信息来描述所述切点下污点传播轨迹。这是由于原始类型数据在对象创建前即可直接使用,亦由此实践中也难以区分具有相同值的两个或多个所获原始类型数据;故而当所述探针仅捕获原始类型数据时,尤其可以通过相关所述污点数据的唯一特征信息来描述所述切点下污点传播轨迹。
对应于上述实施例中的记录污点传播轨迹的过程200,在相关实施例中,在102,同样可以是通过所述探针获取其探针切点下所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息的切点下污点传播轨迹中的污点数据来还原相关污点传播路径。其中,图3示出了上述一些实施例中的还原污点传播路径的过程的示意图。如图3所示,其中的还原污点传播路径的过程300,可以包括:301,透过对污点汇聚函数执行中其探针切点下的汇聚输入污点数据的追踪(即在污点汇聚函数捕捉到所述汇聚输入污点数据),以所述探针实时监控污点汇聚事件的触发以便及时发起还原污点传播路径的操作;以及302,在所述探针监测到污点汇聚事件触发后,根据所述集合容器中相应的污点汇聚事件信息中的污点数据回溯,寻找其上游污染事件,以及继而根据相应的事件信息及其中污点数据,逐个事件后向溯源,回放当前触发污点汇聚事件所从属的污点传播轨迹。
附加地,在上述一些实施例的具体实现中,所述的污点传播轨迹记录过程中,所述探针追踪的污点数据,可以包括字符串数据等;通过对字符串数据对象等的污点监测和传播分析,有助于发现字符串数据相关的安全风险。
附加地,在上述一些实施例的具体实现中,所述的污点传播轨迹记录过程中,通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,在所述探针切点下,可以有且不少于一个的所述原始输入污点数据/衍生污点数据/汇聚输入污点数据;在同一个探针切点下存在多个相关污点数据,是目标应用程序运行时污点沿复杂路径传播的一种表现,亦是造成复杂污点传播路径的根本原因,尽可能完整地获取探针切点下相关污点数据信息,有助于减少污点传播路径漏报。
附加地,在上述一些实施例的具体实现中,所述的污点传播轨迹记录过程中,在所述污点传播事件信息中,所述切点下污点传播轨迹中的单一衍生污点数据,可以有且不少于一个的所述衍生污点数据对应的传播输入污点数据;同一个衍生污点数据被多个传播输入污点数据污染亦是目标应用程序运行时污点沿复杂路径传播的一种表现,尽可能完整地获取探针切点下相关污点数据信息,有助于在还原相关污点传播路径过程中减少漏报。
附加地,在上述一些实施例的具体实现中,所述的污点传播轨迹记录,还可以包括:将所述切点下污点传播轨迹中的所述污点数据/所述污点数据唯一特征信息,或所述切点下污点传播轨迹中的所述污点数据/所述污点数据的唯一特征信息、与其对应的事件类型和/或函数信息,记录到树形数据结构;通过树形数据结构的记录,更加直观地表示整个污点传播过程的层次关系和各函数间传播污染关系。
附加地,在上述一些实施例的具体实现中,所述污点源输入/污点传播/污点汇聚事件信息标识,对应所述事件类型,可以包括:所述原始输入污点数据/衍生污点数据/汇聚输入污点数据,或对应的所述污点数据的唯一特征信息;通过所述污点标识,有助于后续污点传播路径还原过程中快速查询相关污点数据以提高溯源效率。
进一步附加地,在上述一些实施例的具体实现中,其中通过所述污点数据/所述污点数据唯一特征信息作为所述事件信息标识,则在所述污点数据/所述污点数据唯一特征信息作为所述事件信息标识时,还可以是在所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息中的切点下污点传播轨迹中对应地缺省作为所述标识的所述污点数据/所述污点数据唯一特征信息;通过缺省相关污点数据/污点数据唯一特征信息,有助于进一步减少记录在集合容器中的相关数据,降低存储开销的同时,亦有利于相关数据的上传记录和查询。
附加地,在上述一些实施例的具体实现中,其中一些通过所述污点数据唯一特征信息描述所述事件信息中的切点下污点传播轨迹,其中一些则进一步通过所述污点数据唯一特征信息作为所述事件信息的标识,则在前面所述的一些实施例中,其中的所述污点数据的唯一特征信息,还可以是包括但不限于:所述污点数据的存储地址、摘要信息等,通过存储地址或摘要信息作为所述事件信息的标识,主要旨在解决无法区分相关污点数据而难以落实污点追踪等难题。
附加地,在上述一些实施例的具体实现中,所述污点传播路径信息可以包括:回放的所述污点传播轨迹所经过的污点源函数/污点传播函数/污点汇聚函数的函数序列,所述函数序列中的函数信息,包括所述函数的限定函数名称;通过所述函数序列展示所述污点传播轨迹,有助于软件开发测试人员分析安全问题的形成原因和更加直观展示被攻击利用的路径信息。
进一步附加地,在上述一些实施例的具体实现中,所述污点传播路径信息中的所述函数序列中的函数信息,除其限定函数名称外,还可以包括但不限于:所述函数的函数调用栈、对应的原始输入污点数据/传播输入污点数据及其衍生数据/汇聚输入污点数据等;所述衍生数据包括所述传播输入污点数据污染的衍生污点数据、包括所述衍生污点数据的方法参数/返回值等的一种或多种;通过进一步捕获和丰富污点传播路径上的信息,无疑更加有助于软件开发测试人员分析安全问题的形成原因。例如,其中的函数调用栈信息能够帮助软件开发测试人员进一步了解更加底层的、未插桩位置的程序运行状况;相关污点数据及方法参数、返回值等,无疑更加清晰地还原了污点传播细节,亦相当于对漏洞攻击利用的模拟,或可帮助软件开发测试人员更加直观地发现相关问题;上述信息无疑有助于软件开发测试人员定位安全问题。
在一些实施例中,在101,在目标应用程序运行过程中,具体在所述请求处理过程中,可以有不少于一个的污点源函数/污点传播函数/污点汇聚函数被触发并通过所述探针记录相关污点传播轨迹;故考虑到污点传播的复杂,在配置和插桩所述探针时,应充分识别所述污点源函数、污点传播函数、污点汇聚函数,以避免污点传播路径等相关信息漏报。
在一些实施例中,在101,在所述请求处理过程中,对于所述探针插桩的污点源函数/污点传播函数/污点汇聚函数,可以是:被多次触发并记录相关污点传播轨迹;一次请求输入的数据,不免多次经过通过一个函数,尤其是一些插桩函数本就运行在运行时环境之上,甚至是属于一些经典框架/组件,不免重复调用,因此要通过不遗漏的记录,以避免污点传播路径等相关信息漏报。
在一些实施例中,在101,所述污点传播函数可以包括编码函数、解码函数;在动态污点传播分析过程中,所述编码函数、解码函数均可以被视为广义的污点传播函数。虽然在这里的污点传播分析中定义了所述编码函数、解码函数为广义的污点传播函数,但是并不影响污点分析结果,在动态污点传播分析的路径信息上后续还将展开无害化分析,以确保最终污点分析结果的准确。
在一些实施例中,在101,在所述污点传播函数中,可以是自定义部分所述污点传播函数为清洁函数,以相关探针切点下的污点数据和污点和阻断其传播;通过确定的清洁函数的设置,无疑将减少记录在集合容器中的相关数据。
在一些实施例中,在101,所述的通过Agent程序在目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针可以采用动态插桩模式;所述的采用动态插桩模式的插桩探针,主要包括:在目标应用程序运行的服务器端部署Agent程序,以所述Agent程序在目标应用程序运行过程中通过字节码修改等方式在编程语言运行时环境(runtime)中(以Java为例,比如JVM虚拟机环境)对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针。
在一些实施例中,在101,所述的插桩探针可以采用静态插桩模式;其中,典型的静态模式主要包括:通过修改代码或编译插桩来插桩所述探针。更具体地,所述的通过修改代码或编译插桩来插桩所述探针,主要是指所述Agent程序包括所述探针代码或探针二进制文件;进而在目标应用程序运行过程中部署所述Agent程序,随着目标应用程序运行自动部署所述Agent程序,在所述Agent程序自行部署过程中即实现了对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针。
图4示出了本公开的实施例中提出的在线污点传播分析***的框图。该如图4所示,在线污点传播分析***400,主要包括:污点传播轨迹记录单元410和污点传播路径重放单元420;其中,所述污点传播轨迹记录单元410用于记录相关污点传播轨迹;所述污点传播轨迹记录单元410被配置得:通过在目标应用程序运行的服务器端部署Agent程序,在目标应用程序运行过程中对目标应用程序的污点源函数、污点传播函数、污点输出函数插桩探针以监测所述函数的执行,并在目标应用程序请求处理过程中通过所述探针监测当前请求处理过程中所述污点源函数、污点传播函数、污点汇聚函数的执行记录其中污点传播轨迹;所述污点传播路径重放单元420用于在线重放污点传播路径;所述污点传播路径重放单元420被配置得:通过所述探针监测污点汇聚事件的触发,并在污点汇聚事件触发后,根据所述污点传播轨迹记录单元410记录的相关污点传播轨迹即时还原当前污点汇聚事件所从属的污点传播路径;其中,所述污点传播轨迹记录单元410,被配置得通过所述探针分别获取其探针切点下相应的事件信息来记录所述污点传播轨迹;而所述事件信息主要包括当前探针所获事件的事件类型、当前切点下污点传播轨迹和函数信息;所述事件类型包括污点源输入型事件、污点传播型事件、污点汇聚型事件;所述函数信息包括所述函数的限定函数名称。在相关实施例中,所述污点传播轨迹记录单元410通常还被配置得:将上述的污点传播轨迹信息记录在同一请求的上下文空间中,即所述当前请求的上下文空间中。
在一些实施例中,所述污点传播轨迹记录单元410,可以被配置得能够通过所述探针获取其探针切点下相应的污点数据来描述其所获所述事件信息中的切点下污点传播轨迹,所述污点数据包括原始输入污点数据/衍生污点数据及其传播输入污点数据/汇聚输入污点数据。基于上述实现的要求,所述污点传播轨迹记录单元410记录污点传播轨迹,可以被配置得包括:以所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据;其中,对于每一次所述污点源函数/污点传播函数/污点汇聚函数的触发执行,对应地检测所述函数输入,捕捉及追踪当前探针切点下的原始输入污点数据/传播输入污点数据及其衍生污点数据/汇聚输入污点数据,其中所述传播输入污点数据及其衍生污点数据的捕捉与追踪,主要是以捕获所述函数输入中的传播输入污点数据,并通过预先配置以追踪所述函数输出中所述传播输入污点数据的衍生污点数据;以及在追踪到相关污点数据时,继而根据捕捉和追踪所获污点数据信息及其他探针所获信息一并生成所述污点数据在该探针切点下所关联的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息,并将所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息及其标识记录到集合容器中;其中,所述的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息均包括当前切点下污点传播轨迹,对应其事件类型,所述切点下污点传播轨迹可以包括:所述探针获取的原始输入污点数据/衍生污点数据及其传播输入污点数据/汇聚输入污点数据,或对应的所述污点数据的唯一特征信息。其中,当所述探针仅捕获原始类型数据时,所述污点传播轨迹记录单元410记录污点传播轨迹,尤其可以被配置为通过相关所述污点数据的唯一特征信息来描述所述切点下污点传播轨迹。
对应于上述实施例中的所述污点传播轨迹记录单元410记录污点传播轨迹的实现,在相关实施例中,所述污点传播路径重放单元420可以被配置得通过所述探针获取其探针切点下所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息的切点下污点传播轨迹中的污点数据来还原相关污点传播路径。基于该实现的要求,所述污点传播路径重放单元420还原污点传播路径可以被对应地配置为包括:透过所述污点传播轨迹记录单元410对污点汇聚函数执行中其探针切点下的汇聚输入污点数据的追踪,以所述探针实时监控污点汇聚事件的触发;以及在所述探针监测到污点汇聚事件触发后,根据所述集合容器中相应的污点汇聚事件信息中的污点数据回溯,寻找其上游污染事件,以及继而根据相应的事件信息及其中污点数据,逐个事件后向溯源,回放当前触发污点汇聚事件所从属的污点传播轨迹。
附加地,在上述一些实施例的具体实现中,所述污点传播轨迹记录单元410记录污点传播轨迹,可以被配置得还包括:在所述的污点传播轨迹记录过程中,使所述探针能够追踪的污点数据还包括字符串数据等,以发现目标应用程序运行时字符串数据相关的污点传播情况。
附加地,在上述一些实施例的具体实现中,所述污点传播轨迹记录单元410记录污点传播轨迹,可以被配置得还包括:在所述污点传播轨迹记录过程中,通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,追踪在所述探针切点下可能有且不少于一个的所述原始输入污点数据/衍生污点数据/汇聚输入污点数据,以减少漏报。
附加地,在上述一些实施例的具体实现中,所述污点传播轨迹记录单元410记录污点传播轨迹,可以被配置得还包括:所述的污点传播轨迹记录过程中,在所述污点传播事件信息中,对于所述切点下污点传播轨迹中的单一衍生污点数据,能够捕获到不少于一个的所述衍生污点数据对应的传播输入污点数据;通过尽可能完整地获取相关污点数据信息,以减少污点传播分析过程中的漏报。
附加地,在上述一些实施例的具体实现中,所述污点传播轨迹记录单元410记录污点传播轨迹,可以被配置得还包括:将所述切点下污点传播轨迹中的所述污点数据/所述污点数据唯一特征信息,或所述切点下污点传播轨迹中的所述污点数据/所述污点数据的唯一特征信息、与其对应的事件类型和/或函数信息,记录到树形数据结构,以直观地记录和描述整个污点传播过程的层次关系和各函数间传播污染关系。
附加地,在上述一些实施例的具体实现中,所述污点传播轨迹记录单元410记录污点传播轨迹,可以被配置得还包括:使所述污点源输入/污点传播/污点汇聚事件信息标识,对应所述事件类型,包括:所述原始输入污点数据/衍生污点数据/汇聚输入污点数据,或对应的所述污点数据的唯一特征信息,以通过相关污点数据或其唯一特征信息标识相关事件信息,进而提高后续污点传播路径还原过程溯源效率。
进一步附加地,在上述一些实施例的具体实现中,所述污点传播轨迹记录单元410被配置得通过所述污点数据/所述污点数据唯一特征信息作为所述事件信息标识时,可以进一步被配置得:在所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息中的切点下污点传播轨迹中对应地缺省作为所述标识的所述污点数据/所述污点数据唯一特征信息,以减少需要记录在集合容器中的相关数据。
附加地,在上述相关实施例的具体实现中,所述污点传播轨迹记录单元410被配置得:或通过所述污点数据唯一特征信息描述所述事件信息中的切点下污点传播轨迹,或进一步通过所述污点数据唯一特征信息作为所述事件信息的标识时,其中一些实施例的具体实现中,使所述污点数据的唯一特征信息,可以被配置得包括但不限于是:所述污点数据的存储地址、摘要信息等。
附加地,在上述一些实施例的具体实现中,所述污点传播路径重放单元420还原所获的所述污点传播路径信息可以包括:回放的所述污点传播轨迹所经过的污点源函数/污点传播函数/污点汇聚函数的函数序列,所述函数序列中的函数信息,包括所述函数的限定函数名称,以便利于软件开发测试人员发现安全问题的形成原因。
进一步附加地,在上述一些实施例的具体实现中,所述污点传播路径信息中的函数序列中的函数信息,除其限定函数名称外,还可以包括但不限于:所述污点传播路径信息中的所述函数序列中的函数信息,除其限定函数名称外,还可以包括但不限于:所述函数的函数调用栈、对应的原始输入污点数据/传播输入污点数据及其衍生数据/汇聚输入污点数据、所述衍生数据包括所述传播输入污点数据污染的衍生污点数据、包括所述衍生污点数据的方法参数/返回值等的一种或多种,以最大限度辅助软件开发测试人员分析发现甚至定位相关安全问题。
在一些实施例中,所述污点传播轨迹记录单元410记录污点传播轨迹,可以被配置得还包括:在目标应用程序运行过程中,能够支持不少于一个的污点源函数/污点传播函数/污点汇聚函数被触发并通过所述探针记录相关污点传播轨迹,以避免污点传播路径等相关信息漏报。
在一些实施例中,所述污点传播轨迹记录单元410记录污点传播轨迹,可以被配置得还包括:在所述请求处理过程中,对于其中所述探针插桩的污点源函数/污点传播函数/污点汇聚函数,能够支持被多次触发并记录相关污点传播轨迹以避免污点传播路径等相关信息漏报。
在一些实施例中,所述污点传播轨迹记录单元410所插桩的所述污点传播函数可以包括编码函数、解码函数。
在一些实施例中,所述污点传播轨迹记录单元410记录污点传播轨迹,可以被配置得还包括:在所述污点传播函数中,部分所述污点传播函数能够被自定义为清洁函数,以通过确定的清洁函数的设置减少记录在集合容器中的相关数据。
在一些实施例中,所述污点传播轨迹记录单元410记录污点传播轨迹,可以被配置得还包括:采用动态插桩模式插桩所述探针;所述动态插桩模式的插桩探针,主要包括:在目标应用程序运行的服务器端部署Agent程序,以所述Agent程序在目标应用程序运行过程中通过字节码修改等方式在编程语言运行时环境(runtime)中对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针。
在一些实施例中,所述污点传播轨迹记录单元410记录污点传播轨迹,可以被配置得还包括:采用静态插桩模式插桩所述探针;例如,通过修改代码或编译插桩来插桩所述探针。更具体地,所述的通过修改代码或编译插桩来插桩所述探针,主要是指所述Agent程序包括所述探针代码或探针二进制文件;进而在目标应用程序运行过程中部署所述Agent程序,随着目标应用程序运行自动部署所述Agent程序,在所述Agent程序自行部署过程中即实现了对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针。
在一些实施例中,还提出了一种用于实现动态污点追踪的装置。所述装置,具体地,可以是通过计算设备实施。图5示出了上述实施例的能够用来实施本公开的一些实施例的计算设备的框图。如图5所示,计算设备500,包括中央处理器(CPU)501,其能够根据存储在只读存储器(ROM)502的计算机程序指令或从存储单元508加载到随机访问存储器(RAM)503中的计算机程序指令,来执行各种适当的操作和处理,在(RAM)503中,还可以存储计算设备500操作所需的各种程序代码、数据。CPU501、ROM502、RAM503通过总线504彼此相连,且输入/输出(I/O)接口505也与总线504相连。计算设备500的一些部件通过I/O接口505接入,包括:输入单元506,如键鼠等;输出单元507,如显示器等;存储单元508,如磁盘、光盘、固态硬盘(SSD)等,以及通信单元509,如网卡、调制解调器等。通信单元509能够使计算设备500通过计算机网络与其他设备交换信息/数据。CPU501能够执行上述实施例中描述的各种方法和处理过程,例如过程100。在一些实施例中,过程100,可以被实现为计算机软件程序,其被例如存储单元508等的计算机可读介质。在一些实施例中,计算机程序的部分或全部被载入或安装到计算设备500。当计算机程序被加载到RAM503被CPU501执行时,能够执行过程100的部分或者全部操作。
本文中以上描述的功能都可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、负载可编程逻辑设备(CPLD)等等。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以独立地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

Claims (14)

1.一种动态污点追踪方法,其特征在于,该方法包括:
在目标应用程序运行的服务器端部署Agent程序;
在目标应用程序运行过程中,通过所述Agent程序在目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针;
继而在目标应用程序处理请求输入时,对于任一请求处理过程,通过所述探针监测其中所述污点源函数、污点传播函数、污点汇聚函数执行,记录其中污点传播轨迹;
以及在污点汇聚事件触发后,根据所述污点传播轨迹,即时还原当前污点汇聚事件所从属的污点传播路径;
其中,通过所述探针分别获取其探针切点下相应的事件信息以记录所述污点传播轨迹,所述事件信息主要包括当前探针所获事件的事件类型、当前切点下污点传播轨迹和函数信息;所述事件类型包括污点源输入型事件、污点传播型事件、污点汇聚型事件;所述函数信息包括当前探针所插桩的函数的限定函数名称。
2.根据权利要求1所述的方法,其特征在于,
通过获取相应的污点数据以描述所述事件信息中的切点下污点传播轨迹,所述污点数据包括原始输入污点数据/衍生污点数据及其传播输入污点数据/汇聚输入污点数据;
其中,所述的污点传播轨迹记录,包括:通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,继而捕获所述污点数据在该探针切点下所关联的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息,并将所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息及其标识记录到集合容器中;所述的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息包括当前切点下污点传播轨迹,所述切点下污点传播轨迹包括:所述探针获取的原始输入污点数据/衍生污点数据及其传播输入污点数据/汇聚输入污点数据,或对应的所述污点数据的唯一特征信息;
以及所述污点传播路径还原,包括:所述污点汇聚事件触发后,根据所述集合容器中相应的污点汇聚事件信息及污点传播事件信息、污点源输入事件信息中的切点下污点传播轨迹,后向溯源,回放当前触发污点汇聚事件所从属的污点传播轨迹。
3.根据权利要求2所述的方法,其特征在于,
所述的污点传播轨迹记录过程中,所述探针追踪的污点数据,包括字符串数据;
和/或,
通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,在所述探针切点下,有且不少于一个的所述原始输入污点数据/衍生污点数据/汇聚输入污点数据;
和/或,
在所述污点传播事件信息中,所述切点下污点传播轨迹中的单一衍生污点数据,有且不少于一个的所述衍生污点数据对应的传播输入污点数据;
和/或,
所述的污点传播轨迹记录,还包括:将所述切点下污点传播轨迹中的所述污点数据/所述污点数据唯一特征信息,或所述切点下污点传播轨迹中的所述污点数据/所述污点数据的唯一特征信息、与其对应的事件类型和/或函数信息,记录到树形数据结构;
和/或,
所述污点源输入/污点传播/污点汇聚事件信息标识,包括所述原始输入污点数据/衍生污点数据/汇聚输入污点数据,或对应的所述污点数据的唯一特征信息;
和/或,
所述污点传播路径信息包括回放的所述污点传播轨迹所经过的污点源函数/污点传播函数/污点汇聚函数的函数序列,所述函数序列中的函数信息,包括所述函数的限定函数名称。
4.根据权利要求3所述的方法,其特征在于,
其中通过所述污点数据/所述污点数据唯一特征信息作为所述事件信息标识,则在所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息中的切点下污点传播轨迹中对应地缺省作为所述标识的所述污点数据/所述污点数据唯一特征信息;
和/或,
其中的所述污点传播路径信息包括回放的所述污点传播轨迹所经过的污点源函数/污点传播函数/污点汇聚函数的函数序列时,所述函数序列中的函数信息中除其限定函数名称外,还包括:所述函数的函数调用栈,和/或,对应的原始输入污点数据/传播输入污点数据及其衍生数据/汇聚输入污点数据,所述衍生数据包括所述传播输入污点数据污染的衍生污点数据和/或包括所述衍生污点数据的方法参数/返回值。
5.根据权利要求2-4任一所述的方法,其特征在于,
所述污点数据的唯一特征信息,包括所述污点数据的存储地址或摘要信息。
6.根据权利要求1所述的方法,其特征在于,
在所述请求处理过程中,不少于一个的污点源函数/污点传播函数/污点汇聚函数被触发并通过所述探针记录相关污点传播轨迹;
和/或,
在所述请求处理过程中,对于所述探针插桩的污点源函数/污点传播函数/污点汇聚函数,被多次触发并记录相关污点传播轨迹;
和/或,
所述污点传播函数包括编码函数、解码函数;
和/或,
在所述污点传播函数中,自定义部分所述污点传播函数为清洁函数;
和/或,
所述的通过Agent程序在目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针,采用动态插桩模式/静态插桩模式插桩所述探针;其中,所述的采用动态插桩模式插桩探针,包括:在目标应用程序运行的服务器端部署Agent程序;使所述Agent程序在目标应用程序运行过程中对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针;所述的采用静态插桩模式插桩所述探针,包括:通过修改代码或编译插桩来插桩所述探针;所述Agent程序包括所述探针代码或探针二进制文件,在目标应用程序运行过程中部署所述Agent程序,通过所述Agent程序部署对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针。
7.一种在线污点传播分析***,其特征在于,该***包括:
污点传播轨迹记录单元和污点传播路径重放单元;
所述污点传播轨迹记录单元用于污点传播轨迹的记录;所述污点传播轨迹记录单元被配置得:通过在目标应用程序运行的服务器端部署Agent程序,在目标应用程序运行过程中对目标应用程序的污点源函数、污点传播函数、污点输出函数插桩探针以监测所述函数的执行,并在目标应用程序请求处理过程中通过所述探针监测当前请求处理过程中所述污点源函数、污点传播函数、污点汇聚函数的执行记录其中污点传播轨迹;
所述污点传播路径重放单元用于污点传播路径的重放;所述污点传播路径重放单元被配置得:通过所述探针监测污点汇聚事件的触发,并在污点汇聚事件触发后,根据所述污点传播轨迹记录单元记录的相关污点传播轨迹即时还原当前污点汇聚事件所从属的污点传播路径;
其中,所述污点传播轨迹记录单元通过所述探针分别获取其探针切点下相应的事件信息以记录所述污点传播轨迹,所述事件信息主要包括当前探针所获事件的事件类型、当前切点下污点传播轨迹和函数信息;所述事件类型包括污点源输入型事件、污点传播型事件、污点汇聚型事件;所述函数信息包括当前探针所插桩的函数的限定函数名称。
8.根据权利要求7所述的***,其特征在于,
所述污点传播轨迹记录单元被配置得:通过所述探针获取相应的污点数据以描述所述事件信息中的切点下污点传播轨迹,所述污点数据包括原始输入污点数据/衍生污点数据及其传播输入污点数据/汇聚输入污点数据;所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得包括:通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,继而捕获所述污点数据在该探针切点下所关联的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息,并将所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息及其标识记录到集合容器中;所述的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息包括当前切点下污点传播轨迹,所述切点下污点传播轨迹包括:所述探针获取的原始输入污点数据/衍生污点数据及其传播输入污点数据/汇聚输入污点数据,或对应的所述污点数据的唯一特征信息;
对应地,所述污点传播路径重放单元还原所述污点传播路径,被配置得包括:通过所述探针监测污点汇聚事件触发,并在污点汇聚事件触发后,根据所述污点传播轨迹记录在所述集合容器中的相应的污点汇聚事件信息及污点传播事件信息、污点源输入事件信息中的切点下污点传播轨迹,后向溯源,回放当前触发污点汇聚事件所从属的污点传播轨迹。
9.根据权利要求7所述的***,其特征在于,
所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得还包括:所述污点传播轨迹记录过程中,所述探针追踪的污点数据,包括字符串数据;
和/或,
所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得还包括:通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,追踪在所述探针切点下可能有且不少于一个的所述原始输入污点数据/衍生污点数据/汇聚输入污点数据;
和/或,
所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得还包括:在所述污点传播事件信息中,对于所述切点下污点传播轨迹中的单一衍生污点数据,能够捕获到不少于一个的所述衍生污点数据对应的传播输入污点数据;
和/或,
所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得还包括:将所述切点下污点传播轨迹中的所述污点数据/所述污点数据唯一特征信息,或所述切点下污点传播轨迹中的所述污点数据/所述污点数据的唯一特征信息、与其对应的事件类型和/或函数信息,记录到树形数据结构;
和/或,
所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得还包括:所述污点源输入/污点传播/污点汇聚事件信息标识,包括所述原始输入污点数据/衍生污点数据/汇聚输入污点数据,或对应的所述污点数据的唯一特征信息;
和/或,
所述污点传播路径重放单元还原所获的所述污点传播路径信息,包括回放的所述污点传播轨迹所经过的污点源函数/污点传播函数/污点汇聚函数的函数序列,所述函数序列中的函数信息,包括所述函数的限定函数名称。
10.根据权利要求7所述的***,其特征在于,
所述污点传播轨迹记录单元被配置得通过所述污点数据/所述污点数据唯一特征信息作为所述事件信息标识时,被配置得还包括:在所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息中的切点下污点传播轨迹中对应地缺省对应地缺省作为所述标识的所述污点数据/所述污点数据唯一特征信息;
和/或,
所述污点传播路径重放单元还原所获的所述污点传播路径信息,包括回放的所述污点传播轨迹所经过的污点源函数/污点传播函数/污点汇聚函数的函数序列时,所述函数序列中的函数信息中除其限定函数名称外,还包括:所述函数的函数调用栈,和/或,对应的原始输入污点数据/传播输入污点数据及其衍生数据/汇聚输入污点数据,所述衍生数据包括所述传播输入污点数据污染的衍生污点数据和/或包括所述衍生污点数据的方法参数/返回值。
11.根据权利要求8-10任一所述的***,其特征在于,
所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得还包括:所述的污点数据唯一特征信息包括所述污点数据的存储地址或摘要信息。
12.根据权利要求7所述的***,其特征在于
所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得还包括:在所述请求处理过程,能够支持不少于一个的污点源函数/污点传播函数/污点汇聚函数被触发并通过所述探针记录相关污点传播轨迹;
和/或,
所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得还包括:在所述请求处理过程中,对于其中所述探针插桩的污点源函数/污点传播函数/污点汇聚函数,能够支持被多次触发并记录相关污点传播轨迹;
和/或,
所述污点传播轨迹记录单元中***桩探针的所述污点传播函数包括编码函数、解码函数;
和/或,
所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得还包括:在所述污点传播函数中,部分所述污点传播函数能够被自定义为清洁函数;
和/或,
所述污点传播轨迹记录单元采用动态插桩模式/静态插桩模式插桩所述探针;其中,所述的采用动态插桩模式插桩所述探针,包括:在目标应用程序运行的服务器端部署Agent程序;使所述Agent程序在目标应用程序运行过程中对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针;所述的采用静态插桩模式插桩所述探针,包括:通过修改代码或编译插桩来插桩所述探针;所述Agent程序包括所述探针代码或探针二进制文件,在目标应用程序运行过程中部署所述Agent程序,通过所述Agent程序部署对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针。
13.一种动态污点追踪装置,其特征在于,该装置包括:
至少一个处理器,和至少一个处理器耦合的存储器,以及存储在存储器中的计算机程序;
其中的处理器执行所述计算机程序,能够实现权利要求1-6任一所述的动态污点追踪方法。
14.一种计算机可读存储介质,其特征在于,
该计算机可读存储介质上存储有软件程序污点传播分析相关的计算机指令;该计算机指令在被计算机处理器执行时能够实现权利要求1-6任一所述的动态污点追踪方法。
CN202310441463.0A 2023-04-23 2023-04-23 动态污点追踪方法、装置及相关在线污点传播分析*** Active CN116451228B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310441463.0A CN116451228B (zh) 2023-04-23 2023-04-23 动态污点追踪方法、装置及相关在线污点传播分析***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310441463.0A CN116451228B (zh) 2023-04-23 2023-04-23 动态污点追踪方法、装置及相关在线污点传播分析***

Publications (2)

Publication Number Publication Date
CN116451228A true CN116451228A (zh) 2023-07-18
CN116451228B CN116451228B (zh) 2023-10-17

Family

ID=87125287

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310441463.0A Active CN116451228B (zh) 2023-04-23 2023-04-23 动态污点追踪方法、装置及相关在线污点传播分析***

Country Status (1)

Country Link
CN (1) CN116451228B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116842531A (zh) * 2023-08-28 2023-10-03 北京安普诺信息技术有限公司 基于代码疫苗的漏洞实时验证方法、装置、设备及介质
CN117272331A (zh) * 2023-11-23 2023-12-22 北京安普诺信息技术有限公司 基于代码疫苗的跨线程漏洞分析方法、装置、设备及介质

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102081719A (zh) * 2009-12-01 2011-06-01 王伟 基于动态污染传播的软件安全测试***及方法
US20110145918A1 (en) * 2009-12-15 2011-06-16 Jaeyeon Jung Sensitive data tracking using dynamic taint analysis
CN103440201A (zh) * 2013-09-05 2013-12-11 北京邮电大学 动态污点分析装置及其在文件格式逆向解析中的应用
CN104063325A (zh) * 2014-07-11 2014-09-24 电子科技大学 一种针对嵌入式软件的测试用例自动化生成装置及其方法
CN104765687A (zh) * 2015-04-10 2015-07-08 江西师范大学 基于对象跟踪和污点分析的j2ee程序漏洞检测方法
CN105631340A (zh) * 2015-12-17 2016-06-01 珠海市君天电子科技有限公司 一种xss漏洞检测的方法及装置
CN106022132A (zh) * 2016-05-30 2016-10-12 南京邮电大学 一种基于动态内容分析的网页木马实时检测方法
CN110727598A (zh) * 2019-10-16 2020-01-24 西安电子科技大学 基于动态污点跟踪的二进制软件脆弱性检测***及方法
CN111046396A (zh) * 2020-03-13 2020-04-21 深圳开源互联网安全技术有限公司 web应用测试数据流跟踪方法及***
CN111191244A (zh) * 2019-12-11 2020-05-22 杭州孝道科技有限公司 一种漏洞修复方法
CN111737150A (zh) * 2020-07-24 2020-10-02 江西师范大学 面向Java EE程序SQLIA漏洞的污点分析和验证方法及装置
CN112199274A (zh) * 2020-09-18 2021-01-08 北京大学 基于V8引擎的JavaScript动态污点跟踪方法及电子装置
CN113127884A (zh) * 2021-04-28 2021-07-16 国家信息技术安全研究中心 一种基于虚拟化的漏洞并行验证方法及装置
CN113392347A (zh) * 2021-08-18 2021-09-14 北京安普诺信息技术有限公司 基于插桩的Web后端API获取方法及装置、存储介质
CN114422278A (zh) * 2022-04-01 2022-04-29 奇安信科技集团股份有限公司 检测程序安全性的方法、***以及服务器
CN115270131A (zh) * 2022-06-14 2022-11-01 中国科学院信息工程研究所 一种Java反序列化漏洞检测方法及***
CN115827610A (zh) * 2022-11-21 2023-03-21 杭州默安科技有限公司 一种有效负荷的检测方法及装置

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102081719A (zh) * 2009-12-01 2011-06-01 王伟 基于动态污染传播的软件安全测试***及方法
US20110145918A1 (en) * 2009-12-15 2011-06-16 Jaeyeon Jung Sensitive data tracking using dynamic taint analysis
CN103440201A (zh) * 2013-09-05 2013-12-11 北京邮电大学 动态污点分析装置及其在文件格式逆向解析中的应用
CN104063325A (zh) * 2014-07-11 2014-09-24 电子科技大学 一种针对嵌入式软件的测试用例自动化生成装置及其方法
CN104765687A (zh) * 2015-04-10 2015-07-08 江西师范大学 基于对象跟踪和污点分析的j2ee程序漏洞检测方法
CN105631340A (zh) * 2015-12-17 2016-06-01 珠海市君天电子科技有限公司 一种xss漏洞检测的方法及装置
CN106022132A (zh) * 2016-05-30 2016-10-12 南京邮电大学 一种基于动态内容分析的网页木马实时检测方法
CN110727598A (zh) * 2019-10-16 2020-01-24 西安电子科技大学 基于动态污点跟踪的二进制软件脆弱性检测***及方法
CN111191244A (zh) * 2019-12-11 2020-05-22 杭州孝道科技有限公司 一种漏洞修复方法
CN111046396A (zh) * 2020-03-13 2020-04-21 深圳开源互联网安全技术有限公司 web应用测试数据流跟踪方法及***
CN111737150A (zh) * 2020-07-24 2020-10-02 江西师范大学 面向Java EE程序SQLIA漏洞的污点分析和验证方法及装置
CN112199274A (zh) * 2020-09-18 2021-01-08 北京大学 基于V8引擎的JavaScript动态污点跟踪方法及电子装置
CN113127884A (zh) * 2021-04-28 2021-07-16 国家信息技术安全研究中心 一种基于虚拟化的漏洞并行验证方法及装置
CN113392347A (zh) * 2021-08-18 2021-09-14 北京安普诺信息技术有限公司 基于插桩的Web后端API获取方法及装置、存储介质
CN114422278A (zh) * 2022-04-01 2022-04-29 奇安信科技集团股份有限公司 检测程序安全性的方法、***以及服务器
CN115270131A (zh) * 2022-06-14 2022-11-01 中国科学院信息工程研究所 一种Java反序列化漏洞检测方法及***
CN115827610A (zh) * 2022-11-21 2023-03-21 杭州默安科技有限公司 一种有效负荷的检测方法及装置

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
51TESTING软件测试网: ""插桩"式技术", Retrieved from the Internet <URL:https://zhuanlan.zhihu.com/p/128623355> *
CH3NYE: "污点分析技术笔记", Retrieved from the Internet <URL:https://ch3nye.top/污点分析技术笔记/> *
MIN GYUNG KANG 等: "DTA++: Dynamic Taint Analysis with Targeted Control-Flow Propagation", CONFERENCE:PROCEEDINGS OF THE NETWORK AND DISTRIBUTED SYSTEM SYMPOSIUM, NDSS 2011 *
WILLIAM ENCK 等: "TaintDroid: An Information-Flow Tracking System for Realtime Privacy Monitoring on Smartphones", ACM TRANSACTIONS ON COMPUTER SYSTEMS, pages 1 - 28 *
王蕾 等: "污点分析技术的原理和实践应用", 软件学院, vol. 28, no. 4, pages 860 - 882 *
袁子牧;肖扬;吴炜;霍玮;邹维;: "知识、探索与状态平面组织的软件漏洞分析架构研究", 信息安全学报, no. 06 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116842531A (zh) * 2023-08-28 2023-10-03 北京安普诺信息技术有限公司 基于代码疫苗的漏洞实时验证方法、装置、设备及介质
CN116842531B (zh) * 2023-08-28 2023-11-03 北京安普诺信息技术有限公司 基于代码疫苗的漏洞实时验证方法、装置、设备及介质
CN117272331A (zh) * 2023-11-23 2023-12-22 北京安普诺信息技术有限公司 基于代码疫苗的跨线程漏洞分析方法、装置、设备及介质
CN117272331B (zh) * 2023-11-23 2024-02-02 北京安普诺信息技术有限公司 基于代码疫苗的跨线程漏洞分析方法、装置、设备及介质

Also Published As

Publication number Publication date
CN116451228B (zh) 2023-10-17

Similar Documents

Publication Publication Date Title
CN116451228B (zh) 动态污点追踪方法、装置及相关在线污点传播分析***
Cao et al. MVD: memory-related vulnerability detection based on flow-sensitive graph neural networks
Li et al. Where shall we log? studying and suggesting logging locations in code blocks
CN111756575B (zh) 存储服务器的性能分析方法及装置、电子设备
JP5978401B2 (ja) 分散システムにおいてユーザリクエストの実行を監視するための方法及びシステム
Bensalem et al. Dynamic deadlock analysis of multi-threaded programs
EP3566166B1 (en) Management of security vulnerabilities
CN116167058B (zh) 一种基于代码疫苗的运行时漏洞分析方法及装置
KR101796369B1 (ko) 소프트웨어 분석을 위한 리버스 엔지니어링 협업 장치, 방법 및 시스템
CN111625833B (zh) 一种高效的软件程序释放后重用漏洞判定方法和装置
CN107193732A (zh) 一种基于路径比对的校验函数定位方法
CN116842531B (zh) 基于代码疫苗的漏洞实时验证方法、装置、设备及介质
Xu et al. Melton: a practical and precise memory leak detection tool for C programs
CN111191248A (zh) 针对Android车载终端***的漏洞检测***及方法
CN116257848A (zh) 一种内存马检测方法
Ko et al. Fuzzing with automatically controlled interleavings to detect concurrency bugs
CN114036526A (zh) 漏洞测试方法、装置、计算机设备和存储介质
Huo et al. Interpreting coverage information using direct and indirect coverage
CN104750602B (zh) 一种动态污点数据分析方法及装置
CN116467712B (zh) 动态污点追踪方法、装置及相关污点传播分析***
CN112632547A (zh) 一种数据处理方法和相关装置
CN112612697A (zh) 一种基于字节码技术的软件缺陷测试定位方法及***
Bi et al. Benchmarking Software Vulnerability Detection Techniques: A Survey
CN115080426A (zh) 程序文件的检测方法及装置、存储介质和电子设备
CN113392033A (zh) 一种确定被动iast测试api覆盖率的方法及装置

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