CN111046396A - web应用测试数据流跟踪方法及系统 - Google Patents

web应用测试数据流跟踪方法及系统 Download PDF

Info

Publication number
CN111046396A
CN111046396A CN202010172809.8A CN202010172809A CN111046396A CN 111046396 A CN111046396 A CN 111046396A CN 202010172809 A CN202010172809 A CN 202010172809A CN 111046396 A CN111046396 A CN 111046396A
Authority
CN
China
Prior art keywords
function
input
stage
data
decoding
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
CN202010172809.8A
Other languages
English (en)
Other versions
CN111046396B (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.)
Shenzhen Kaiyuan Internet Security Technology Co Ltd
Original Assignee
Shenzhen Kaiyuan Internet Security 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 Shenzhen Kaiyuan Internet Security Technology Co Ltd filed Critical Shenzhen Kaiyuan Internet Security Technology Co Ltd
Priority to CN202010172809.8A priority Critical patent/CN111046396B/zh
Publication of CN111046396A publication Critical patent/CN111046396A/zh
Application granted granted Critical
Publication of CN111046396B publication Critical patent/CN111046396B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Abstract

本发明公开了一种基于IAST测试平台的web应用测试数据流跟踪方法及系统,其中数据流跟踪方法包括:在被测应用程序所在服务器上安装代理程序,所述代理程序用于与运行所述应用程序的虚拟机沟通,所述应用程序启动后,通过所述代理程序和字节码插桩工具在所述应用程序的输入阶段和输出阶段中的关键函数内插入监测代码,插桩所述监测代码时,在所述监测代码中传入待插桩函数的类文件名、方法名、方法参数和返回值,通过所述监测代码得到污点数据在所述应用程序中的传播途径,所述污点数据为测试过程中用户输入的数据;采样上述数据流跟踪方法,不但可实现对污点数据的实时跟踪,同时还能基于实际请求,准确获取请求‑响应过程中的执行方法链。

Description

web应用测试数据流跟踪方法及系统
技术领域
本发明涉及软件测试技术领域,尤其涉及一种基于IAST测试平台的web应用测试数据流跟踪方法及系统。
背景技术
随着网络技术的发展,web应用的数据也有着快速的增长,同时应用的接口数量也越来越多,为了保证应用程序正常运行,需要产品在上线前对其有着充分的测试,其中包括判断是否存在越权漏洞。Web应用安全测试技术目前业界常用的技术有DAST(动态应用程序安全测试),SAST(静态应用程序安全测试)和IAST(交互式应用程序安全测试),在测试中,数据流跟踪是多种安全漏洞检测(包括SQL注入、命令行注入和目录遍历等)的基础,目前业界所用的数据流跟踪方法是基于模拟器进行数据流跟踪的优化,包括对客户操作系统指令进行反汇编的阶段、编译产生宿主机执行代码的阶段和最终代码执行的阶段。该技术主要是基于系统级别的,需要获取系统指令,对于需要检测Web应用程序安全性的用户来说,无法准确定位到具体的代码文件,行数或者函数及参数。
发明内容
本发明的目的是提供一种基于IAST测试平台的web应用测试数据流跟踪方法,在完成应用程序功能测试的同时还可以实时获取应用程序的完整信息,以做到对数据的准确定位。
本发明的另一目的是提供一种基于IAST测试平台的web应用测试数据流跟踪系统,在完成应用程序功能测试的同时还可以实时获取应用程序的完整信息,以做到对数据的准确定位。
为了实现上述目的,本发明公开了一种基于IAST测试平台的web应用测试数据流跟踪方法,其包括:在被测应用程序所在服务器上安装代理程序,所述代理程序用于与运行所述应用程序的虚拟机沟通,所述应用程序启动后,通过所述代理程序和字节码插桩工具在所述应用程序的输入阶段和输出阶段中的关键函数内插入监测代码,插桩所述监测代码时,在所述监测代码中传入待插桩函数的类文件名、方法名、方法参数和返回值,通过所述监测代码得到污点数据在所述应用程序中的传播途径,所述污点数据为测试过程中用户输入的数据。
与现有技术相比,本发明基于IAST测试平台的web应用测试数据流跟踪方法,利用IAST测试平台中的插桩工具将监测代码插入待测应用程序中输入阶段和输出阶段中的关键函数内,在测试过程中,通过监测代码获取到污点数据从输入阶段到输出阶段的数据流;由此可知,采样上述数据流跟踪方法,可实现实时跟踪污点数据,可以在完成应用程序功能测试的同时实时获取应用程序信息,以做到对数据的准确定位,且不会受软件复杂度的影响,适用于各种复杂度的软件产品,而且无需额外安全测试时间投入,不会对现有开发流程造成任何影响,符合敏捷开发和DevOps模式下软件产品快速迭代、快速交付的要求。
较佳地,所述应用程序启动后,还在所述应用程序的传播阶段、编解码阶段中的关键函数内插入所述监测代码。
较佳地,所述输入阶段、所述传播阶段、所述编解码阶段、所述输出阶段的关键函数分别定义为输入函数、传播函数、编解码函数、输出函数,通过所述监测代码获取所述污点数据的传播途径包括:
1)、当所述输入函数执行时,插桩到所述输入函数中的所述监测代码获取到所述输入函数的input返回值,然后存储该input返回值和所述输入阶段中的方法堆栈到集合容器中;
2)、当所述传播函数执行时,所述传播函数对所述污点数据进行处理,插桩到所述传播函数中的所述监测代码获取所述传播函数的process返回值,然后存储该process返回值和所述传播阶段中的方法堆栈所述集合容器中;
3)、所述编解码函数包括编码函数和解码函数,当所述编码函数执行时,所述编码函数对所述污点数据进行安全编码,插桩到所述编码函数中的监测代码获取所述编码函数的encode返回值并对经过编码的污点数据打上编码标记,然后存储该encode返回值至所述集合容器中;当所述解码函数执行时,所述解码函数对相应的污点数据进行解码,插桩到所述解码函数中的监测代码获取所述解码函数的decode返回值并对经过解码的污点数据打上解码标记,然后存储该decode返回值到所述集合容器中;
4)、当所述输出函数执行时,所述输出函数根据所述解码函数的返回值进行数据库查询操作,插桩到所述输出函数中的监测代码执行下列操作:
获取所述输出函数的输入参数,所述输入参数为所述解码函数返回的污点数据;
查询所述输入参数在所述集合容器中是否存在,如果是,
查询所述输入参数是否带有解码标记,如果是,
存储所述输入参数和所述输出阶段中的方法堆栈至所述集合容器中;
从所述集合容器中依次取出所存入的污点数据和方法堆栈,形成所述污点数据的完整数据流。
本发明还公开一种基于IAST测试平台的测试数据流跟踪系统,其包括代理模块、插桩模块和监测模块;所述代理模块用于在被测应用程序所在服务器上安装代理程序,所述代理程序用于与运行所述应用程序的虚拟机沟通;所述插桩模块,用于在所述应用程序启动后通过所述代理程序和字节码插桩工具在所述应用程序的输入阶段和输出阶段中的关键函数内插入监测代码,且,插桩所述监测代码时,在所述监测代码中传入待插桩函数的类文件名、方法名、方法参数和返回值;所述监测模块,用于根据所述监测代码获得污点数据在所述应用程序中的传播途径,所述污点数据为测试过程中用户输入的数据。
较佳地,所述应用程序启动后,所述插桩模块还在所述应用程序的传播阶段、编解码阶段中的关键函数内插入所述监测代码。
较佳地,所述输入阶段、所述传播阶段、所述编解码阶段、所述输出阶段的关键函数分别定义为输入函数、传播函数、编解码函数、输出函数,其中所述编解码函数包括编码函数和解码函数,所述监测模块包括第一执行模块、第二执行模块、第三执行模块和第四执行模块;
所述第一执行模块,用于通过插桩到所述输入函数中的所述监测代码获取到所述输入函数的input返回值,然后存储该input返回值和所述输入阶段中的方法堆栈到集合容器中;
所述第二执行模块,用于通过插桩到所述传播函数中的所述监测代码获取所述传播函数的process返回值,然后存储该process返回值和所述传播阶段中的方法堆栈到所述集合容器中;
所述第三执行模块,用于通过插桩到所述编码函数中的监测代码获取所述编码函数的encode返回值并对经过编码的污点数据打上编码标记,然后存储该encode返回值至所述集合容器中,且通过插桩到所述解码函数中的监测代码获取所述解码函数的decode返回值并对经过解码的污点数据打上解码标记,然后存储该decode返回值到所述集合容器中;
所述第四执行模块,用于通过插桩到所述输出函数中的监测代码执行下列操作:
获取所述输出函数的输入参数,所述输入参数为所述解码函数返回的污点数据;
查询所述输入参数在所述集合容器中是否存在,如果是,
查询所述输入参数是否带有解码标记,如果是,
存储所述输入参数和所述输出阶段中的方法堆栈至所述集合容器中;
从所述集合容器中依次取出所存入的污点数据和方法堆栈,形成所述污点数据的完整数据流。
本发明还公开一种基于IAST测试平台的测试数据流跟踪系统,其包括:
一个或多个处理器、存储器以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如上所述的基于IAST测试平台的web应用测试数据流跟踪方法的指令。
本发明还公开一种计算机可读存储介质,其包括计算机程序,所述计算机程序可被处理器执行以完成如上所述的基于IAST测试平台的web应用测试数据流跟踪方法。
附图说明
图1为本发明实施例中数据流跟踪方法的流程示意图。
图2为本发明实施例中监测代码在输入函数和传播函数中的执行流程图。
图3为本发明实施例中监测代码在编码函数和解码函数中的执行流程图。
图4为本发明实施例中监测代码在输出函数中的执行流程图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明公开了一种基于IAST测试平台的web应用测试数据流跟踪方法,如图1,其包括:S10、在被测应用程序所在服务器上安装代理程序,代理程序用于与运行应用程序的虚拟机(如JVM)沟通;S11、应用程序启动后,通过代理程序和字节码插桩工具在应用程序的输入阶段和输出阶段中的关键函数内插入监测代码,插桩监测代码时;S12、在监测代码中传入待插桩函数的类文件名、方法名、方法参数和返回值;S13、通过监测代码得到污点数据在应用程序中的传播途径,污点数据为测试过程中用户输入的数据。本实施例中,利用IAST测试平台中的插桩工具将监测代码插入待测应用程序中输入阶段和输出阶段中的关键函数内,在测试过程中,通过监测代码获取到污点数据从输入阶段到输出阶段的数据流。对于任何请求来说,一般都会经历输入和输出流程,但是对于一些场景的请求来说,除了要经历输入流程、输出流程,还要经历传播流程和编解码流程,因此,进一步改进:应用程序启动后,还在应用程序的传播阶段、编解码阶段中的关键函数内插入监测代码。本实施例中,输入阶段、传播阶段、编解码阶段、输出阶段的关键函数分别定义为输入函数、传播函数、编解码函数和输出函数。只要通过跟踪污点数据在上述各个阶段中的流动过程,收集污点数据经过了哪些函数,就能形成属于该污点数据的数据流。
下面以一个具体的测试场景为例说明上述实施例中数据流跟踪方法的应用。该场景为:一个Web应用程序启动成功后,用户通过客户端发送请求,服务端接受该请求后,执行输入函数和输出函数后返回最终结果至客户端,从而完成一个请求-响应的过程。如果将该请求-响应过程以“登录”为例的话,假如用户A输入“用户名”和“密码”,然后点击“登录”按钮发送请求,服务端登录接口接受到该请求后,首先执行输入函数,返回请求参数“用户名”和“密码”,然后输出函数根据“用户名”和“密码”来查询数据库的用户表,如果根据“用户名”和“密码”,输出函数查询结果不为空, 则表示用户A是合法用户,允许登录,反之禁止用户A登录。但是如果该登录接口未校验用户输入的恶意字符,那么当非法用户输入的“用户名”和“密码”中包含恶意字符时,就会产生严重的安全漏洞SQL注入。根据上述内容,如果在应用程序运行过程中,从服务端接受请求到返回响应这一过程中,跟踪污点数据(来自用户的输入数据),收集所有被污染的函数(该函数使用了污点数据进行一些逻辑判断,并且未对污点数据做校验),如果从输入一直到输出都被污染了,就可以认为在这一过程中容易产生安全漏洞。因此,通过对数据流的跟踪,可检测出应用程序是否存在漏洞,而且还可定位形成该漏洞的代码所在的文件、函数及参数。
数据流跟踪的关键在于四个阶段(输入阶段、传播阶段、编解码阶段和输出阶段)的函数。在输入阶段,主要通过调用函数从请求中获取用户的输入,这些函数就是输入函数;在传播阶段,污点数据经过某些函数后,形成了新的污点数据,这些函数就是传播函数;在编解码阶段,编解码函数包括编码函数和解码函数,通过调用编码函数对污点数据编码,把污点数据转换成安全的数据,解码就是编码的反过程,即通过调用解码函数对经过编码的污点数据进行解码操作;在输出阶段,主要通过调用某些函数输出污点数据,比如把污点数据输出到数据库或者页面上。
下面以一具体检查实例来说明对上述场景中登录动作的检测:
假设待检测web应用程序为testWebApp,用户输入用户名name和密码password,输入函数名input,传播函数名process,编码函数名encode,解码函数名decode,输出函数名output,代理程序包为iastAgent.jar。启动testWebApp前,在JVM参数中添加-javaagent:iastAgent.jar,即在JVM中添加代理,然后启动testWebApp,此时代理程序包分别在input,process,encode/decode,output函数中插入监测代码,并在监测代码中传入当前函数类文件名,方法名,方法参数和返回值,然后开始对应用程序testWebApp的测试,输入污点数据“用户名”和“密码”,然后通过监测代码跟踪污点数据从输入阶段到输出阶段的流程:
1、输入阶段,如图2,S2:输入函数input执行,从请求中获取污点数据时,通过插桩到输入函数中的监测代码获取到输入函数的input返回值,也就是污点数据“name”和“password”,然后存储该input返回值和输入阶段中的方法堆栈input_traceList到集合容器中;当应用程序采用JAVA编程时,集合容器为MAP,即将污点数据“name”和“password”和输入阶段方法堆栈到集合Map中;
2、传播阶段,如图2,S3:传播函数process执行,传播函数对污点数据进行处理,该传播函数将输入的用户名的首字母大写,返回Name,此时污点数据就是Name和password,通过插桩到传播函数中的监测代码获取传播函数的process返回值(即污点数据Name和password),然后存储该process返回值和传播阶段中的方法堆栈pro_traceList到集合容器MAP中;
3、编解码阶段,如图3,S4:当编码函数encode执行时,编码函数对污点数据进行安全编码,即传入Name和password分别进行安全编码,经过编码函数后,会对污点数据Name和password加上“encode”标记,通过插桩到编码函数中的监测代码获取编码函数的encode返回值,然后将encode返回值Name-encode和password-encdoe存入集合容器Map中;如图3,S5:当解码函数decode执行时,解码函数对相应的污点数据进行解码,即对Name解码,再对Name加上“decode”标记,此时,具有安全威胁的污点数据只有Name。因为只有带有“encode”标记的污点数据才是安全数据(不再存在恶意的字符),此时,污点数据password的标记为“encode”,污点数据Name的标记为“decode”,所以污点数据password就不再具有安全威胁。然后通过插桩到解码函数中的监测代码获取解码函数的decode返回值Name-decode和password-encdoe,然后存储该decode返回值到集合容器MAP中;
4、输出阶段,如图4,输出函数output执行后,输出函数根据解码函数的返回值Name-decode和password-encode进行数据库查询操作,然后插桩到输出函数中的监测代码执行下列操作:
获取输出函数的输入参数,输出参数为解码函数返回的污点数据Name-decode和password-encode;
查询输入参数在集合容器中是否存在,如果否,直接退出,如果是,
查询输入参数是否带有解码标记decode,如果否,直接退出,如果是,
存储输入参数和输出阶段中的方法堆栈traceList至集合容器中,即在最后一步把Name-decode存入集合容器Map中;
最后,从集合容器中依次取出所存入的污点数据(也即input返回值、process返回值、encode返回值、decode返回值)和方法堆栈,形成污点数据的完整数据流。
在上述实施例中,通过调用当前应用程序的线程方法“getStackTrace”来获取到方法堆栈,由于方法堆栈中有包含方法名和对应的行数,因此,可定位形成该漏洞的代码所在的行数,使得定位更加精确。
为便于上述数据流跟踪方法的实施,本发明还公开一种基于IAST测试平台的测试数据流跟踪系统,包括代理模块、插桩模块和监测模块;代理模块用于在被测应用程序所在服务器上安装代理程序,代理程序用于与运行应用程序的虚拟机沟通;插桩模块,用于在应用程序启动后通过代理程序和字节码插桩工具在应用程序的输入阶段和输出阶段中的关键函数内插入监测代码,且,插桩监测代码时,在监测代码中传入待插桩函数的类文件名、方法名、方法参数和返回值;监测模块,用于根据监测代码获得污点数据在应用程序中的传播途径,污点数据为测试过程中用户输入的数据。交接地,应用程序启动后,插桩模块还在应用程序的传播阶段、编解码阶段中的关键函数内插入监测代码。
进一步地,输入阶段、传播阶段、编解码阶段、输出阶段的关键函数分别定义为输入函数、传播函数、编解码函数、输出函数,其中编解码函数包括编码函数和解码函数,监测模块包括第一执行模块、第二执行模块、第三执行模块和第四执行模块。
第一执行模块用于通过插桩到输入函数中的监测代码获取到输入函数的input返回值,然后存储该input返回值和输入阶段中的方法堆栈input_traceList到集合容器中。
第二执行模块用于通过插桩到传播函数中的监测代码获取传播函数的process返回值,然后存储该process返回值和传播阶段中的方法堆栈pro_traceList到集合容器中。
第三执行模块用于通过插桩到编码函数中的监测代码获取编码函数的encode返回值并对经过编码的污点数据打上编码标记,然后存储该encode返回值至集合容器中,且通过插桩到解码函数中的监测代码获取解码函数的decode返回值并对经过解码的污点数据打上解码标记,然后存储该decode返回值到集合容器中。
第四执行模块用于通过插桩到输出函数中的监测代码执行下列操作:
获取输出函数的输入参数,输入参数为解码函数返回的污点数据;
查询输入参数在集合容器中是否存在,如果否,直接返回,如果是,
查询输入参数是否带有解码标记,如果否,直接返回,如果是,
存储输入参数和输出阶段中的方法堆栈traceList至集合容器中;
从集合容器中依次取出所存入的污点数据和方法堆栈,形成污点数据的完整数据流
关于上述数据流跟踪系统的工作过程,详见上述数据流跟踪方法,在此不再赘述。
另外,本发明还公开一种基于IAST测试平台的测试数据流跟踪系统,其包括一个或多个处理器、存储器以及一个或多个程序,其中一个或多个程序被存储在存储器中,并且被配置成由一个或多个处理器执行,程序包括用于执行如上的基于IAST测试平台的web应用测试数据流跟踪方法的指令。
另外,本发明还公开一种计算机可读存储介质,其包括计算机程序,计算机程序可被处理器执行以完成如上的基于IAST测试平台的web应用测试数据流跟踪方法。
综上,根据上述实施例中的数据流程跟踪方法,不但可实现对污点数据的实时跟踪,同时还能基于实际请求,准确获取请求-响应过程中的执行方法链。
以上所揭露的仅为本发明的优选实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范围。

Claims (8)

1.一种基于IAST测试平台的web应用测试数据流跟踪方法,其特征在于,包括:在被测应用程序所在服务器上安装代理程序,所述代理程序用于与运行所述应用程序的虚拟机沟通,所述应用程序启动后,通过所述代理程序和字节码插桩工具在所述应用程序的输入阶段和输出阶段中的关键函数内插入监测代码,插桩所述监测代码时,在所述监测代码中传入待插桩函数的类文件名、方法名、方法参数和返回值,通过所述监测代码得到污点数据在所述应用程序中的传播途径,所述污点数据为测试过程中用户输入的数据。
2.根据权利要求1所述的基于IAST测试平台的web应用测试数据流跟踪方法,其特征在于,所述应用程序启动后,还在所述应用程序的传播阶段、编解码阶段中的关键函数内插入所述监测代码。
3.根据权利要求2所述的基于IAST测试平台的web应用测试数据流跟踪方法,其特征在于,所述输入阶段、所述传播阶段、所述编解码阶段、所述输出阶段的关键函数分别定义为输入函数、传播函数、编解码函数、输出函数,通过所述监测代码获取所述污点数据的传播途径包括:
1)、当所述输入函数执行时,插桩到所述输入函数中的所述监测代码获取到所述输入函数的input返回值,然后存储该input返回值和所述输入阶段中的方法堆栈到集合容器中;
2)、当所述传播函数执行时,所述传播函数对所述污点数据进行处理,插桩到所述传播函数中的所述监测代码获取所述传播函数的process返回值,然后存储该process返回值和所述传播阶段中的方法堆栈至所述集合容器中;
3)、所述编解码函数包括编码函数和解码函数,当所述编码函数执行时,所述编码函数对所述污点数据进行安全编码,插桩到所述编码函数中的监测代码获取所述编码函数的encode返回值并对经过编码的污点数据打上编码标记,然后存储该encode返回值至所述集合容器中;当所述解码函数执行时,所述解码函数对相应的污点数据进行解码,插桩到所述解码函数中的监测代码获取所述解码函数的decode返回值并对经过解码的污点数据打上解码标记,然后存储该decode返回值到所述集合容器中;
4)、当所述输出函数执行时,所述输出函数根据所述解码函数的返回值进行数据库查询操作,插桩到所述输出函数中的监测代码执行下列操作:
获取所述输出函数的输入参数,所述输入参数为所述解码函数返回的污点数据;
查询所述输入参数在所述集合容器中是否存在,如果是,
查询所述输入参数是否带有解码标记,如果是,
存储所述输入参数和所述输出阶段中的方法堆栈至所述集合容器中;
从所述集合容器中依次取出所存入的污点数据和方法堆栈,形成所述污点数据的完整数据流。
4.一种基于IAST测试平台的测试数据流跟踪系统,其特征在于,包括代理模块、插桩模块和监测模块;所述代理模块用于在被测应用程序所在服务器上安装代理程序,所述代理程序用于与运行所述应用程序的虚拟机沟通;所述插桩模块,用于在所述应用程序启动后通过所述代理程序和字节码插桩工具在所述应用程序的输入阶段和输出阶段中的关键函数内插入监测代码,且,插桩所述监测代码时,在所述监测代码中传入待插桩函数的类文件名、方法名、方法参数和返回值;所述监测模块,用于根据所述监测代码获得污点数据在所述应用程序中的传播途径,所述污点数据为测试过程中用户输入的数据。
5.根据权利要求4所述的基于IAST测试平台的测试数据流跟踪系统,其特征在于,所述应用程序启动后,所述插桩模块还在所述应用程序的传播阶段、编解码阶段中的关键函数内插入所述监测代码。
6.根据权利要求5所述的基于IAST测试平台的测试数据流跟踪系统,其特征在于,所述输入阶段、所述传播阶段、所述编解码阶段、所述输出阶段的关键函数分别定义为输入函数、传播函数、编解码函数、输出函数,其中所述编解码函数包括编码函数和解码函数,所述监测模块包括第一执行模块、第二执行模块、第三执行模块和第四执行模块;
所述第一执行模块,用于通过插桩到所述输入函数中的所述监测代码获取到所述输入函数的input返回值,然后存储该input返回值和所述输入阶段中的方法堆栈到集合容器中;
所述第二执行模块,用于通过插桩到所述传播函数中的所述监测代码获取所述传播函数的process返回值,然后存储该process返回值和所述传播阶段中的方法堆栈到所述集合容器中;
所述第三执行模块,用于通过插桩到所述编码函数中的监测代码获取所述编码函数的encode返回值并对经过编码的污点数据打上编码标记,然后存储该encode返回值至所述集合容器中,且通过插桩到所述解码函数中的监测代码获取所述解码函数的decode返回值并对经过解码的污点数据打上解码标记,然后存储该decode返回值到所述集合容器中;
所述第四执行模块,用于通过插桩到所述输出函数中的监测代码执行下列操作:
获取所述输出函数的输入参数,所述输入参数为所述解码函数返回的污点数据;
查询所述输入参数在所述集合容器中是否存在,如果是,
查询所述输入参数是否带有解码标记,如果是,
存储所述输入参数和所述输出阶段中的方法堆栈至所述集合容器中;
从所述集合容器中依次取出所存入的污点数据和方法堆栈,形成所述污点数据的完整数据流。
7.一种基于IAST测试平台的测试数据流跟踪系统,其特征在于,包括:
一个或多个处理器;
存储器;
以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如权利要求1至3任一项所述的基于IAST测试平台的web应用测试数据流跟踪方法的指令。
8.一种计算机可读存储介质,其特征在于,包括计算机程序,所述计算机程序可被处理器执行以完成如权利要求1至3任一项所述的基于IAST测试平台的web应用测试数据流跟踪方法。
CN202010172809.8A 2020-03-13 2020-03-13 web应用测试数据流跟踪方法及系统 Active CN111046396B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010172809.8A CN111046396B (zh) 2020-03-13 2020-03-13 web应用测试数据流跟踪方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010172809.8A CN111046396B (zh) 2020-03-13 2020-03-13 web应用测试数据流跟踪方法及系统

Publications (2)

Publication Number Publication Date
CN111046396A true CN111046396A (zh) 2020-04-21
CN111046396B CN111046396B (zh) 2020-07-17

Family

ID=70230813

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010172809.8A Active CN111046396B (zh) 2020-03-13 2020-03-13 web应用测试数据流跟踪方法及系统

Country Status (1)

Country Link
CN (1) CN111046396B (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111259399A (zh) * 2020-04-28 2020-06-09 深圳开源互联网安全技术有限公司 用于web应用的动态检测漏洞攻击的方法及系统
CN111651773A (zh) * 2020-08-05 2020-09-11 成都无糖信息技术有限公司 一种二进制安全漏洞自动化挖掘方法
CN111857681A (zh) * 2020-06-08 2020-10-30 北京大学 一种c++系统的软件定义化关键函数定位与提取方法
CN112612697A (zh) * 2020-12-17 2021-04-06 航天信息股份有限公司 一种基于字节码技术的软件缺陷测试定位方法及系统
CN112883379A (zh) * 2021-01-13 2021-06-01 深圳开源互联网安全技术有限公司 基于IAST的Node.js数据流跟踪方法及系统
CN113420298A (zh) * 2021-05-26 2021-09-21 杭州孝道科技有限公司 一种基于PHP扩展的PHP Web应用程序漏洞检测方法及其存储介质
CN113609487A (zh) * 2021-07-16 2021-11-05 深圳开源互联网安全技术有限公司 通过静态分析检测后门代码的方法
CN113688395A (zh) * 2021-07-29 2021-11-23 深圳开源互联网安全技术有限公司 web应用程序的漏洞检测方法、设备及计算机可读存储介质
CN114138681A (zh) * 2022-01-29 2022-03-04 深圳开源互联网安全技术有限公司 一种污点数据跟踪方法、装置及计算机可读存储介质
CN114327491A (zh) * 2022-03-07 2022-04-12 深圳开源互联网安全技术有限公司 源码插桩方法、装置、计算机设备和存储介质
CN114499960A (zh) * 2021-12-24 2022-05-13 深圳开源互联网安全技术有限公司 一种csrf漏洞识别方法、装置及计算机可读存储介质
CN114944997A (zh) * 2022-03-24 2022-08-26 浙江大华技术股份有限公司 一种协议检测方法、协议检测装置和计算机可读存储介质
CN114968826A (zh) * 2022-07-28 2022-08-30 深圳开源互联网安全技术有限公司 应用程序漏洞修复验证方法及系统
CN116451228A (zh) * 2023-04-23 2023-07-18 北京安普诺信息技术有限公司 动态污点追踪方法、装置及相关在线污点传播分析系统
CN117130917A (zh) * 2023-08-28 2023-11-28 北京安普诺信息技术有限公司 一种容器化Java应用的灰盒测试方法、装置及系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102622558A (zh) * 2012-03-01 2012-08-01 北京邮电大学 一种二进制程序漏洞的挖掘装置和方法
CN103440201A (zh) * 2013-09-05 2013-12-11 北京邮电大学 动态污点分析装置及其在文件格式逆向解析中的应用
CN103955426A (zh) * 2014-04-21 2014-07-30 中国科学院计算技术研究所 一种检测c代码空指针引用的方法及系统
CN104104659A (zh) * 2013-04-07 2014-10-15 中国科学技术大学 一种通信指纹的提取方法以及装置
CN106126417A (zh) * 2016-06-17 2016-11-16 深圳开源互联网安全技术有限公司 交互式应用程序安全测试方法及其系统
CN106156623A (zh) * 2016-07-29 2016-11-23 江西师范大学 基于意图的sqlia防御方法
CN106648946A (zh) * 2016-10-09 2017-05-10 武汉斗鱼网络科技有限公司 基于插桩方式快速屏蔽客户端故障的方法及系统
CN107038103A (zh) * 2017-04-14 2017-08-11 上海交通大学 基于字节码插桩的Android程序监控系统及方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102622558A (zh) * 2012-03-01 2012-08-01 北京邮电大学 一种二进制程序漏洞的挖掘装置和方法
CN104104659A (zh) * 2013-04-07 2014-10-15 中国科学技术大学 一种通信指纹的提取方法以及装置
CN103440201A (zh) * 2013-09-05 2013-12-11 北京邮电大学 动态污点分析装置及其在文件格式逆向解析中的应用
CN103955426A (zh) * 2014-04-21 2014-07-30 中国科学院计算技术研究所 一种检测c代码空指针引用的方法及系统
CN106126417A (zh) * 2016-06-17 2016-11-16 深圳开源互联网安全技术有限公司 交互式应用程序安全测试方法及其系统
CN106156623A (zh) * 2016-07-29 2016-11-23 江西师范大学 基于意图的sqlia防御方法
CN106648946A (zh) * 2016-10-09 2017-05-10 武汉斗鱼网络科技有限公司 基于插桩方式快速屏蔽客户端故障的方法及系统
CN107038103A (zh) * 2017-04-14 2017-08-11 上海交通大学 基于字节码插桩的Android程序监控系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
蒋志龙: "基于UML序列图的测试方法研究与工具实现", 《中国优秀硕士学位论文全文数据库》 *

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111259399A (zh) * 2020-04-28 2020-06-09 深圳开源互联网安全技术有限公司 用于web应用的动态检测漏洞攻击的方法及系统
CN111857681A (zh) * 2020-06-08 2020-10-30 北京大学 一种c++系统的软件定义化关键函数定位与提取方法
CN111857681B (zh) * 2020-06-08 2021-04-30 北京大学 一种c++系统的软件定义化关键函数定位与提取方法
CN111651773A (zh) * 2020-08-05 2020-09-11 成都无糖信息技术有限公司 一种二进制安全漏洞自动化挖掘方法
CN112612697A (zh) * 2020-12-17 2021-04-06 航天信息股份有限公司 一种基于字节码技术的软件缺陷测试定位方法及系统
CN112883379B (zh) * 2021-01-13 2023-04-25 深圳开源互联网安全技术有限公司 基于IAST的Node.js数据流跟踪方法及系统
CN112883379A (zh) * 2021-01-13 2021-06-01 深圳开源互联网安全技术有限公司 基于IAST的Node.js数据流跟踪方法及系统
CN113420298A (zh) * 2021-05-26 2021-09-21 杭州孝道科技有限公司 一种基于PHP扩展的PHP Web应用程序漏洞检测方法及其存储介质
CN113609487A (zh) * 2021-07-16 2021-11-05 深圳开源互联网安全技术有限公司 通过静态分析检测后门代码的方法
CN113688395A (zh) * 2021-07-29 2021-11-23 深圳开源互联网安全技术有限公司 web应用程序的漏洞检测方法、设备及计算机可读存储介质
CN113688395B (zh) * 2021-07-29 2023-08-11 深圳开源互联网安全技术有限公司 web应用程序的漏洞检测方法、设备及计算机可读存储介质
CN114499960A (zh) * 2021-12-24 2022-05-13 深圳开源互联网安全技术有限公司 一种csrf漏洞识别方法、装置及计算机可读存储介质
CN114499960B (zh) * 2021-12-24 2024-03-22 深圳开源互联网安全技术有限公司 一种csrf漏洞识别方法、装置及计算机可读存储介质
CN114138681A (zh) * 2022-01-29 2022-03-04 深圳开源互联网安全技术有限公司 一种污点数据跟踪方法、装置及计算机可读存储介质
CN114327491A (zh) * 2022-03-07 2022-04-12 深圳开源互联网安全技术有限公司 源码插桩方法、装置、计算机设备和存储介质
CN114327491B (zh) * 2022-03-07 2022-06-21 深圳开源互联网安全技术有限公司 源码插桩方法、装置、计算机设备和存储介质
CN114944997B (zh) * 2022-03-24 2024-02-20 浙江大华技术股份有限公司 一种协议检测方法、协议检测装置和计算机可读存储介质
CN114944997A (zh) * 2022-03-24 2022-08-26 浙江大华技术股份有限公司 一种协议检测方法、协议检测装置和计算机可读存储介质
CN114968826A (zh) * 2022-07-28 2022-08-30 深圳开源互联网安全技术有限公司 应用程序漏洞修复验证方法及系统
CN116451228B (zh) * 2023-04-23 2023-10-17 北京安普诺信息技术有限公司 动态污点追踪方法、装置及相关在线污点传播分析系统
CN116451228A (zh) * 2023-04-23 2023-07-18 北京安普诺信息技术有限公司 动态污点追踪方法、装置及相关在线污点传播分析系统
CN117130917A (zh) * 2023-08-28 2023-11-28 北京安普诺信息技术有限公司 一种容器化Java应用的灰盒测试方法、装置及系统
CN117130917B (zh) * 2023-08-28 2024-01-23 北京安普诺信息技术有限公司 一种容器化Java应用的灰盒测试方法、装置及系统

Also Published As

Publication number Publication date
CN111046396B (zh) 2020-07-17

Similar Documents

Publication Publication Date Title
CN111046396B (zh) web应用测试数据流跟踪方法及系统
Yu et al. Patching vulnerabilities with sanitization synthesis
Mohammadi et al. Detecting cross-site scripting vulnerabilities through automated unit testing
Wendehals et al. Recognizing behavioral patterns atruntime using finite automata
CN111259399B (zh) 用于web应用的动态检测漏洞攻击的方法及系统
CN110474900B (zh) 一种游戏协议测试方法及装置
Alkhalaf et al. Viewpoints: differential string analysis for discovering client-and server-side input validation inconsistencies
CN108062474B (zh) 文件的检测方法及装置
CN115186274A (zh) 基于iast的安全测试方法及装置
CN110941534A (zh) 检测web应用第三方代码调用的方法及系统
Grabowski et al. Type-based enforcement of secure programming guidelines—code injection prevention at SAP
CN112817877B (zh) 异常脚本检测方法、装置、计算机设备和存储介质
Jaeger et al. Normalizing security events with a hierarchical knowledge base
CN111124937B (zh) 基于插桩函数辅助提高生成测试用例效率的方法及系统
Schuckert et al. Source code patterns of sql injection vulnerabilities
Gauthier et al. Backrest: A model-based feedback-driven greybox fuzzer for web applications
Li Towards security vulnerability detection by source code model checking
CN115357899A (zh) 基于iast技术检测存储型漏洞的方法及系统
Maurel et al. Comparing the Detection of XSS Vulnerabilities in Node. js and a Multi-tier JavaScript-based Language via Deep Learning
Leithner et al. CHIEv: concurrent hybrid analysis for crawling and modeling of web applications
Mohammadi et al. Automated detecting and repair of cross-site scripting vulnerabilities
CN115203060B (zh) 一种基于iast的安全测试方法及装置
CN112883379B (zh) 基于IAST的Node.js数据流跟踪方法及系统
Halfond Automated checking of web application invocations
Morgado et al. Towards Web Application Security by Automated Code Correction.

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