CN114138681A - 一种污点数据跟踪方法、装置及计算机可读存储介质 - Google Patents
一种污点数据跟踪方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114138681A CN114138681A CN202210109670.1A CN202210109670A CN114138681A CN 114138681 A CN114138681 A CN 114138681A CN 202210109670 A CN202210109670 A CN 202210109670A CN 114138681 A CN114138681 A CN 114138681A
- Authority
- CN
- China
- Prior art keywords
- data
- coordinate information
- taint
- taint data
- effective
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请方案所提供的污点数据跟踪方法、装置及计算机可读存储介质,根据插桩技术将检测逻辑植入到被测应用程序;获取第一有效污点数据的第一坐标信息;当根据检测逻辑确定第一有效污点数据所处污点数据发生字符修改时,获取字符修改后相应得到的第二有效污点数据的第二坐标信息;当字符修改后的污点数据执行敏感函数时,基于第二坐标信息确定第二有效污点数据相对于污点数据的传播结果状态。通过本申请方案的实施,在污点数据生成时确定有效污点数据的坐标信息,当污点数据发生字符修改后更新有效污点数据的坐标信息,在污点数据执行敏感函数时确定有效污点数据的传播状态,有效的提升了数据流跟踪方法识别漏洞的准确性。
Description
技术领域
本申请涉及网络安全技术领域,尤其涉及一种污点数据跟踪方法、装置及计算机可读存储介质。
背景技术
数据流漏洞跟踪是指跟踪请求中污点数据的输入阶段,传播阶段,执行阶段,判断污点数据是否经历了完整的三阶段并且没有经过任何安全方法,即会认为该污点数据存在漏洞,通常利用其检测SQL注入,命令行注入等。目前常见的数据流跟踪方法,只能基于污点数据的内存地址进行标识,当污点数据本身发生一些变化的时候,正常的数据流跟踪方法就无法进行正常跟踪,这时候就会出现一系列的误报问题。
发明内容
本申请实施例提供了一种污点数据跟踪方法、装置及计算机可读存储介质,至少能够解决相关技术中当污点数据发生变化时,正常的数据流跟踪方法无法对变化后的污点数据进行正常跟踪,从而出现一系列误报的问题。
本申请实施例第一方面提供了一种污点数据跟踪方法,包括:
根据插桩技术将检测逻辑植入到被测应用程序;
获取第一有效污点数据的第一坐标信息;其中,所述坐标信息包括起始坐标和结束坐标;
当根据所述检测逻辑确定所述第一有效污点数据所处污点数据发生字符修改时,获取所述字符修改后相应得到的第二有效污点数据的第二坐标信息;
当所述字符修改后的所述污点数据执行敏感函数时,基于所述第二坐标信息确定所述第二有效污点数据相对于所述污点数据的传播结果状态;其中,所述传播结果状态包括存在状态和不存在状态。
本申请实施例第二方面提供了一种污点数据跟踪装置,包括:
植入模块,用于根据插桩技术将检测逻辑植入到被测应用程序;
第一获取模块,用于获取第一有效污点数据的第一坐标信息;其中,所述坐标信息包括起始坐标和结束坐标;
第二获取模块,用于当根据所述检测逻辑确定所述第一有效污点数据所处污点数据发生字符修改时,获取所述字符修改后相应得到的第二有效污点数据的第二坐标信息;
确定模块,用于当所述字符修改后的所述污点数据执行敏感函数时,基于所述第二坐标信息确定所述第二有效污点数据相对于所述污点数据的传播结果状态;其中,所述传播结果状态包括存在状态和不存在状态。
本申请实施例第三方面提供了一种电子装置,包括:存储器、处理器及总线,所述总线用于实现所述存储器、处理器之间的连接通讯;所述处理器用于执行存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序时上述本申请实施例第一方面提供的污点数据跟踪方法中的各步骤。
本申请实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现上述本申请实施例第一方面提供的污点数据跟踪方法中的各步骤。
由上可见,根据本申请方案所提供的污点数据跟踪方法、装置及计算机可读存储介质,根据插桩技术将检测逻辑植入到被测应用程序;获取第一有效污点数据的第一坐标信息;当根据检测逻辑确定第一有效污点数据所处污点数据发生字符修改时,获取字符修改后相应得到的第二有效污点数据的第二坐标信息;当字符修改后的污点数据执行敏感函数时,基于第二坐标信息确定第二有效污点数据相对于污点数据的传播结果状态。通过本申请方案的实施,在污点数据生成时确定有效污点数据的坐标信息,当污点数据发生字符修改后更新有效污点数据的坐标信息,在污点数据执行敏感函数时确定有效污点数据的传播状态,有效的提升了数据流跟踪方法识别漏洞的准确性。
附图说明
图1为本申请第一实施例提供的污点数据跟踪方法的基本流程示意图;
图2为本申请第二实施例提供的污点数据跟踪方法的细化流程示意图;
图3为本申请第三实施例提供的污点数据跟踪装置的程序模块示意图;
图4为本申请第四实施例提供的电子装置的结构示意图。
具体实施方式
为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了解决相关技术中当污点数据发生变化时,正常的数据流跟踪方法无法对变化后的污点数据进行正常跟踪,从而出现一系列误报的问题,本申请第一实施例提供了污点数据跟踪方法。
如下为污点数据在输入阶段、传播阶段、执行阶段的程序代码:
①String taintedData = request.getParameter("taintedData"); // world
②TaintedData = "hello" + taintedData; // helloworld
③TaintedData = taintedData + " come!"; // helloworld come!
④StringBuilder stringBuilder = new StringBuilder(taintedData);//helloworld come!
⑤StringBuilder.insert(6, "XX"); // hellowXXorld come!
⑥TaintedData = taintedData.sub string(0, 5); // hello
⑦Runtime.getRuntime().exec(taintedData);
其中①代表了污点数据的输入阶段,②,③,⑤,⑥代表了污点数据的传播阶段,⑦代表了污点数据的执行阶段,实际上在第⑦步执行函数的输入参数属于污点数据在传播阶段发生变化后的参数。
如图1为本实施例提供的污点数据跟踪方法的基本流程图,该污点数据跟踪方法包括以下的步骤:
步骤101、根据插桩技术将检测逻辑植入到被测应用程序。
具体的,植入是指利用Java虚拟机技术将检测逻辑的组件植入到被测应用程序中,其中检测逻辑的组件是与被测应用程序所处同一个容器的agent进程,所以组件可以获取到应用程序的每一个请求执行过程的上下文。数据流漏洞跟踪是指跟踪请求中污点数据的输入阶段,传播阶段,执行阶段,判断污点数据是否经历了完整的三阶段并且没有经过任何安全方法,即会认为该污点数据存在漏洞,通常利用其检测SQL注入,命令行注入等。现有的数据流跟踪方法只会对生成的污点数据进行跟踪,并不会检测污点数据在传播过程中是否发生变化。在本实施例中,在被测应用程序启动后,通过插桩工具在被测应用程序的输入阶段、传播阶段、执行阶段插入检测逻辑,对不同阶段的污点数据进行检测。
步骤102、获取第一有效污点数据的第一坐标信息。
具体的,本实施例的坐标信息包括起始坐标和结束坐标。在数据流跟踪的输入阶段,在检测到有来自用户输入的污点数据后,将该污点数据中的有效污点数据设定为第一有效污点数据,利用创建的污点数据坐标生成模块,获取第一有效污点数据的起始坐标和结束坐标,如上文代码①所示,在获取到tainted Data的值为world时,起始坐标为0,结束坐标为4,并将该起始坐标和结束坐标设定为第一坐标信息。
在本实施例一种可选的实施方式中,在获取第一有效污点数据的第一坐标信息的步骤之前,还包括:根据检测逻辑实时检测数据流在输入阶段是否存在污点数据;当检测到用户输入的数据中存在污点数据时,从污点数据中确定第一有效污点数据。
具体的,在本实施例中,通过在被测应用中插入的检测逻辑实时检测在输入阶段的数据流中是否存在污点数据,而本实施例不仅需要检测污点数据,而且还需要在污点数据中确定是否含有有效污点数据,从而提高输入阶段检测污点数据的准确性。
步骤103、当根据检测逻辑确定第一有效污点数据所处污点数据发生字符修改时,获取字符修改后相应得到的第二有效污点数据的第二坐标信息。
具体的,在实际应用中,现有技术的数据流跟踪方法在数据流的传播阶段时,通常检测不到污点数据是否发生变化,而拼接或者截取都会影响有效污点数据在污点数据中的位置,从而导致在识别漏洞方面产生了偏差,在本实施例中,根据在被测应用中插入的检测逻辑检测数据流在传播阶段中,污点数据是否发生字符拼接或者字符截取,在检测到污点数据发生字符拼接或者字符截取之后,识别发生字符拼接或者字符截取后的污点数据是否还存在有效污点数据,并将该有效污点数据设定为第二有效污点数据,获取第二有效污点数据的起始坐标和结束坐标,并将该起始坐标和结束坐标设定为第二坐标信息,利用创建的污点数据坐标更新模块,对数据流跟踪过程中第一有效污点数据的第一坐标信息更新为第二有效污点数据的第二坐标信息。
在本实施例一种可选的实施方式中,如上文代码②,③,⑤所示,在污点数据发生字符拼接时,获取字符修改后相应得到的第二有效污点数据的第二坐标信息的步骤,包括:确定污点数据中的硬编码相对于第一有效污点数据的拼接位置。
具体的,在实际应用中,污点数据在传播过程中可能发生字符拼接,在字符拼接时,可以将硬编码的字符拼接在第一有效污点数据的前面、后面或者中间位置。在本实施例中,通过检查逻辑检测到污点数据发生字符拼接之后,如果硬编码的字符拼接在第一有效污点数据的前面,那么第二有效污点数据的起始位置为硬编码的数据的长度+第一有效污点数据的起始位置,第二有效污点数据的结束位置为硬编码的数据的长度+第一有效污点数据的结束位置(如上文硬编码数据为“hello”,有效污点数据的开始位置为“hello”的长度+原始有效开始位置:5,有效污点数据的结束位置为“hello”的长度+原始有效污点数据的结束位置:9)。如果硬编码的字符拼接在第一污点数据的后面,那么第二有效污点数据的开始位置和结束位置保持不变。如果硬编码的字符拼接在第一有效污点数据的中间位置,那么在获取到中间位置的坐标和插入数据的长度后,将第一有效污点数据一分为二,第一个污点数据的有效坐标开始位置为第一有效污点数据的开始位置,第一个污点数据的有效坐标结束位置为中间位置的坐标-第一有效污点数据的开始位置;第二个污点数据的有效坐标开始位置为中间位置的坐标+插入字符的长度,第二个污点数据的有效坐标结束位置为第一有效污点数据的结束位置+插入字符的长度。在获取到第二有效污点数据的第二坐标信息之后,利用创建的污点数据坐标更新模块,对数据流传播过程中发声了字符拼接的第一有效污点数据的第一坐标信息更新为字符拼接后的第二有效污点数据的第二坐标信息,使数据流跟踪方法在传播过程中对有效污点数据的跟踪更加准确。
在本实施例另一种可选的实施方式中,如上文代码⑥所示,在污点数据发生字符截取时,获取字符修改后相应得到的第二有效污点数据的第二坐标信息的步骤,包括:根据预设的比对规则将所截取的污点数据的坐标信息与第一坐标信息进行比对;根据坐标比对结果,获取字符截取后相应得到的第二有效污点数据的第二坐标信息。
具体的,在实际应用中,污点数据在传播过程中发生字符截取,会在污点数据中的截取一段污点数据继续进行传播,在本实施例中,通过检查逻辑检测到污点数据发生字符截取之后,需要判断截取后的污点数据中是否包含有效污点数据,此时可以根据预设的比对规则将所截取的污点数据的坐标信息与第一坐标信息进行比对,根据坐标比对结果,获取字符截取后相应得到的第二有效污点数据的第二坐标信息,利用创建的污点数据坐标更新模块,对数据流传播过程中发生字符拼接的第一有效污点数据的第一坐标信息更新为字符拼接后的第二有效污点数据的第二坐标信息,使数据流跟踪方法在传播过程中对有效污点数据的跟踪更加准确。
进一步的,在本实施例一种可选的实施方式中,根据预设的比对规则将所截取的污点数据的坐标信息与第一坐标信息进行比对的步骤,包括:根据预设的比对规则检测所截取的污点数据的坐标信息与第一坐标信息是否存在交集;当存在所述交集时,确定交集坐标信息。
具体的,本实施例的交集坐标信息为坐标比对结果,在污点数据发生字符截取之后,获取所截取的污点数据的坐标信息,将该坐标信息与第一坐标信息进行比对,检测所截取的污点数据的坐标信息与第一坐标信息是否存在交集,当存在交集时,根据坐标的相交情况获取交集坐标信息,当所截取的污点数据的坐标信息与第一坐标信息部分相交时,根据所截取的污点数据的起始坐标和结束坐标,与第一坐标信息的起始坐标和结束坐标的坐标值的大小确定交集坐标信息,当所截取的污点数据的坐标信息的范围包含了第一坐标信息时,将第一坐标信息确定为交集坐标信息,当所截取的污点数据的坐标信息在第一坐标信息的范围内时,将所截取的污点数据的坐标信息确定为交集坐标信息。
应当说明的是,在本实施例一种可选的实施方式中,根据预设的比对规则检测所截取的污点数据的坐标信息与第一坐标信息是否存在交集的步骤之后,还包括:当不存在交集时,将所截取的污点数据的坐标信息更新为第三坐标信息;其中,第三坐标信息表示为(0,0);当字符截取后的污点数据执行敏感函数时,根据第三坐标信息确定第二有效污点数据相对于污点数据的传播结果状态为不存在状态。
具体的,在本实施例中,当所截取的污点数据的坐标信息与第一坐标信息不存在交集时,直接将所截取的污点数据的坐标信息更新为(0,0),表示污点数据经过字符截取之后,截取后的污点数据中已经不存在有效污点数据,则可认为该污点数据已失效或在传播过程中已丢失,在该字符截取后的污点数据经过敏感函数时,检测该污点数据的坐标信息,当检测到该污点数据的坐标信息为(0,0)时,不会上报漏洞,提高识别漏洞的准确性。
在本实施例一中可选的实施方式中,获取第一有效污点数据的第一坐标信息的步骤之后,还包括:将第一坐标信息作为值以及将相应内存地址作为键,构建键值对;将键值对存储到内存集合中。
具体的,在实际应用中,现有的数据流跟踪方法是基于污点数据的内存地址进行识别,但是在污点数据发生变化时,并不会根据污点数据的变化而更新内存地址,在本实施例中,在将第一坐标信息的内存地址作为key,起始坐标和结束坐标作为value,构建键值对存入内存集合之后,还会根据污点数据在传播过程中发生的变化实时对有效污点数据的坐标信息的键值对进行更新并存入内存集合中,有助于快速识别污点数据中是否存在有效污点数据。
步骤104、当字符修改后的污点数据执行敏感函数时,基于第二坐标信息确定第二有效污点数据相对于污点数据的传播结果状态。
具体的,本实施例的传播结果状态包括存在状态和不存在状态。在本实施例中,在数据流跟踪的执行阶段时,判断字符修改后的污点数据是否经过敏感函数,诸如命令行执行,SQL操作等,当经过了敏感函数时,根据第二有效污点数据的第二坐标信息进一步的判断该污点数据是否存在有效污点数据,如果不存在即可认为在传播过程中污点数据丢失,即不会被恶意用户操作的可能,此时不上报漏洞,提升准确性。
基于上述请求的实施例方案,根据插桩技术将检测逻辑植入到被测应用程序;获取第一有效污点数据的第一坐标信息;当根据检测逻辑确定第一有效污点数据所处污点数据发生字符修改时,获取字符修改后相应得到的第二有效污点数据的第二坐标信息;当字符修改后的污点数据执行敏感函数时,基于第二坐标信息确定第二有效污点数据相对于污点数据的传播结果状态。通过本申请方案的实施,在污点数据生成时确定有效污点数据的坐标信息,当污点数据发生字符修改后更新有效污点数据的坐标信息,在污点数据执行敏感函数时确定有效污点数据的传播状态,有效的提升了数据流跟踪方法识别漏洞的准确性。
图2中的方法为本申请第二实施例提供的一种细化的污点数据跟踪方法,该污点数据跟踪方法包括:
步骤201、根据插桩技术将检测逻辑植入到被测应用程序。
具体的,在实际应用中,现有的数据流跟踪方法只会对生成的污点数据进行跟踪,并不会检测污点数据在传播过程中是否发生变化。在本实施例中,在被测应用程序启动后,通过插桩工具在被测应用程序的输入阶段、传播阶段、执行阶段插入检测逻辑,对不同阶段的污点数据进行检测。
步骤202、根据检测逻辑实时检测数据流在输入阶段是否存在污点数据。
步骤203、当检测到用户输入的数据中存在污点数据时,从污点数据中确定第一有效污点数据的第一坐标信息。
步骤204、在字符修改为字符拼接时,确定污点数据中硬编码相对于第一有效污点数据的拼接位置。
步骤205、根据拼接位置,获取字符拼接后相应得到的第二有效污点数据的第二坐标信息。
步骤206、当字符拼接后的污点数据执行敏感函数时,基于第二坐标信息确定第二有效污点数据相对于污点数据的传播结果状态。
具体的,在本实施例中,在数据流跟踪的执行阶段时,判断字符拼接后的污点数据是否经过敏感函数,诸如命令行执行,SQL操作等,当经过敏感函数时,根据第二有效污点数据的第二坐标信息进一步的判断该污点数据是否存在有效污点数据,如果不存在即可认为在传播过程中污点数据丢失,即不会被恶意用户操作的可能,此时不上报漏洞,提升准确性。
应当理解的是,本实施例中各步骤的序号的大小并不意味着步骤执行顺序的先后,各步骤的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成唯一限定。
本申请实施例公开了一种污点数据跟踪方法,根据插桩技术将检测逻辑植入到被测应用程序;根据检测逻辑实时检测数据流在输入阶段是否存在污点数据;当检测到用户输入的数据中存在污点数据时,从污点数据中确定第一有效污点数据的第一坐标信息;在字符修改为字符拼接时,确定污点数据中硬编码相对于第一有效污点数据的拼接位置;根据拼接位置,获取字符拼接后相应得到的第二有效污点数据的第二坐标信息;当字符拼接后的污点数据执行敏感函数时,基于第二坐标信息确定第二有效污点数据相对于污点数据的传播结果状态。通过本申请方案的实施,在检测到污点数据在传播过程中发生字符拼接时,根据拼接位置,获取字符拼接后相应得到的第二有效污点数据的第二坐标信息,当该污点数据在执行阶段经过敏感函数时,根据第二坐标信息判断该污点数据的传播结果状态,根据传播结果状态决定是否上报漏洞,有效的提高了数据流跟踪方法识别漏洞的准确性。
图3为本申请第三实施例提供的一种污点数据跟踪装置。该污点数据跟踪装置可用于实现前述实施例中的污点数据跟踪方法。如图3所示,该污点数据跟踪装置主要包括:
植入模块301,用于根据插桩技术将检测逻辑植入到被测应用程序;
第一获取模块302,用于获取第一有效污点数据的第一坐标信息;其中,坐标信息包括起始坐标和结束坐标;
第二获取模块303,用于当根据检测逻辑确定第一有效污点数据所处污点数据发生字符修改时,获取字符修改后相应得到的第二有效污点数据的第二坐标信息;
确定模块304,用于当字符修改后的污点数据执行敏感函数时,基于第二坐标信息确定第二有效污点数据相对于污点数据的传播结果状态;其中,传播结果状态包括存在状态和不存在状态。
在本实施例一种可选的实施方式中,该污点数据跟踪装置还包括:检测模块,用于根据检测逻辑实时检测数据流在输入阶段是否存在污点数据。确定模块还用于:当检测到用户输入的数据中存在污点数据时,从污点数据中确定第一有效污点数据。
在本实施例一种可选的实施方式中,第一获取模块具体用于:确定污点数据中硬编码相对于第一有效污点数据的拼接位置;根据拼接位置,获取字符拼接后相应得到的第二有效污点数据的第二坐标信息。
在本实施例另一种可选的实施方式中,第一获取模块具体用于:根据预设的比对规则将所截取的污点数据的坐标信息与第一坐标信息进行比对;根据坐标比对结果,获取字符截取后相应得到的第二有效污点数据的第二坐标信息。
进一步的,在本实施例一种可选的实施方式中,第一获取模块在执行上述根据预设的比对规则将所截取的污点数据的坐标信息与第一坐标信息进行比对的功能时,具体用于:根据预设的比对规则检测所截取的污点数据的坐标信息与第一坐标信息是否存在交集;当存在交集时,确定交集坐标信息;其中,交集坐标信息为坐标比对结果。
更进一步的,在本实施例一种可选的实施方式中,该污点数据跟踪装置还包括:更新模块,用于当不存在交集时,将所截取的污点数据的坐标信息更新为第三坐标信息,其中,第三坐标信息表示为(0,0);确定模块还用于:当字符截取后的污点数据执行敏感函数时,根据第三坐标信息确定第二有效污点数据相对于污点数据的传播结果状态为不存在状态。
在本实施例一种可选的实施方式中,该污点数据跟踪装置还包括:构建模块、存储模块。构建模块用于:将第一坐标信息作为值以及将相应内存地址作为键,构建键值对。存储模块用于:将键值对存储到内存集合中。
应当说明的是,第一、二实施例中的污点数据跟踪方法均可基于本实施例提供的污点数据跟踪装置实现,所属领域的普通技术人员可以清楚的了解到,为描述的方便和简洁,本实施例中所描述的污点数据跟踪装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
根据本申请方案所提供的污点数据跟踪装置,根据插桩技术将检测逻辑植入到被测应用程序;获取第一有效污点数据的第一坐标信息;当根据检测逻辑确定第一有效污点数据所处污点数据发生字符修改时,获取字符修改后相应得到的第二有效污点数据的第二坐标信息;当字符修改后的污点数据执行敏感函数时,基于第二坐标信息确定第二有效污点数据相对于污点数据的传播结果状态。通过本申请方案的实施,在污点数据生成时确定有效污点数据的坐标信息,当污点数据发生字符修改后更新有效污点数据的坐标信息,在污点数据执行敏感函数时确定有效污点数据的传播状态,有效的提升了数据流跟踪方法识别漏洞的准确性。
图4为本申请第四实施例提供的一种电子装置。该电子装置可用于实现前述实施例中的污点数据跟踪方法。如图4所示,该电子装置主要包括:
存储器401、处理器402、总线403及存储在存储器401上并可在处理器402上运行的计算机程序,存储器401和处理器402通过总线403连接。处理器402执行该计算机程序时,实现前述实施例中的污点数据跟踪方法。其中,处理器的数量可以是一个或多个。
存储器401可以是高速随机存取记忆体(RAM,Random Access Memory)存储器,也可为非不稳定的存储器(non-volatile memory),例如磁盘存储器。存储器401用于存储可执行程序代码,处理器402与存储器401耦合。
进一步的,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是设置于上述各实施例中的电子装置中,该计算机可读存储介质可以是前述图4所示实施例中的存储器。
该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现前述实施例中的污点数据跟踪方法。进一步的,该计算机可存储介质还可以是U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或模块的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的可读存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上为对本申请所提供的污点数据跟踪方法、装置及计算机可读存储介质的描述,本领域的技术人员依据本申请实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种污点数据跟踪方法,其特征在于,包括:
根据插桩技术将检测逻辑植入到被测应用程序;
获取第一有效污点数据的第一坐标信息;其中,所述坐标信息包括起始坐标和结束坐标;
当根据所述检测逻辑确定所述第一有效污点数据所处污点数据发生字符修改时,获取所述字符修改后相应得到的第二有效污点数据的第二坐标信息;
当所述字符修改后的所述污点数据执行敏感函数时,基于所述第二坐标信息确定所述第二有效污点数据相对于所述污点数据的传播结果状态;其中,所述传播结果状态包括存在状态和不存在状态。
2.根据权利要求1所述的污点数据跟踪方法,其特征在于,所述获取第一有效污点数据的第一坐标信息的步骤之前,还包括:
根据所述检测逻辑实时检测数据流在输入阶段是否存在污点数据;
当检测到用户输入的数据中存在污点数据时,从所述污点数据中确定所述第一有效污点数据。
3.根据权利要求1所述的污点数据跟踪方法,其特征在于,在所述字符修改为字符拼接时,所述获取所述字符修改后相应得到的第二有效污点数据的第二坐标信息的步骤,包括:
确定所述污点数据中硬编码相对于所述第一有效污点数据的拼接位置;
根据所述拼接位置,获取所述字符拼接后相应得到的第二有效污点数据的第二坐标信息。
4.根据权利要求1所述的污点数据跟踪方法,其特征在于,在所述字符修改为字符截取时,所述获取所述字符修改后相应得到的第二有效污点数据的第二坐标信息的步骤,包括:
根据预设的比对规则将所截取的污点数据的坐标信息与所述第一坐标信息进行比对;
根据坐标比对结果,获取所述字符截取后相应得到的第二有效污点数据的第二坐标信息。
5.根据权利要求4所述的污点数据跟踪方法,其特征在于,所述根据预设的比对规则将所截取的污点数据的坐标信息与所述第一坐标信息进行比对的步骤,包括:
根据预设的比对规则检测所截取的污点数据的坐标信息与所述第一坐标信息是否存在交集;
当存在所述交集时,确定交集坐标信息;其中,所述交集坐标信息为所述坐标比对结果。
6.根据权利要求5所述的污点数据跟踪方法,其特征在于,所述根据预设的比对规则检测所截取的污点数据的坐标信息与所述第一坐标信息是否存在交集的步骤之后,还包括:
当不存在所述交集时,将所截取的所述污点数据的坐标信息更新为第三坐标信息;其中,所述第三坐标信息表示为(0,0);
当所述字符截取后的所述污点数据执行敏感函数时,根据所述第三坐标信息确定所述第二有效污点数据相对于所述污点数据的传播结果状态为所述不存在状态。
7.根据权利要求1至6任意一项所述的污点数据跟踪方法,其特征在于,所述获取第一有效污点数据的第一坐标信息的步骤之后,还包括:
将所述第一坐标信息作为值以及将相应内存地址作为键,构建键值对;
将所述键值对存储到内存集合中。
8.一种污点数据跟踪装置,其特征在于,包括:
植入模块,用于根据插桩技术将检测逻辑植入到被测应用程序;
第一获取模块,用于获取第一有效污点数据的第一坐标信息;其中,所述坐标信息包括起始坐标和结束坐标;
第二获取模块,用于当根据所述检测逻辑确定所述第一有效污点数据所处污点数据发生字符修改时,获取所述字符修改后相应得到的第二有效污点数据的第二坐标信息;
确定模块,用于当所述字符修改后的所述污点数据执行敏感函数时,基于所述第二坐标信息确定所述第二有效污点数据相对于所述污点数据的传播结果状态;其中,所述传播结果状态包括存在状态和不存在状态。
9.一种电子装置,包括:存储器、处理器及总线,其特征在于,所述总线用于实现所述存储器、处理器之间的连接通讯;所述处理器用于执行存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序时,实现权利要求1至7中任意一项所述方法中的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1至7中的任意一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210109670.1A CN114138681A (zh) | 2022-01-29 | 2022-01-29 | 一种污点数据跟踪方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210109670.1A CN114138681A (zh) | 2022-01-29 | 2022-01-29 | 一种污点数据跟踪方法、装置及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114138681A true CN114138681A (zh) | 2022-03-04 |
Family
ID=80381753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210109670.1A Pending CN114138681A (zh) | 2022-01-29 | 2022-01-29 | 一种污点数据跟踪方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114138681A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114968826A (zh) * | 2022-07-28 | 2022-08-30 | 深圳开源互联网安全技术有限公司 | 应用程序漏洞修复验证方法及系统 |
CN115186274A (zh) * | 2022-09-14 | 2022-10-14 | 深圳开源互联网安全技术有限公司 | 基于iast的安全测试方法及装置 |
CN115277062A (zh) * | 2022-06-13 | 2022-11-01 | 深圳开源互联网安全技术有限公司 | 一种恶意攻击拦截方法、装置、设备及可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080216175A1 (en) * | 2006-05-18 | 2008-09-04 | Vmware, Inc. | Computational system including mechanisms for tracking taint |
CN104765687A (zh) * | 2015-04-10 | 2015-07-08 | 江西师范大学 | 基于对象跟踪和污点分析的j2ee程序漏洞检测方法 |
US20170318045A1 (en) * | 2016-04-27 | 2017-11-02 | Sap Se | End-to-End Taint Tracking for Detection and Mitigation of Injection Vulnerabilities in Web Applications |
CN111046396A (zh) * | 2020-03-13 | 2020-04-21 | 深圳开源互联网安全技术有限公司 | web应用测试数据流跟踪方法及系统 |
CN112307474A (zh) * | 2019-07-29 | 2021-02-02 | Sap欧洲公司 | 附加到字符串的污染信息的管理 |
CN113220525A (zh) * | 2021-04-28 | 2021-08-06 | 杭州孝道科技有限公司 | 一种跨应用的动态污点跟踪方法 |
-
2022
- 2022-01-29 CN CN202210109670.1A patent/CN114138681A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080216175A1 (en) * | 2006-05-18 | 2008-09-04 | Vmware, Inc. | Computational system including mechanisms for tracking taint |
CN104765687A (zh) * | 2015-04-10 | 2015-07-08 | 江西师范大学 | 基于对象跟踪和污点分析的j2ee程序漏洞检测方法 |
US20170318045A1 (en) * | 2016-04-27 | 2017-11-02 | Sap Se | End-to-End Taint Tracking for Detection and Mitigation of Injection Vulnerabilities in Web Applications |
CN112307474A (zh) * | 2019-07-29 | 2021-02-02 | Sap欧洲公司 | 附加到字符串的污染信息的管理 |
CN111046396A (zh) * | 2020-03-13 | 2020-04-21 | 深圳开源互联网安全技术有限公司 | web应用测试数据流跟踪方法及系统 |
CN113220525A (zh) * | 2021-04-28 | 2021-08-06 | 杭州孝道科技有限公司 | 一种跨应用的动态污点跟踪方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115277062A (zh) * | 2022-06-13 | 2022-11-01 | 深圳开源互联网安全技术有限公司 | 一种恶意攻击拦截方法、装置、设备及可读存储介质 |
CN114968826A (zh) * | 2022-07-28 | 2022-08-30 | 深圳开源互联网安全技术有限公司 | 应用程序漏洞修复验证方法及系统 |
CN114968826B (zh) * | 2022-07-28 | 2022-11-22 | 深圳开源互联网安全技术有限公司 | 应用程序漏洞修复验证方法及系统 |
CN115186274A (zh) * | 2022-09-14 | 2022-10-14 | 深圳开源互联网安全技术有限公司 | 基于iast的安全测试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114138681A (zh) | 一种污点数据跟踪方法、装置及计算机可读存储介质 | |
US8424090B2 (en) | Apparatus and method for detecting obfuscated malicious web page | |
US8997253B2 (en) | Method and system for preventing browser-based abuse | |
EP2426618B1 (en) | Information device, program, method for preventing execution of unauthorized program code, and computer readable recording medium | |
KR20110119918A (ko) | 정상 프로세스에 위장 삽입된 악성코드 탐지 장치, 시스템 및 방법 | |
CN103390130A (zh) | 基于云安全的恶意程序查杀的方法、装置和服务器 | |
MX2010014464A (es) | Sistema y metodo para el manejo seguro de memoria. | |
US20070220603A1 (en) | Data Processing Method and Device | |
CN111967044B (zh) | 一种适用于云环境的被泄漏隐私数据的追踪方法及系统 | |
CN106250761B (zh) | 一种识别web自动化工具的设备、装置及方法 | |
CN115098863A (zh) | 一种基于静态与动态分析的智能合约重入漏洞检测方法 | |
CN113158197A (zh) | 一种基于主动iast的sql注入漏洞检测方法、系统 | |
CN113726825B (zh) | 一种网络攻击事件反制方法、装置及系统 | |
CN104603791A (zh) | 签名验证装置及签名验证方法和程序 | |
CN103034810A (zh) | 一种检测方法、装置及电子设备 | |
CN114417353A (zh) | 一种字节数组检测方法、装置及计算机可读存储介质 | |
CN106682512A (zh) | 一种防止程序被修改的方法及其装置、系统 | |
EP3812940B1 (en) | Vulnerability analyzer | |
CN113919841A (zh) | 一种基于静态特征和动态插桩的区块链交易监测方法及系统 | |
CN111420406B (zh) | 一种通过内存清零实现防止游戏外挂的方法及其系统 | |
CN114637988A (zh) | 一种面向二进制的函数级软件随机化方法 | |
CN110674501B (zh) | 恶意驱动检测方法、装置、设备及介质 | |
CN108073411A (zh) | 一种补丁的内核加载方法及装置 | |
CN113448870A (zh) | 一种基于动态执行信息分析的智能合约重入缺陷检测方法 | |
CN102822836B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220304 |