动态污点追踪方法、装置及相关污点传播分析系统与流程
未命名
07-27
阅读:120
评论:0
1.本技术公开的实施例主要涉及软件分析技术领域,且更具体地,涉及一种动态污点追踪方法、装置及相关污点传播分析系统。
背景技术:
2.污点分析技术(taint analysis)是一种保障信息安全、防止信息完整性和保密性被破坏的有效手段,同时亦是网络与信息安全领域的重要研究方向。污点分析本质上是一种信息流分析技术,其关键在于:跟踪特定数据片段(即污点数据)在程序执行过程中的传播,以为其他分析提供支撑。其中,对污点传播的跟踪主要是通过污点传播分析实现。
3.污点传播分析是污点分析实践中的研究重点。根据分析过程中是否需要运行程序,污点传播分析可被分为静态污点传播分析模式和动态污点传播分析模式。其中,在静态污点传播分析模式下,虽然可在程序源码或其中间表示上分析程序变量间的数据依赖关系,以确定其中的污点传播路径,尤其是检测污点数据是否能够从污点源传播到污点汇聚点;但是静态污点传播分析的核心思考在于将污点传播的静态分析问题转化为对程序中静态数据依赖分析,故静态污点传播分析的实施往往需要遍历分析对象的全部程序源码或其中间表示,故而静态污点传播分析模式存在开销大、误差大等问题。动态污点传播分析模式是在程序运行过程中通过实时监控程序的污点数据在系统中的传播来检测污点数据是否能够从污点源传播到污点汇聚点;其中尤以基于插桩的动态污点传播分析为污点传播分析技术的最佳实践。基于插桩的动态污点传播分析不仅无需特定的底层硬件或虚拟机环境,而且更加贴近源程序层次而支持更高的语义逻辑的安全策略,应用广泛且适用于更加抽象的程序逻辑的污点传播分析。但是,基于插桩的动态污点传播分析因插桩赋能分析测试工具数据內视能力的同时亦会带来开销,盲目地广布插桩点或可记录更加丰富的程序运行及污点传播细节,却也会给系统带来不可接受的巨大开销;而为应对系统开销而选择精简插桩策略的一些现有方案,却仅支持被动跟踪简单线性路径下的污点传播。于是,如何在应用程序运行过程中对其中污点数据的复杂传播实现有效且低成本的跟踪,成为了污点传播分析技术实践中需要解决的技术问题。
技术实现要素:
4.根据本技术公开的实施例,提供一种动态污点追踪方案,通过合理插桩和相应安全策略追踪目标应用程序运行过程中污点传播,以及还原污点传播路径,进而实现目标应用程序运行时的对其中污点数据复杂传播的有效监控与精准分析以及全面覆盖,以及据此精确识别和定位其中的疑似可利用路径。
5.在本公开的第一方面中,提供一种动态污点追踪方法。该方法包括:在目标应用程序运行的服务器端部署agent程序;在目标应用程序运行过程中,通过所述agent程序在目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针;继而在目标应用程序处理请求输入时,通过所述探针监测所述污点源函数、污点传播函数、污点汇聚函数执行,记
录当前请求处理过程中的污点传播轨迹;以及根据记录的所述污点传播轨迹,还原其中的污点传播路径;其中,通过所述探针分别获取其探针切点下相应的事件信息以记录所述污点传播轨迹,所述事件信息主要包括当前探针所获事件的事件类型、当前切点下污点传播轨迹和函数信息;所述事件类型包括污点源输入型事件、污点传播型事件、污点汇聚型事件;所述函数信息包括当前探针所插桩的函数的限定函数名称;所述污点传播路径还原,则主要包括:以记录中的污点源输入事件或污点汇聚型事件为起点,对应地,从污点源原始输入/污点汇聚输入起,根据所述事件信息及其中的切点下污点传播轨迹,沿着其中相关污点传播轨迹经过的污点源函数、污点传播函数、污点汇聚函数,前向追踪/后向溯源,重放所述污点传播轨迹中全部/部分所记录的污点传播轨迹;一般来说,软件开发测试人员尤其关注那些能够从污点源函数传播到污点汇聚函数的、更可能被利用的疑似污点传播路径。
6.可选地,在第一方面的一种实现方式中,所述污点传播路径还原,包括疑似敏感路径还原;所述疑似敏感路径,是指从污点源函数、经污点传播函数或不经污点传播函数、到污点汇聚函数的线性污点传播路径;其中,在所述方法采用前向追踪重放全部所记录污点传播轨迹时,则根据所获污点汇聚事件信息从重放的全部污点传播轨迹中确定其中的所述疑似敏感路径信息。
7.可选地,在第一方面的一种实现方式中,可以是通过所述探针获取其探针切点下相应的污点数据来描述其所获所述事件信息中的切点下污点传播轨迹,对应于不同的事件(即所述污点源输入型事件、污点传播型事件、污点汇聚型事件),所述污点数据分别包括原始输入污点数据、传播输入污点数及其衍生污点数据/衍生污点数据及其传播输入污点数据、汇聚输入污点数据;由此,进而所述的污点传播轨迹记录,可以包括:通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,继而捕获所述污点数据在该探针切点下所关联的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息,并将所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息及其标识记录到集合容器或污点传播日志中;其中,所述的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息均包括当前切点下污点传播轨迹,对应其事件类型,所述污点源输入事件信息、污点传播事件信息、污点汇聚事件信息中的切点下污点传播轨迹分别包括:所述探针获取的原始输入污点数据、传播输入污点数及其衍生污点数据/衍生污点数据及其传播输入污点数据、汇聚输入污点数据,或对应的所述污点数据的唯一特征信息;对应地,所述污点传播路径还原,可以包括:根据所述集合容器/污点传播日志中的污点源输入事件信息、污点传播事件信息、污点汇聚事件信息,以所述事件信息中切点下污点传播轨迹中的污点数据或其唯一特征信息(为前后事件信息切点传播轨迹间的连接点),前向追踪/后向溯源,重放全部/部分所记录的污点传播轨迹。
8.进一步,可选地,在上述实现方式中一种具体实现中,所述的污点传播轨迹记录过程中,所述探针追踪的污点数据,可以包括字符串数据等。
9.进一步,可选地,在上述实现方式中一种具体实现中,所述的污点传播轨迹记录过程中,通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,在所述探针切点下,可以有且不少于一个的所述原始输入污点数据/衍生污点数据/汇聚输入污点数据。
10.进一步,可选地,在上述实现方式中一种具体实现中,所述的污点传播轨迹记录过程中,在所述污点传播事件信息中,所述切点下污点传播轨迹中的单一传播输入污点数据/衍生污点数据可以有且不少于一个的所述传播输入污点数据/衍生污点数据对应的衍生污点数据/传播输入污点数据。
11.进一步,可选地,在上述实现方式中一种具体实现中,所述的污点传播轨迹记录,还可以包括:将所述切点下污点传播轨迹中的所述污点数据/所述污点数据唯一特征信息,或所述切点下污点传播轨迹中的所述污点数据/所述污点数据的唯一特征信息、与其对应的事件类型和/或函数信息,记录到树形数据结构。
12.进一步,可选地,在上述实现方式中一种具体实现中,所述的污点源输入事件标识、污点传播事件标识、污点汇聚事件标识,对应所述事件类型,可以包括:所述原始输入污点数据、传播输入污点数据/衍生污点数据、汇聚输入污点数据,或对应的所述污点数据的唯一特征信息。其中,更进一步地需要指出的是,所述污点传播路径还原采前向追踪还是采后向溯源方式,可以确定上述的污点传播事件标识的内容;其中,当所述污点传播路径还原采前向追踪,所述污点传播事件标识包括:所述传播输入污点数据,或其唯一特征信息;反之,当所述污点传播路径还原采后向溯源,所述污点传播事件标识包括:所述衍生污点数据,或其唯一特征信息。
13.再进一步,可选地,在上述实现方式中一种具体实现中,即所述的污点传播轨迹记录过程中通过获取相应的污点数据描述所述事件信息中的切点下污点传播轨迹,且通过所述污点数据/所述污点数据唯一特征信息作为所述事件信息的标识时,所述的污点传播轨迹记录,则还可以包括:在所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息中的切点下污点传播轨迹中对应地缺省作为标识的所述污点数据/所述污点数据唯一特征信息。
14.进一步,可选地,在上述实现方式中一种具体实现中,即所述的污点传播轨迹记录过程中通过获取相应的污点数据描述所述事件信息中的切点下污点传播轨迹,且所述切点下污点传播轨迹包括相关污点数据的唯一特征信息时,甚至是如前面实施方式中进一步地相关事件信息的标识时,所述污点数据的唯一特征信息,可以包括所述污点数据的存储地址或摘要信息等。
15.进一步,可选地,在上述实现方式中一种具体实现中,即所述污点传播路径还原所获的所述污点传播路径信息,或进一步所获的疑似敏感路径信息,具体地,可以包括:所述重放污点传播轨迹所经过的污点源函数/污点传播函数/污点汇聚函数的函数序列,所述函数序列中的函数信息,包括所述函数的限定函数名称。
16.再进一步,可选地,在上述实现方式中一种具体实现中,所述函数序列中的函数信息中除其限定函数名称外,还包括:所述函数的函数调用栈,和/或,对应的原始输入污点数据/传播输入污点数据及其衍生数据/汇聚输入污点数据,所述衍生数据包括所述传播输入污点数据污染的衍生污点数据和/或包括所述衍生污点数据的方法参数/返回值。
17.可选地,在第一方面的一种实现方式中,在目标应用程序运行过程中,具体在所述请求处理过程中,可以有不少于一个的污点源函数/污点传播函数/污点汇聚函数被触发并通过所述探针记录相关污点传播轨迹。
18.可选地,在第一方面的一种实现方式中,在所述请求处理过程中,对于所述探针插
桩的污点源函数/污点传播函数/污点汇聚函数,可以是:被多次触发并记录相关污点传播轨迹。
19.可选地,在第一方面的一种实现方式中,所述污点传播函数可以包括编码函数、解码函数;在动态污点传播分析过程中,所述编码函数、解码函数均可以被视为广义的传播函数。
20.可选地,在第一方面的一种实现方式中,在所述污点传播函数中,可以是自定义部分所述污点传播函数为清洁函数,以相关探针切点下的污点数据和污点和阻断其传播。
21.可选地,在第一方面的一种实现方式中,所述的通过agent程序在目标应用程序的第一输入函数、第一传播函数、第一输出函数插桩探针,可以采用动态插桩模式或静态插桩模式插桩所述探针。其中,所述的采用动态插桩模式插桩探针,可以包括:在目标应用程序运行的服务器端部署agent程序;使所述agent程序在目标应用程序运行过程中对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针;所述的采用静态插桩模式插桩所述探针,可以包括:通过修改代码或编译插桩插桩所述探针;所述agent程序包括所述探针代码或探针二进制文件,在目标应用程序运行过程中部署所述agent程序,通过所述agent程序部署对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针。
22.在本公开的第二方面中,提供了一种污点传播分析系统,该系统用于执行前述第一方面的方法及其各种实现方式中动态污点追踪的各个过程。该系统包括:污点传播轨迹记录单元和污点传播路径重放单元;所述污点传播轨迹记录单元用于污点传播轨迹的记录;所述污点传播轨迹记录单元被配置得:通过在目标应用程序运行的服务器端部署agent程序,在目标应用程序运行过程中对目标应用程序的污点源函数、污点传播函数、污点输出函数插桩探针以监测所述函数的执行,并在目标应用程序请求处理过程中通过所述探针监测当前请求处理过程中所述污点源函数、污点传播函数、污点汇聚函数的执行记录其中污点传播轨迹;所述污点传播路径重放单元用于污点传播路径的重放;所述污点传播路径重放单元被配置得:根据所述污点传播轨迹记录单元记录的污点传播轨迹,还原其中的污点传播路径;其中,所述污点传播轨迹记录单元通过所述探针分别获取其探针切点下相应的事件信息以记录所述污点传播轨迹,所述事件信息主要包括当前探针所获事件的事件类型、当前切点下污点传播轨迹和函数信息;所述事件类型包括污点源输入型事件、污点传播型事件、污点汇聚型事件;所述函数信息包括当前探针所插桩的函数的限定函数名称;且所述污点传播路径重放单元还原所述污点传播路径,对应地被配置得具体包括:从污点源原始输入/污点汇聚输入起,根据所述事件信息及其中的切点下污点传播轨迹,沿着其中相关污点传播轨迹经过的污点源函数、污点传播函数、污点汇聚函数,前向追踪/后向溯源,重放全部/部分所记录的污点传播轨迹。
23.在本公开的第三方面中,提供了一种动态污点追踪装置。该装置包括:至少一个处理器,和至少一个处理器耦合的存储器,以及存储在存储器中的计算机程序;其中的处理器执行所述计算机程序,能够实现第一方面述及的动态污点追踪方法。
24.在本公开的第四方面中,提供了一种计算机可读存储介质。该计算机可读存储介质上存储有软件程序污点传播分析相关的计算机指令;该计算机指令在被计算机处理器执行时能够实现第一方面述及的动态污点追踪方法。
25.在本公开的第五方面中,提供了一种计算机程序产品。该程序产品包括计算机程
序,该计算机程序在被计算机处理器执行时能够实现第一方面述及的动态污点追踪方法。
26.应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
27.结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素,其中:
28.图1示出了本公开的实施例中提出的动态污点追踪的过程的示意图;
29.图2示出了本公开的实施例中提出的污点传播分析系统的框图;
30.图3示出了能够实施本公开的多个实施例的计算设备的框图。
具体实施方式
31.下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
32.在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
33.在本公开的实施例的描述中,技术术语“目标应用程序”,是指任一的作为目标对象的应用程序;在本公开的实施例的实施一般应用于软件分析与测试中,而在软件分析与测试的应用中,“目标应用程序”是指待分析或测试的应用软件。技术术语“污点源函数”是指直接引入污点数据(不受信任的数据)到系统的函数;“污点汇聚函数”是指因污点数据输入、传播最终直接产生安全敏感操作(违反数据完整性)或者泄露隐私数据到外部(违反数据保密性)的函数;“污点传播函数”是指“污点源函数”与“污点汇聚函数”间与污点数据传播相关的函数;在动态污点分析研究与实践中,往往不同于静态污点分析中污点数据无害处理同污点传播分析过程同步进行,而是将对污点数据传播的无害化独立于动态污点传播分析、置于动态污点传播分析后进行专门的无害化分析,因此本公开中的“污点传播函数”是广义的“污点传播函数”,主要是指在不考虑数据无害化处理的前提下必然导致污点数据传播的函数;且更进一步地,本技术公开的相关方案主要旨在追踪应用程序运行时(runtime)污点数据的传播;换而言之,即主要是追踪目标应用程序处理请求输入时的污点数据传播,故本公开中的“污点源函数”、“污点传播函数”、“污点汇聚函数”更具体地在其本质上是与应用逻辑相关的函数(而并不涉及应用程序运行时环境以下的操作系统或平台)。技术术语“探针切点”,亦简称“切点”,是指所述探针在其所插桩函数形成的切点,所述探针能够通过所述探针切点获取该切点下的信息,包括但不限于所述探针插桩函数的函数信息、请求处理过程中经过所述函数(也即触发所述函数)时的方法参数(包括经过该函数的输入和输出)和返回值等。在软件开发中,“限定函数名称”是指为避免与其他代码中的函数
名称冲突而在代码中使用命名空间、类名、模块名等限定符进而将函数名称限定在特定作用域的一种函数信息表达方式;限定函数名称通常被表达为:“限定函数名称作用域的标识”+“函数(方法)名称”;不同的编程语言下,其限定函数名称的表达方式略有不同;例如,java使用包名来限定函数名称的作用域,python使用模块名来限定函数名称的作用域,php使用命名空间来限定函数名称的作用域等。总之,“限定函数名称”可以用于唯一标识一个函数。
34.污点分析技术一直是保障信息安全、防止信息完整性和保密性被破坏的有效手段。随着移动互联网的飞速发展和web应用技术的更新迭代,与之相关的应用软件漏洞攻击、隐私数据泄露等安全问题层出不穷,越发成为当下网络安全的热点和难点。在解决上述安全问题的实践中,得益于程序分析等相关技术的发展,污点分析在针对上述应用程序(例如web应用、部分移动终端应用等)的安全分析测试方面能够落实更加精确、高效的分析检测。
35.在相关实践中,污点分析的对象主要针对目标应用程序请求处理过程中与业务逻辑相关的数据流,换而言之,主要也就是应用程序运行时环境中运行的代码/业务逻辑数据展开相关分析;而污点传播分析则是实现精确、高效分析测试的基础和重点。而如前文所述,污点传播分析可被分为静态污点传播分析模式和动态污点传播分析模式。其中,静态污点传播分析是指在不运行且不修改代码的前提下,通过分析程序变量间的数据依赖关系来检测(污点)数据能否从污点源传播到污点汇聚点。同样如前文所述,静态污点传播分析模式的缺陷严重制约了其在上述应用软件安全分析测试实践中的应用。而动态污点传播分析模式,尤其是基于插桩的动态污点传播分析无疑是上述实践中的最佳选择。当然,要在应用程序运行过程中对沿复杂路径传播的污点数据实现有效监控、精准跟踪以及全面覆盖,仍需要克服前面列举的诸多问题。
36.根据本公开的实施例,提出了一种动态污点追踪方案,旨在克服以上追踪污点数据传播过程中的种种问题。在该方案中,主要通过部署agent程序和在目标应用程序运行过程中通过所述agent程序在目标应用程序的第一输入函数、第一传播函数、第一输出函数插桩探针进行监测,继而在目标应用程序处理请求输入时,通过所述探针监测所述函数执行记录其污点传播轨迹,以及根据记录的所述污点传播轨迹,(在线/离线)还原其中的污点传播路径。通过上述方案的实施,无疑有助于软件开发测试人员实现对目标应用程序运行时的污点数据复杂传播的有效监控与精准追踪分析以及全面覆盖,进而在此基础上实现对目标应用程序中疑似可利用路径的精准识别和全面扫描。
37.以下将参照附图来具体描述本公开的实施例。
38.图1示出了本公开的实施例中提出的动态污点追踪的过程的示意图。如图1所示,所述的动态污点追踪的过程100,主要包括:101,在目标应用程序运行的服务器端部署agent程序;在目标应用程序运行过程中,通过所述agent程序在目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针,继而在目标应用程序处理请求输入时,以所述探针监测所述污点源函数、污点传播函数、污点汇聚函数执行,记录当前请求处理过程中的污点传播轨迹;以及102,根据上述的污点传播轨迹记录过程所记录的各个请求处理相关的污点传播轨迹,以其中全部或部分的所述污点传播轨迹,还原相关请求处理过程中对应的污点传播路径。其中,为了实现对目标应用程序中复杂路径下污点传播的有效追踪,在101,
主要通过被污点传播触发的所述探针分别获取其探针切点下相应的事件信息来落实所述的污点传播轨迹记录;具体来说,所述的事件信息,可以主要包括:当前探针所获事件的事件类型、当前切点下污点传播轨迹和函数信息;对应于所述污点源函数、污点传播函数、污点汇聚函数,所述事件类型包括污点源输入型事件、污点传播型事件、污点汇聚型事件;所述函数信息可以包括所述函数的限定函数名称;所述限定函数名称旨在唯一标识当前函数。在102,所述的污点传播路径还原,可以是采用在线方式及时还原所述污点传播路径,亦可以是采用离线方式利用导出的污点传播轨迹信息进行相关还原分析。对应于前面所述的在101中的具体实现,所述的污点传播路径还原主要是利用其中全部或部分的事件信息,特别是其中的污点传播轨迹还原全部或部分的污点传播路径;具体地,所述污点传播路径还原,可以包括:选择记录中的污点源输入事件或污点汇聚型事件为起点,对应地,从污点源原始输入/污点汇聚输入起,根据所述事件信息及其中的切点下污点传播轨迹,沿着其中相关污点传播轨迹经过的污点源函数、污点传播函数、污点汇聚函数,前向追踪/后向溯源,重放所述污点传播轨迹中全部/部分的污点传播轨迹所对应的污点传播路径。
39.在一些实施例中,如前面所述,软件开发测试人员尤其关注那些能够从污点源函数传播到污点汇聚函数的、更可能被利用的疑似污点传播路径,故在102,所述污点传播路径还原,其中还可以包括:疑似敏感路径还原。其中,所述污点传播路径还原,主要是在所述方法采用前向追踪重放全部所记录污点传播轨迹时,根据所获污点汇聚事件信息从所述重放污点传播轨迹中确定其中的所述疑似敏感路径信息。另,需要说明的是,所述后向溯源重放相关污点传播轨迹的方式使其并不涉及那些无法传播到污点汇聚函数的污点传播轨迹信息,所述后向溯源重放相关污点传播轨迹本就是有针对性地利用其中与疑似敏感路径相关的事件信息等进而有目的性地根据触发的污点汇聚事件还原那些从污点源函数、经污点传播函数或不经污点传播函数、到污点汇聚函数的线性污点传播路径,即所述疑似敏感路径,故以该方式还原污点传播路径的过程,本就是有针对性地还原所述疑似敏感路径的过程,自然无需额外的疑似敏感路径还原过程。
40.在一些实施例中,在101,可以是通过所述探针获取其探针切点下相应的污点数据来描述其所获所述事件信息中的切点下污点传播轨迹,对应于不同的事件(即所述污点源输入型事件、污点传播型事件、污点汇聚型事件),所述污点数据分别包括原始输入污点数据、传播输入污点数及其衍生污点数据/衍生污点数据及其传播输入污点数据、汇聚输入污点数据。对应地,所述的污点传播轨迹记录,可以具体包括:以所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据;其中,对于每一次所述污点源函数/污点传播函数/污点汇聚函数的触发执行(即有数据经过时),对应地检测所述函数输入,捕捉及追踪当前探针切点下的原始输入污点数据/传播输入污点数据及其衍生污点数据/汇聚输入污点数据,其中的传播输入污点数据及其衍生污点数据的捕捉与追踪,主要是通过捕捉(所述函数当前执行输入中)所述传播输入污点数据,继而透过预先配置以获取其在相应方法参数/返回值(即所述函数当前执行输出)中的衍生污点数据,以实现对其衍生污点数据的追踪;202,对于每一次追踪检测,若捕获追踪到相关污点数据,则继而根据捕捉和追踪所获污点数据信息及其他探针所获信息一并生成所述污点数据在该探针切点下所关联的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息,并将所述污点源输入事件信息/污点传播事件信息/污点汇
聚事件信息及其标识记录到集合容器中;其中,所述的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息均包括当前切点下污点传播轨迹,对应其事件类型,所述污点源输入型事件、污点传播型事件、污点汇聚型事件中的切点下污点传播轨迹分别包括:原始输入污点数据、传播输入污点数及其衍生污点数据/衍生污点数据及其传播输入污点数据、汇聚输入污点数据,或对应的所述污点数据的唯一特征信息。对于在所述污点传播型事件信息的切点下污点传播轨迹,是记录所述传播输入污点数及其衍生污点数据还是衍生污点数据及其传播输入污点数据,主要是通过后续的所述污点传播路径还原采前向追踪还是采后向溯源的方式确定的。其中,当所述污点传播路径还原采前向追踪,所述的切点下污点传播轨迹中一般记录传播输入污点数及其衍生污点数据;当所述污点传播路径还原采后向溯源,所述的切点下污点传播轨迹中则一般记录衍生污点数据及其传播输入污点数据。对于是获取所述污点数据抑或是所述污点数据唯一特征信息来描述所述切点下污点传播轨迹,其中可以是,当所述探针仅能获取原始类型数据时,优选获取所述污点数据唯一特征信息来描述所述切点下污点传播轨迹。这是由于原始类型数据在对象创建前即可直接使用,亦由此实践中也难以区分具有相同值的两个或多个所获原始类型数据;故而当所述探针仅捕获原始类型数据时,尤其可以通过相关所述污点数据的唯一特征信息来描述所述切点下污点传播轨迹。
41.对应于前面述及的所述污点传播轨迹记录,在相关实施例中,在102,同样可以是通过所述探针获取其探针切点下所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息的切点下污点传播轨迹中的污点数据来还原相关污点传播路径。所述的污点传播路径还原,可以具体包括:根据所述集合容器/污点传播日志中的污点源输入事件信息、污点传播事件信息、污点汇聚事件信息,以所述事件信息中切点下污点传播轨迹中的污点数据或其唯一特征信息(为前后事件信息切点传播轨迹间的连接点),前向追踪遍历/后向逐一溯源,重放全部/部分所记录的污点传播轨迹。
42.附加地,在上述一些实施例的具体实现中,所述的污点传播轨迹记录过程中,所述探针追踪的污点数据,可以包括字符串数据等;通过对字符串数据对象等的污点监测和传播分析,有助于发现字符串数据相关的安全风险。
43.附加地,在上述一些实施例的具体实现中,所述的污点传播轨迹记录过程中,通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,在所述探针切点下,有且不少于一个的所述原始输入污点数据/衍生污点数据/汇聚输入污点数据;在同一个探针切点下存在多个相关污点数据,是目标应用程序运行时污点沿复杂路径传播的一种表现,亦是造成复杂污点传播路径的根本原因,尽可能完整地获取探针切点下相关污点数据信息,有助于减少污点传播路径漏报。
44.附加地,在上述一些实施例的具体实现中,所述的污点传播轨迹记录过程中,在所述污点传播事件信息中,所述切点下污点传播轨迹中的单一传播输入污点数据/衍生污点数据,可以有且不少于一个的所述传播输入污点数据/衍生污点数据对应的衍生污点数据/传播输入污点数据;无论是同一个传播输入污点数据多个衍生污点数据,还是同一个衍生污点数据被多个传播输入污点数据污染,亦都是目标应用程序运行时污点沿复杂路径传播的表现,尽可能完整地获取探针切点下相关污点数据信息,有助于在还原相关污点传播路
径过程中减少漏报。
45.附加地,在上述一些实施例的具体实现中,所述的污点传播轨迹记录,还可以包括:将所述切点下污点传播轨迹中的所述污点数据/所述污点数据唯一特征信息,或所述切点下污点传播轨迹中的所述污点数据/所述污点数据的唯一特征信息、与其对应的事件类型和/或函数信息,记录到树形数据结构;通过树形数据结构的记录,更加直观地表示整个污点传播过程的层次关系和各函数间传播污染关系。
46.附加地,在上述一些实施例的具体实现中,所述污点源输入/污点传播/污点汇聚事件信息标识,对应所述事件类型,可以包括:所述原始输入污点数据、传播输入污点数据/衍生污点数据、汇聚输入污点数据,或对应的所述污点数据的唯一特征信息。通过正确地使用所述标识,有助于后续污点传播路径还原过程中快速查询相关污点数据以提高溯源效率。对于如何正确使用所述标识,主要是指当所述污点传播路径还原采前向追踪,所述污点传播事件标识包括:所述传播输入污点数据,或其唯一特征信息;当所述污点传播路径还原采后向溯源,所述污点传播事件标识包括:所述衍生污点数据,或其唯一特征信息。
47.进一步附加地,在上述一些实施例的具体实现中,当通过所述污点数据/所述污点数据唯一特征信息作为所述事件信息标识时,在所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息中的切点下污点传播轨迹中对应地缺省作为所述标识的所述污点数据/所述污点数据唯一特征信息;通过缺省相关污点数据/污点数据唯一特征信息,有助于进一步减少记录在集合容器中的相关数据,降低存储开销的同时,亦有利于相关数据的上传记录和查询。
48.附加地,在上述一些实施例的具体实现中,其中一些通过所述污点数据唯一特征信息描述所述事件信息中的切点下污点传播轨迹,其中一些则进一步通过所述污点数据唯一特征信息作为所述事件信息的标识,则在前面所述的一些实施例中,其中的所述污点数据的唯一特征信息,还可以是包括但不限于:所述污点数据的存储地址、摘要信息等,通过存储地址或摘要信息作为所述事件信息的标识,主要旨在解决无法区分相关污点数据而难以落实污点追踪等难题。
49.附加地,在上述一些实施例的具体实现中,所述污点传播路径还原所获的所述污点传播路径信息,以及其中一些实施例中的所述污点传播路径还原所获的疑似敏感路径信息,可以包括:对应的重放污点传播轨迹所经过的污点源函数/污点传播函数/污点汇聚函数的函数序列,所述函数序列中的函数信息,包括所述函数的限定函数名称;通过所述函数序列展示所述污点传播轨迹,有助于软件开发测试人员分析安全问题的形成原因和更加直观展示被攻击利用的路径信息。
50.进一步附加地,在上述一些实施例的具体实现中,所述污点传播路径信息/疑似敏感路径中的所述函数序列中的函数信息,除其限定函数名称外,还可以包括但不限于:所述函数的函数调用栈、对应的原始输入污点数据/传播输入污点数据及其衍生数据/汇聚输入污点数据等;所述衍生数据包括所述传播输入污点数据污染的衍生污点数据、包括所述衍生污点数据的方法参数/返回值等的一种或多种;通过进一步捕获和丰富污点传播路径上的信息,无疑更加有助于软件开发测试人员分析安全问题的形成原因。例如,其中的函数调用栈信息能够帮助软件开发测试人员进一步了解更加底层的、未插桩位置的程序运行状况;相关污点数据及方法参数、返回值等,无疑更加清晰地还原了污点传播细节,亦相当于
对漏洞攻击利用的模拟,或可帮助软件开发测试人员更加直观地发现相关问题;上述信息无疑有助于软件开发测试人员定位安全问题。
51.在一些实施例中,在101,在目标应用程序运行过程中,具体在所述请求处理过程中,可以有不少于一个的污点源函数/污点传播函数/污点汇聚函数被触发并通过所述探针记录相关污点传播轨迹;故考虑到污点传播的复杂,在配置和插桩所述探针时,应充分识别所述污点源函数、污点传播函数、污点汇聚函数,以避免污点传播路径等相关信息漏报。
52.在一些实施例中,在101,在所述请求处理过程中,对于所述探针插桩的污点源函数/污点传播函数/污点汇聚函数,可以是:被多次触发并记录相关污点传播轨迹;一次请求输入的数据,不免多次经过通过一个函数,尤其是一些插桩函数本就运行在运行时环境之上,甚至是属于一些经典框架/组件,不免重复调用,因此要通过不遗漏的记录,以避免污点传播路径等相关信息漏报。
53.在一些实施例中,在101,所述污点传播函数可以包括编码函数、解码函数;在动态污点传播分析过程中,所述编码函数、解码函数均可以被视为广义的污点传播函数。虽然在这里的污点传播分析中定义了所述编码函数、解码函数为广义的污点传播函数,但是并不影响污点分析结果,在动态污点传播分析的路径信息上后续还将展开无害化分析,以确保最终污点分析结果的准确。
54.在一些实施例中,在101,在所述污点传播函数中,可以是自定义部分所述污点传播函数为清洁函数,以相关探针切点下的污点数据和污点和阻断其传播;通过确定的清洁函数的设置,无疑将减少记录在集合容器中的相关数据。
55.在一些实施例中,在101,所述的插桩探针可以采用动态插桩模式;所述的采用动态插桩模式插桩探针,主要包括:在目标应用程序运行的服务器端部署agent程序,以所述agent程序在目标应用程序运行过程中通过字节码修改等方式在编程语言运行时环境(runtime)中(以java为例,比如jvm虚拟机环境)对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针。
56.在一些实施例中,在101,所述的插桩探针可以采用静态插桩模式;其中,典型的静态模式主要包括:通过修改代码或编译插桩插桩所述探针。更具体地,所述的通过修改代码或编译插桩插桩所述探针,主要是指所述agent程序包括所述探针代码或探针二进制文件;进而在目标应用程序运行过程中部署所述agent程序,随着目标应用程序运行自动部署所述agent程序,在所述agent程序自行部署过程中即实现了对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针。
57.图2示出了本公开的实施例中提出的污点传播分析系统的框图。该如图2所示,污点传播分析系统200,主要包括:污点传播轨迹记录单元210和污点传播路径重放单元220;其中,所述污点传播轨迹记录单元210用于污点传播轨迹的记录;所述污点传播轨迹记录单元210被配置得:通过在目标应用程序运行的服务器端部署agent程序,在目标应用程序运行过程中对目标应用程序的污点源函数、污点传播函数、污点输出函数插桩探针以监测所述函数的执行,并在目标应用程序请求处理过程中通过所述探针监测当前请求处理过程中所述污点源函数、污点传播函数、污点汇聚函数的执行记录其中污点传播轨迹;所述污点传播路径重放单元220用于污点传播路径的重放;所述污点传播路径重放单元220被配置得:根据所述污点传播轨迹记录单元210记录的污点传播轨迹,还原其中的污点传播路径;其
中,所述污点传播轨迹记录单元210,被配置得通过所述探针分别获取其探针切点下相应的事件信息来记录所述污点传播轨迹;而所述事件信息主要包括当前探针所获事件的事件类型、当前切点下污点传播轨迹和函数信息;所述事件类型包括污点源输入型事件、污点传播型事件、污点汇聚型事件;所述函数信息包括所述函数的限定函数名称;对应地,所述污点传播路径重放单元220还原所述污点传播路径,更具体地被配置为还包括:以所述污点传播轨迹记录单元210记录的污点源输入事件或污点汇聚型事件为起点,对应地,从污点源原始输入/污点汇聚输入起,根据所述事件信息及其中的切点下污点传播轨迹,沿着其中相关污点传播轨迹经过的污点源函数、污点传播函数、污点汇聚函数,前向追踪/后向溯源,重放所述污点传播轨迹中全部/部分的污点传播轨迹所对应的污点传播路径。在相关实施例中,所述污点传播轨迹记录单元210通常还被配置得:将上述的污点传播轨迹信息记录在同一请求的上下文空间中,即所述当前请求的上下文空间中。此外,所述的污点传播分析系统200,既可以被设计为在线分析系统,也可以是被设计为离线分析系统;其中,所述污点传播分析系统200被设计为在线分析系统时,应当配置所述污点传播轨迹记录单元210能够在记录到污点传播轨迹的同时,即时重放其污点传播路径;其中,尤其是实现对其中从污点源函数到污点汇聚函数的疑似敏感路径的即时重放;所述污点传播分析系统200被设计为离线分析系统时,则一般将所述污点传播轨迹记录到污点传播日志中,继而在污点传播轨迹重放分析时,还原其中全部或部分的路径信息。
58.在一些实施例中,所述污点传播轨迹记录单元210还原污点传播路径,被配置得包括:还原疑似敏感路径,以辅助软件开发测试人员高效地发现那些其关注的能够从污点源函数传播到污点汇聚函数的、更可能被利用的疑似污点传播路径。其中,上述的污点传播路径还原,主要是在所述方法采用前向追踪重放全部所记录污点传播轨迹时,根据所获污点汇聚事件信息从所述重放污点传播轨迹中确定其中的所述疑似敏感路径信息;而在后向溯源重放相关污点传播轨迹时,本就是一种疑似敏感路径还原的实现。
59.在一些实施例中,所述污点传播轨迹记录单元210,可以被配置得能够通过所述探针获取其探针切点下相应的污点数据来描述其所获所述事件信息中的切点下污点传播轨迹,对应于不同的事件(即所述污点源输入型事件、污点传播型事件、污点汇聚型事件),所述污点数据分别包括原始输入污点数据、传播输入污点数及其衍生污点数据/衍生污点数据及其传播输入污点数据、汇聚输入污点数据。基于上述实现的要求,所述污点传播轨迹记录单元210记录污点传播轨迹,可以被配置得包括:以所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据;其中,对于每一次所述污点源函数/污点传播函数/污点汇聚函数的触发执行,对应地检测所述函数输入,捕捉及追踪当前探针切点下的原始输入污点数据/传播输入污点数据及其衍生污点数据/汇聚输入污点数据,其中所述传播输入污点数据及其衍生污点数据的捕捉与追踪,主要是以捕获所述函数输入中的传播输入污点数据,并通过预先配置以追踪所述函数输出中所述传播输入污点数据的衍生污点数据;以及在追踪到相关污点数据时,继而根据捕捉和追踪所获污点数据信息及其他探针所获信息一并生成所述污点数据在该探针切点下所关联的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息,并将所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息及其标识记录到集合容器/污点传播日志中;其中,所述的污点源输入事件信息、污点传播事件信息、污点汇聚事
件信息均包括当前切点下污点传播轨迹,对应其事件类型,所述切点下污点传播轨迹分别包括:所述探针获取的原始输入污点数据、传播输入污点数及其衍生污点数据/衍生污点数据及其传播输入污点数据、汇聚输入污点数据,或对应的所述污点数据的唯一特征信息。其中,当所述探针仅捕获原始类型数据时,所述污点传播轨迹记录单元210记录污点传播轨迹,尤其可以被配置为通过相关所述污点数据的唯一特征信息来描述所述切点下污点传播轨迹。
60.对应于上述实施例中的所述污点传播轨迹记录单元210记录污点传播轨迹的实现,在相关实施例中,所述污点传播路径重放单元220可以被配置得包括:根据所述集合容器/污点传播日志中的污点源输入事件信息、污点传播事件信息、污点汇聚事件信息,以所述事件信息中切点下污点传播轨迹中的污点数据或其唯一特征信息(为前后事件信息切点传播轨迹间的连接点),前向追踪/后向溯源,重放全部/部分所记录的污点传播轨迹。
61.附加地,在上述一些实施例的具体实现中,所述污点传播轨迹记录单元210记录污点传播轨迹,可以被配置得还包括:在所述的污点传播轨迹记录过程中,使所述探针能够追踪的污点数据还包括字符串数据等,以发现目标应用程序运行时字符串数据相关的污点传播情况。
62.附加地,在上述一些实施例的具体实现中,所述污点传播轨迹记录单元210记录污点传播轨迹,可以被配置得还包括:所述的污点传播轨迹记录过程中,通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,追踪在所述探针切点下可能有且不少于一个的所述原始输入污点数据/衍生污点数据/汇聚输入污点数据,以减少漏报。
63.附加地,在上述一些实施例的具体实现中,所述污点传播轨迹记录单元210记录污点传播轨迹,可以被配置得还包括:所述的污点传播轨迹记录过程中,在所述污点传播事件信息中,对于所述切点下污点传播轨迹中的单一传播输入污点数据/衍生污点数据,能够捕获到不少于一个的所述传播输入污点数据/衍生污点数据对应的衍生污点数据/传播输入污点数据;通过尽可能完整地获取相关污点数据信息,以减少污点传播分析过程中的漏报。
64.附加地,在上述一些实施例的具体实现中,所述污点传播轨迹记录单元210记录污点传播轨迹,可以被配置得还包括:将所述切点下污点传播轨迹中的所述污点数据/所述污点数据唯一特征信息,或所述切点下污点传播轨迹中的所述污点数据/所述污点数据的唯一特征信息、与其对应的事件类型和/或函数信息,记录到树形数据结构,以直观地记录和描述整个污点传播过程的层次关系和各函数间传播污染关系。
65.附加地,在上述一些实施例的具体实现中,所述污点传播轨迹记录单元210记录污点传播轨迹,可以被配置得还包括:使所述污点源输入/污点传播/污点汇聚事件信息标识,对应所述事件类型,可以包括:所述原始输入污点数据、传播输入污点数据/衍生污点数据、汇聚输入污点数据,或对应的所述污点数据的唯一特征信息。其中,当所述污点传播路径还原采前向追踪,所述污点传播事件标识包括:所述传播输入污点数据,或其唯一特征信息;当所述污点传播路径还原采后向溯源,所述污点传播事件标识包括:所述衍生污点数据,或其唯一特征信息,以确保所述标识在后续的对应的污点传播路径还原过程中辅助相关污点数据的快速查询以提高溯源效率。
66.进一步附加地,在上述一些实施例的具体实现中,所述污点传播轨迹记录单元210
被配置得通过所述污点数据/所述污点数据唯一特征信息作为所述事件信息标识时,可以进一步被配置得:在所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息中的切点下污点传播轨迹中对应地缺省作为所述标识的所述污点数据/所述污点数据唯一特征信息,以减少需要记录在集合容器中的相关数据。
67.附加地,在上述相关实施例的具体实现中,所述污点传播轨迹记录单元210被配置得:或通过所述污点数据唯一特征信息描述所述事件信息中的切点下污点传播轨迹,或进一步通过所述污点数据唯一特征信息作为所述事件信息的标识时,其中一些实施例的具体实现中,使所述污点数据的唯一特征信息,可以被配置得包括但不限于是:所述污点数据的存储地址、摘要信息等。
68.附加地,在上述一些实施例的具体实现中,所述污点传播路径重放单元220还原所获的所述污点传播路径信息及其中的疑似敏感路径信息,可以包括:对应的重放污点传播轨迹所经过的污点源函数/污点传播函数/污点汇聚函数的函数序列,所述函数序列中的函数信息,包括所述函数的限定函数名称,以便利于软件开发测试人员发现安全问题的形成原因。
69.进一步附加地,在上述一些实施例的具体实现中,所述污点传播路径信息/疑似敏感路径信息中的函数序列中的函数信息,除其限定函数名称外,还可以包括但不限于:所述污点传播路径信息中的所述函数序列中的函数信息,除其限定函数名称外,还可以包括但不限于:所述函数的函数调用栈、对应的原始输入污点数据/传播输入污点数据及其衍生数据/汇聚输入污点数据等;所述衍生数据包括所述传播输入污点数据污染的衍生污点数据、包括所述衍生污点数据的方法参数/返回值等的一种或多种,以最大限度辅助软件开发测试人员分析发现甚至定位相关安全问题。
70.在一些实施例中,所述污点传播轨迹记录单元210记录污点传播轨迹,可以被配置得还包括:在目标应用程序运行过程中,能够支持不少于一个的污点源函数/污点传播函数/污点汇聚函数被触发并通过所述探针记录相关污点传播轨迹,以避免污点传播路径等相关信息漏报。
71.在一些实施例中,所述污点传播轨迹记录单元210记录污点传播轨迹,可以被配置得还包括:在所述请求处理过程中,对于其中所述探针插桩的污点源函数/污点传播函数/污点汇聚函数,能够支持被多次触发并记录相关污点传播轨迹以避免污点传播路径等相关信息漏报。
72.在一些实施例中,所述污点传播轨迹记录单元210所插桩的所述污点传播函数可以包括编码函数、解码函数。
73.在一些实施例中,所述污点传播轨迹记录单元210记录污点传播轨迹,可以被配置得还包括:在所述污点传播函数中,部分所述污点传播函数能够被自定义为清洁函数,以通过确定的清洁函数的设置减少记录在集合容器中的相关数据。
74.在一些实施例中,所述污点传播轨迹记录单元210记录污点传播轨迹,可以被配置得还包括:采用动态插桩模式插桩所述探针;所述采用动态插桩模式的插桩探针,主要包括:在目标应用程序运行的服务器端部署agent程序,以所述agent程序在目标应用程序运行过程中通过字节码修改等方式在编程语言运行时环境(runtime)中对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针。
75.在一些实施例中,所述污点传播轨迹记录单元210记录污点传播轨迹,可以被配置得还包括:采用静态插桩模式插桩所述探针;例如,通过修改代码或编译插桩插桩所述探针。更具体地,所述的通过修改代码或编译插桩来插桩所述探针,主要是指所述agent程序包括所述探针代码或探针二进制文件;进而在目标应用程序运行过程中部署所述agent程序,随着目标应用程序运行自动部署所述agent程序,在所述agent程序自行部署过程中即实现了对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针。
76.在一些实施例中,还提出了一种用于实现动态污点追踪的装置。所述装置,具体地,可以是通过计算设备实施。图3示出了上述实施例的能够用来实施本公开的一些实施例的计算设备的框图。如图3所示,计算设备300,包括中央处理器(cpu)301,其能够根据存储在只读存储器(rom)302的计算机程序指令或从存储单元308加载到随机访问存储器(ram)303中的计算机程序指令,来执行各种适当的操作和处理,在(ram)303中,还可以存储计算设备300操作所需的各种程序代码、数据。cpu301、rom302、ram303通过总线304彼此相连,且输入/输出(i/o)接口305也与总线304相连。计算设备300的一些部件通过i/o接口305接入,包括:输入单元306,如键鼠等;输出单元307,如显示器等;存储单元308,如磁盘、光盘、固态硬盘(ssd)等,以及通信单元309,如网卡、调制解调器等。通信单元309能够使计算设备300通过计算机网络与其他设备交换信息/数据。cpu301能够执行上述实施例中描述的各种方法和处理过程,例如过程100。在一些实施例中,过程100,可以被实现为计算机软件程序,其被例如存储单元308等的计算机可读介质。在一些实施例中,计算机程序的部分或全部被载入或安装到计算设备300。当计算机程序被加载到ram303被cpu301执行时,能够执行过程100的部分或者全部操作。
77.本文中以上描述的功能都可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)等等。
78.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
79.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
80.此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。
在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以独立地或以任何合适的子组合的方式实现在多个实现中。
81.尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
技术特征:
1.一种动态污点追踪方法,其特征在于,该方法包括:在目标应用程序运行的服务器端部署agent程序;在目标应用程序运行过程中,通过所述agent程序在目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针;继而在目标应用程序处理请求输入时,对于任一请求处理过程,通过所述探针监测其中所述污点源函数、污点传播函数、污点汇聚函数执行,记录其中污点传播轨迹;以及根据所述污点传播轨迹,还原其中的污点传播路径;其中,通过所述探针分别获取其探针切点下相应的事件信息以记录所述污点传播轨迹,所述事件信息主要包括当前探针所获事件的事件类型、当前切点下污点传播轨迹和函数信息;所述事件类型包括污点源输入型事件、污点传播型事件、污点汇聚型事件;所述函数信息包括当前探针所插桩的函数的限定函数名称;所述污点传播路径还原,包括:从污点源原始输入/污点汇聚输入起,根据所述事件信息及其中的切点下污点传播轨迹,沿着其中相关污点传播轨迹经过的污点源函数、污点传播函数、污点汇聚函数,前向追踪/后向溯源,重放全部/部分所记录的污点传播轨迹。2.根据权利要求1所述的方法,其特征在于,所述污点传播路径还原,包括疑似敏感路径还原;所述疑似敏感路径,是指从污点源函数、经污点传播函数或不经污点传播函数、到污点汇聚函数的线性污点传播路径;在采用前向追踪重放全部所记录污点传播轨迹时,则根据所获污点汇聚事件信息从重放的全部污点传播轨迹中确定其中的所述疑似敏感路径信息;和/或,通过获取相应的污点数据以描述所述事件信息中的切点下污点传播轨迹,对应所述污点源输入型事件、污点传播型事件、污点汇聚型事件,所述污点数据分别包括原始输入污点数据、传播输入污点数及其衍生污点数据/衍生污点数据及其传播输入污点数据、汇聚输入污点数据;其中,所述的污点传播轨迹记录,包括:通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,继而捕获所述污点数据在该探针切点下所关联的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息,并将所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息及其标识记录到集合容器/污点传播日志中;所述的事件信息包括当前切点下污点传播轨迹,所述污点源输入事件信息、污点传播事件信息、污点汇聚事件信息中的切点下污点传播轨迹分别包括:所述探针获取的原始输入污点数据、传播输入污点数及其衍生污点数据/衍生污点数据及其传播输入污点数据、汇聚输入污点数据,或对应的所述污点数据的唯一特征信息;以及所述污点传播路径还原,包括:根据所述集合容器/污点传播日志中的污点源输入事件信息、污点传播事件信息、污点汇聚事件信息,以所述事件信息中切点下污点传播轨迹中的污点数据或其唯一特征信息前向追踪/后向溯源,重放全部/部分所记录的污点传播轨迹。3.根据权利要求2所述的方法,其特征在于,通过获取所述污点数据描述所述事件信息中的切点下污点传播轨迹,所述的污点传播轨迹记录过程中,所述探针追踪的污点数据,包括字符串数据;
和/或,通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,在所述探针切点下,有且不少于一个的所述原始输入污点数据/衍生污点数据/汇聚输入污点数据;和/或,在所述污点传播事件信息中,所述切点下污点传播轨迹中的单一传播输入污点数据/衍生污点数据,有且不少于一个的所述传播输入污点数据/衍生污点数据对应的衍生污点数据/传播输入污点数据;和/或,通过获取所述污点数据描述所述事件信息中的切点下污点传播轨迹,所述的污点传播轨迹记录,还包括:将所述切点下污点传播轨迹中的所述污点数据/所述污点数据唯一特征信息,或所述切点下污点传播轨迹中的所述污点数据/所述污点数据的唯一特征信息、与其对应的事件类型和/或函数信息,记录到树形数据结构;和/或,所述的污点源输入事件标识、污点传播事件标识、污点汇聚事件标识,分别包括:所述原始输入污点数据、传播输入污点数据/衍生污点数据、汇聚输入污点数据,或对应的所述污点数据的唯一特征信息;其中,当所述污点传播路径还原采前向追踪,所述污点传播事件标识包括:所述传播输入污点数据,或其唯一特征信息;当所述污点传播路径还原采后向溯源,所述污点传播事件标识包括:所述衍生污点数据,或其唯一特征信息;和/或,所述污点传播路径信息/疑似敏感路径信息,包括所述重放污点传播轨迹所经过的污点源函数/污点传播函数/污点汇聚函数的函数序列,所述函数序列中的函数信息,包括所述函数的限定函数名称。4.根据权利要求1-3任一所述的方法,其特征在于,所述的污点传播轨迹记录通过获取相应的污点数据描述所述事件信息中的切点下污点传播轨迹,且通过所述污点数据/所述污点数据唯一特征信息作为所述事件信息的标识时,则在所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息中的切点下污点传播轨迹中对应地缺省作为标识的所述污点数据/所述污点数据唯一特征信息;和/或,所述的污点传播轨迹记录通过获取相应的污点数据描述所述事件信息中的切点下污点传播轨迹,且所述切点下污点传播轨迹包括所述污点数据/所述污点数据唯一特征信息时,所述污点数据的唯一特征信息,包括所述污点数据的存储地址或摘要信息;和/或,其中所述污点传播路径信息/疑似敏感路径信息包括对应的重放污点传播轨迹所经过的污点源函数/污点传播函数/污点汇聚函数的函数序列时,所述函数序列中的函数信息中除其限定函数名称外,还包括:所述函数的函数调用栈,和/或,对应的原始输入污点数据/传播输入污点数据及其衍生数据/汇聚输入污点数据,所述衍生数据包括所述传播输入污点数据污染的衍生污点数据和/或包括所述衍生污点数据的方法参数/返回值;和/或,
在所述请求处理过程中,不少于一个的污点源函数/污点传播函数/污点汇聚函数被触发并通过所述探针记录相关污点传播轨迹;和/或,在所述请求处理过程中,对于所述探针插桩的污点源函数/污点传播函数/污点汇聚函数,被多次触发并记录相关污点传播轨迹;和/或,所述污点传播函数包括编码函数、解码函数;和/或,在所述污点传播函数中,自定义部分所述污点传播函数为清洁函数;和/或,所述的通过agent程序在目标应用程序的第一输入函数、第一传播函数、第一输出函数插桩探针,采用动态插桩模式/静态插桩模式插桩所述探针;其中,所述的采用动态插桩模式插桩探针,包括:在目标应用程序运行的服务器端部署agent程序;使所述agent程序在目标应用程序运行过程中对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针;所述的采用静态插桩模式插桩所述探针,包括:通过修改代码或编译插桩来插桩所述探针;所述agent程序包括所述探针代码或探针二进制文件,在目标应用程序运行过程中部署所述agent程序,通过所述agent程序部署对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针。5.一种污点传播分析系统,其特征在于,该系统包括:污点传播轨迹记录单元和污点传播路径重放单元;所述污点传播轨迹记录单元用于污点传播轨迹的记录;所述污点传播轨迹记录单元被配置得:通过在目标应用程序运行的服务器端部署agent程序,在目标应用程序运行过程中对目标应用程序的污点源函数、污点传播函数、污点输出函数插桩探针以监测所述函数的执行,并在目标应用程序请求处理过程中通过所述探针监测当前请求处理过程中所述污点源函数、污点传播函数、污点汇聚函数的执行记录其中污点传播轨迹;所述污点传播路径重放单元用于污点传播路径的重放;所述污点传播路径重放单元被配置得:根据所述污点传播轨迹记录单元记录的污点传播轨迹,还原其中的污点传播路径;其中,所述污点传播轨迹记录单元通过所述探针分别获取其探针切点下相应的事件信息以记录所述污点传播轨迹,所述事件信息主要包括当前探针所获事件的事件类型、当前切点下污点传播轨迹和函数信息;所述事件类型包括污点源输入型事件、污点传播型事件、污点汇聚型事件;所述函数信息包括当前探针所插桩的函数的限定函数名称;所述污点传播路径重放单元还原所述污点传播路径,包括:从污点源原始输入/污点汇聚输入起,根据所述事件信息及其中的切点下污点传播轨迹,沿着其中相关污点传播轨迹经过的污点源函数、污点传播函数、污点汇聚函数,前向追踪/后向溯源,重放全部/部分所记录的污点传播轨迹。6.根据权利要求5所述的系统,其特征在于,所述的污点传播路径重放单元还原污点传播路径,被配置得包括:还原疑似敏感路径;所述疑似敏感路径,是指从污点源函数、经污点传播函数或不经污点传播函数、到污点汇聚函数的线性污点传播路径;在采用前向追踪重放全部所记录污点传播轨迹时,则根据所获
污点汇聚事件信息从重放的全部污点传播轨迹中确定其中的所述疑似敏感路径信息;和/或,所述污点传播轨迹记录单元被配置得:通过获取相应的污点数据以描述所述事件信息中的切点下污点传播轨迹,对应所述污点源输入型事件、污点传播型事件、污点汇聚型事件,所述污点数据分别包括原始输入污点数据、传播输入污点数及其衍生污点数据/衍生污点数据及其传播输入污点数据、汇聚输入污点数据;其中,所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得包括:通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,继而捕获所述污点数据在该探针切点下所关联的污点源输入事件信息/污点传播事件信息/污点汇聚事件信息,并将所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息及其标识记录到集合容器/污点传播日志中;所述的事件信息包括当前切点下污点传播轨迹,所述污点源输入事件信息、污点传播事件信息、污点汇聚事件信息中的切点下污点传播轨迹分别包括:所述探针获取的原始输入污点数据、传播输入污点数及其衍生污点数据/衍生污点数据及其传播输入污点数据、汇聚输入污点数据,或对应的所述污点数据的唯一特征信息;对应地,所述污点传播路径重放单元还原所述污点传播路径,被配置得包括:根据所述污点传播轨迹记录单元记录在所述集合容器/污点传播日志中的污点源输入事件信息、污点传播事件信息、污点汇聚事件信息,以所述事件信息中切点下污点传播轨迹中的污点数据或其唯一特征信息前向追踪/后向溯源,重放全部/部分所记录的污点传播轨迹。7.根据权利要求6所述的系统,其特征在于,所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得还包括:所述的污点传播轨迹记录过程中,所述探针追踪的污点数据,包括字符串数据;和/或,所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得还包括:通过所述探针追踪所述污点源函数、污点传播函数、污点汇聚函数执行中其探针切点下的原始输入污点数据/衍生污点数据/汇聚输入污点数据,追踪在所述探针切点下可能有且不少于一个的所述原始输入污点数据/衍生污点数据/汇聚输入污点数据;和/或,所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得还包括:在所述污点传播事件信息中,所述切点下污点传播轨迹中的单一传播输入污点数据/衍生污点数据,有且不少于一个的所述传播输入污点数据/衍生污点数据对应的衍生污点数据/传播输入污点数据;和/或,所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得还包括:将所述切点下污点传播轨迹中的所述污点数据/所述污点数据唯一特征信息,或所述切点下污点传播轨迹中的所述污点数据/所述污点数据的唯一特征信息、与其对应的事件类型和/或函数信息,记录到树形数据结构;和/或,所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得还包括:所述的污点源
输入事件标识、污点传播事件标识、污点汇聚事件标识,分别包括:所述原始输入污点数据、传播输入污点数据/衍生污点数据、汇聚输入污点数据,或对应的所述污点数据的唯一特征信息;其中,当所述污点传播路径还原采前向追踪,所述污点传播事件标识包括:所述传播输入污点数据,或其唯一特征信息;当所述污点传播路径还原采后向溯源,所述污点传播事件标识包括:所述衍生污点数据,或其唯一特征信息;和/或,所述污点传播路径重放单元还原所获的污点传播路径信息/疑似敏感路径信息,包括所述重放污点传播轨迹所经过的污点源函数/污点传播函数/污点汇聚函数的函数序列,所述函数序列中的函数信息,包括所述函数的限定函数名称。8.根据权利要求5-7任一所述的系统,其特征在于,所述污点传播轨迹记录单元被配置得:通过获取相应的污点数据描述所述事件信息中的切点下污点传播轨迹,且通过所述污点数据/所述污点数据唯一特征信息作为所述事件信息的标识时,所述污点传播轨迹记录单元被配置得还包括:在所述污点源输入事件信息/污点传播事件信息/污点汇聚事件信息中的切点下污点传播轨迹中对应地缺省作为标识的所述污点数据/所述污点数据唯一特征信息;和/或,所述污点传播轨迹记录单元被配置得:通过获取相应的污点数据描述所述事件信息中的切点下污点传播轨迹,且所述切点下污点传播轨迹包括所述污点数据/所述污点数据唯一特征信息时,所述污点传播轨迹记录单元被配置得还包括:所述污点数据的唯一特征信息,包括所述污点数据的存储地址或摘要信息;和/或,所述污点传播路径重放单元还原所获的污点传播路径信息/疑似敏感路径信息,包括对应的重放污点传播轨迹所经过的污点源函数/污点传播函数/污点汇聚函数的函数序列时,所述函数序列中的函数信息中除其限定函数名称外,还包括:所述函数的函数调用栈,和/或,对应的原始输入污点数据/传播输入污点数据及其衍生数据/汇聚输入污点数据,所述衍生数据包括所述传播输入污点数据污染的衍生污点数据和/或包括所述衍生污点数据的方法参数/返回值;和/或,所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得还包括:在所述请求处理过程,能够有不少于一个的污点源函数/污点传播函数/污点汇聚函数被触发并通过所述探针记录相关污点传播轨迹;和/或,所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得还包括:在所述请求处理过程中,对于其中所述探针插桩的污点源函数/污点传播函数/污点汇聚函数,能够被多次触发并记录相关污点传播轨迹;和/或,所述污点传播轨迹记录单元中被插桩探针的所述污点传播函数包括编码函数、解码函数;和/或,
所述污点传播轨迹记录单元记录所述污点传播轨迹,被配置得还包括:在所述污点传播函数中,部分所述污点传播函数能够被自定义为清洁函数;和/或,所述污点传播轨迹记录单元采用动态插桩模式/静态插桩模式插桩所述探针;其中,所述的采用动态插桩模式插桩所述探针,包括:在目标应用程序运行的服务器端部署agent程序;使所述agent程序在目标应用程序运行过程中对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针;所述的采用静态插桩模式插桩所述探针,包括:通过修改代码或编译插桩来插桩所述探针;所述agent程序包括所述探针代码或探针二进制文件,在目标应用程序运行过程中部署所述agent程序,通过所述agent程序部署对目标应用程序的污点源函数、污点传播函数、污点汇聚函数插桩探针。9.一种动态污点追踪装置,其特征在于,该装置包括:至少一个处理器,和至少一个处理器耦合的存储器,以及存储在存储器中的计算机程序;其中的处理器执行所述计算机程序,能够实现权利要求1-4任一所述的动态污点追踪方法。10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有软件程序污点传播分析相关的计算机指令;该计算机指令在被计算机处理器执行时能够实现权利要求1-4任一所述的动态污点追踪方法。
技术总结
本申请公开的实施例提供一种动态污点追踪方法、装置及相关污点传播分析系统。其中,该方法包括:通过部署Agent程序和在目标应用程序运行过程中通过所述Agent程序在目标应用程序的第一输入函数、第一传播函数、第一输出函数插桩探针进行监测,继而在目标应用程序处理请求输入时,通过所述探针监测所述函数执行记录其污点传播轨迹,以及根据记录的所述污点传播轨迹,还原其中的污点传播路径,以实现对目标应用程序运行时的污点数据复杂传播的有效监控与精准追踪分析以及全面覆盖,进而实现对目标应用程序中疑似可利用路径的精准识别和全面扫描。全面扫描。全面扫描。
技术研发人员:张涛 宁戈 周幸 周雅飞
受保护的技术使用者:北京安普诺信息技术有限公司
技术研发日:2023.04.23
技术公布日:2023/7/25
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
