动态污点追踪方法、装置及相关在线污点传播分析系统制造方法及图纸

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

【技术实现步骤摘要】
动态污点追踪方法、装置及相关在线污点传播分析系统


[0001]本申请公开的实施例主要涉及软件分析
,且更具体地,涉及一种动态污点追踪方法、装置及相关在线污点传播分析系统。

技术介绍

[0002]污点分析技术(Taint Analysis)是一种保障信息安全、防止信息完整性和保密性被破坏的有效手段,同时亦是网络与信息安全领域的重要研究方向。污点分析本质上是一种信息流分析技术,其关键在于:跟踪特定数据片段(即污点数据)在程序执行过程中的传播,以为其他分析提供支撑。其中,对污点传播的跟踪主要是通过污点传播分析实现。
[0003]污点传播分析是污点分析实践中的研究重点。根据分析过程中是否需要运行程序,污点传播分析可被分为静态污点传播分析模式和动态污点传播分析模式。其中,在静态污点传播分析模式下,虽然可在程序源码或其中间表示上分析程序变量间的数据依赖关系,以确定其中的污点传播路径,尤其是检测污点数据是否能够从污点源传播到污点汇聚点;但是静态污点传播分析的核心思考在于将污点传播的静态分析问题转化为对程序中静态数据依赖分析,故静态污点传播分析的实施往往需要遍历分析对象的全部程序源码或其中间表示,故而静态污点传播分析模式存在开销大、误差大等问题。动态污点传播分析模式是在程序运行过程中通过实时监控程序的污点数据在系统中的传播来检测污点数据是否能够从污点源传播到污点汇聚点;其中尤以基于插桩的动态污点传播分析为污点传播分析技术的最佳实践。基于插桩的动态污点传播分析不仅无需特定的底层硬件或虚拟机环境,而且更加贴近源程序层次而支持更高的语义逻辑的安全策略,应用广泛且适用于更加抽象的程序逻辑的污点传播分析。但是,基于插桩的动态污点传播分析会因插桩会带来开销,盲目地广布插桩点虽然有助于记录更加丰富的程序运行和污点传播细节,却也会给系统带来巨大开销,成为不可接受之重;而为应对系统开销选择精简插桩策略的一些现有方案,却仅支持被动跟踪简单线性路径下的污点传播(及其记录)。于是,如何在应用程序运行过程中对其中污点数据的复杂传播实现及时有效且低成本的跟踪,成为了污点传播分析技术实践中需要解决的技术问题。

技术实现思路

[0004]根据本申请公开的实施例,提供一种动态污点追踪方案,通过合理插桩和相应安全策略追踪、还原相应污点传播路径,以实现目标应用程序运行时的对其中污点数据复杂传播的有效监控与即时响应、精准分析以及全面覆盖,进而快速且高效地识别出其中的疑似可利用路径。
[0005]在本公开的第一方面中,提供一种动态污点追踪方法。该方法包括:在目标应用程序运行的服务器端部署Agent程序;在目标应用程序运行过程中,通过所述Agent程序在目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针;继而在目标应用程序处理请求输入时,通过所述探针监测所述污点源函数、污点传播函数、污点汇聚函数执行,记
录当前请求处理过程中的污点传播轨迹;以及在污点汇聚事件触发后,根据所述污点传播轨迹即时还原当前污点汇聚事件所从属的污点传播路径;其中的污点传播轨迹记录,主要通过所述探针分别获取其探针切点下相应的事件信息实现;具体地,所述事件信息,可以主要包括当前探针所获事件的事件类型、当前切点下污点传播轨迹和函数信息;对应于所述污点源函数、污点传播函数、污点汇聚函数,所述事件类型包括污点源输入型事件、污点传播型事件、污点汇聚型事件;所述函数信息可以包括当前探针所插桩的函数的限定函数名称。
[0006]可选地,在第一方面的一种实现方式中,可以是通过所述探针获取其探针切点下相应的污点数据来描述其所获所述事件信息中的切点下污点传播轨迹,所述污点数据可以是包括原始输入污点数据/衍生污点数据及其传播输入污点数据/汇聚输入污点数据;由此,进而所述的污点传播轨迹记录,可以包括:通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,继而捕获所述污点数据在该探针切点下所关联的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息,并将所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息及其标识记录到集合容器中;其中,所述的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息均包括当前切点下污点传播轨迹,对应其事件类型,所述切点下污点传播轨迹可以包括:所述探针获取的原始输入污点数据/衍生污点数据及其传播输入污点数据/汇聚输入污点数据,或对应的所述污点数据的唯一特征信息;对应地,所述污点传播路径还原,可以包括:在(任一)所述污点汇聚事件触发后,(均)根据所述集合容器中相应的污点汇聚事件信息及污点传播事件信息、污点源输入事件信息中的切点下污点传播轨迹,透过相关污点数据后向溯源,回放当前触发污点汇聚事件所从属的污点传播轨迹。
[0007]进一步,可选地,在上述实现方式中一种具体实现中,所述的污点传播轨迹记录过程中,所述探针追踪的污点数据,可以包括字符串数据等。
[0008]进一步,可选地,在上述实现方式中一种具体实现中,所述的污点传播轨迹记录过程中,通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,在所述探针切点下,可以有且不少于一个的所述原始输入污点数据/衍生污点数据/汇聚输入污点数据。
[0009]进一步,可选地,在上述实现方式中一种具体实现中,所述的污点传播轨迹记录过程中,在所述污点传播事件信息中,所述切点下污点传播轨迹中的单一衍生污点数据,可以有且不少于一个的所述衍生污点数据对应的传播输入污点数据。
[0010]进一步,可选地,在上述实现方式中一种具体实现中,所述的污点传播轨迹记录,还可以包括:将所述切点下污点传播轨迹中的所述污点数据/所述污点数据唯一特征信息,或所述切点下污点传播轨迹中的所述污点数据/所述污点数据的唯一特征信息、与其对应的事件类型和/或函数信息,记录到树形数据结构。
[0011]进一步,可选地,在上述实现方式中一种具体实现中,所述污点源输入/污点传播/污点汇聚事件信息标识,对应所述事件类型,可以包括:所述原始输入污点数据/衍生污点数据/汇聚输入污点数据,或对应的所述污点数据的唯一特征信息。
[0012]再进一步,可选地,在上述实现方式中一种具体实现中,其中通过所述污点数据/所述污点数据唯一特征信息作为所述事件信息标识,则还可以在所述污点源输入事件信
息/污点传播事件信息/污点汇聚事件信息中的切点下污点传播轨迹中对应地缺省作为所述标识的所述污点数据/所述污点数据唯一特征信息。
[0013]进一步,可选地,在上述实现方式中一种具体实现中,所述污点传播路径信息可以包括:回放的所述污点传播轨迹所经过的污点源函数/污点传播函数/污点汇聚函数的函数序列,所述函数序列中的函数信息,包括所述函数的限定函数名称。
[0014]再进一步,可选地,在上述实现方式中一种具体实现中,所述函数序列中的函数信息中除其限定函数名称外,还包括:所述函数的函数调用栈,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种动态污点追踪方法,其特征在于,该方法包括:在目标应用程序运行的服务器端部署Agent程序;在目标应用程序运行过程中,通过所述Agent程序在目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针;继而在目标应用程序处理请求输入时,对于任一请求处理过程,通过所述探针监测其中所述污点源函数、污点传播函数、污点汇聚函数执行,记录其中污点传播轨迹;以及在污点汇聚事件触发后,根据所述污点传播轨迹,即时还原当前污点汇聚事件所从属的污点传播路径;其中,通过所述探针分别获取其探针切点下相应的事件信息以记录所述污点传播轨迹,所述事件信息主要包括当前探针所获事件的事件类型、当前切点下污点传播轨迹和函数信息;所述事件类型包括污点源输入型事件、污点传播型事件、污点汇聚型事件;所述函数信息包括当前探针所插桩的函数的限定函数名称。2.根据权利要求1所述的方法,其特征在于,通过获取相应的污点数据以描述所述事件信息中的切点下污点传播轨迹,所述污点数据包括原始输入污点数据/衍生污点数据及其传播输入污点数据/汇聚输入污点数据;其中,所述的污点传播轨迹记录,包括:通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,继而捕获所述污点数据在该探针切点下所关联的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息,并将所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息及其标识记录到集合容器中;所述的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息包括当前切点下污点传播轨迹,所述切点下污点传播轨迹包括:所述探针获取的原始输入污点数据/衍生污点数据及其传播输入污点数据/汇聚输入污点数据,或对应的所述污点数据的唯一特征信息;以及所述污点传播路径还原,包括:所述污点汇聚事件触发后,根据所述集合容器中相应的污点汇聚事件信息及污点传播事件信息、污点源输入事件信息中的切点下污点传播轨迹,后向溯源,回放当前触发污点汇聚事件所从属的污点传播轨迹。3.根据权利要求2所述的方法,其特征在于,所述的污点传播轨迹记录过程中,所述探针追踪的污点数据,包括字符串数据;和/或,通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,在所述探针切点下,有且不少于一个的所述原始输入污点数据/衍生污点数据/汇聚输入污点数据;和/或,在所述污点传播事件信息中,所述切点下污点传播轨迹中的单一衍生污点数据,有且不少于一个的所述衍生污点数据对应的传播输入污点数据;和/或,所述的污点传播轨迹记录,还包括:将所述切点下污点传播轨迹中的所述污点数据/所述污点数据唯一特征信息,或所述切点下污点传播轨迹中的所述污点数据/所述污点数据的唯一特征信息、与其对应的事件类型和/或函数信息,记录到树形数据结构;
和/或,所述污点源输入/污点传播/污点汇聚事件信息标识,包括所述原始输入污点数据/衍生污点数据/汇聚输入污点数据,或对应的所述污点数据的唯一特征信息;和/或,所述污点传播路径信息包括回放的所述污点传播轨迹所经过的污点源函数/污点传播函数/污点汇聚函数的函数序列,所述函数序列中的函数信息,包括所述函数的限定函数名称。4.根据权利要求3所述的方法,其特征在于,其中通过所述污点数据/所述污点数据唯一特征信息作为所述事件信息标识,则在所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息中的切点下污点传播轨迹中对应地缺省作为所述标识的所述污点数据/所述污点数据唯一特征信息;和/或,其中的所述污点传播路径信息包括回放的所述污点传播轨迹所经过的污点源函数/污点传播函数/污点汇聚函数的函数序列时,所述函数序列中的函数信息中除其限定函数名称外,还包括:所述函数的函数调用栈,和/或,对应的原始输入污点数据/传播输入污点数据及其衍生数据/汇聚输入污点数据,所述衍生数据包括所述传播输入污点数据污染的衍生污点数据和/或包括所述衍生污点数据的方法参数/返回值。5.根据权利要求2

4任一所述的方法,其特征在于,所述污点数据的唯一特征信息,包括所述污点数据的存储地址或摘要信息。6.根据权利要求1所述的方法,其特征在于,在所述请求处理过程中,不少于一个的污点源函数/污点传播函数/污点汇聚函数被触发并通过所述探针记录相关污点传播轨迹;和/或,在所述请求处理过程中,对于所述探针插桩的污点源函数/污点传播函数/污点汇聚函数,被多次触发并记录相关污点传播轨迹;和/或,所述污点传播函数包括编码函数、解码函数;和/或,在所述污点传播函数中,自定义部分所述污点传播函数为清洁函数;和/或,所述的通过Agent程序在目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针,采用动态插桩模式/静态插桩模式插桩所述探针;其中,所述的采用动态插桩模式插桩探针,包括:在目标应用程序运行的服务器端部署Agent程序;使所述Agent程序在目标应用程序运行过程中对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针;所述的采用静态插桩模式插桩所述探针,包括:通过修改代码或编译插桩来插桩所述探针;所述Agent程序包括所述探针代码或探针二进制文件,在目标应用程序运行过程中部署所述Agent程序,通过所述Agent程序部署对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针。7.一种在线污点传播分析系统,其特征在于,该系统包括:
污点传播轨迹记录单元和污点传播路径重放单元;所述污点传播轨迹记录单元用于污点传播轨迹的记录;所述污点传播轨迹记录单元被配置得:通过在目标应用程序运行的服务器端部署Agent程序,在目标应用程序运行过程中对目标应用程序的污点源函数、污点传播函数、污点输出函数插桩探针以监测所述函数的执行,并在目标应用程序请求处理过程中通过所述探针监测当前请求处理过程中所述污点源函数、污点传播函数、污点汇聚函数的执行记录其中污点传播轨迹;所述污点传播路径重放单元用于污点传播路径的重放;所述污点传播路径重放单元被配置得:通过所述探针监测污点汇聚事件的触发,并在污点汇聚事件触发后,根据所述污点传播轨迹记录单元记录的相关污点传播轨迹即时还原当前污点汇聚事件所从属的污点传播路径;其中,所述污点传播轨迹记录单元通过所述探针分别获取其探针切点下相应的事件信息以记...

【专利技术属性】
技术研发人员:张涛宁戈周雅飞杜玉洁
申请(专利权)人:北京安普诺信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1