一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于IAST快速定位JSON框架中污点数据位置的方法及系统与流程

2022-11-19 08:20:16 来源:中国专利 TAG:

基于iast快速定位json框架中污点数据位置的方法及系统
技术领域
1.本发明涉及软件测试技术领域,尤其涉及一种软件测试中用于漏洞检测和修复的基于iast快速定位json框架中污点数据位置的方法及系统。


背景技术:

2.随着软件技术的不断发展,程序规模越来越大,功能越来越复杂,数量越来越多。然而,这也相应导致软件中漏洞数量也越来越多,其造成的破坏也日趋严重。一般的安全漏洞都是来自于用户输入的污点数据没有经过安全校验或编码,直接进入敏感函数导致的。所以市面上常见的iast工具都是通过跟踪污点数据的数据流传播过程来判断是否存在安全漏洞(如中国发明专利cn111046396a公开的web应用测试数据流跟踪方法及系统),在被测应用程序还是通过querystring或者form表单进行数据传承时,iast工具可以通过getparameter(“key”)等函数获取返回值(即污点数据),这种情况可以将污点数据与污点数据的key值进行关联,开发人员也可以快速的根据污点数据的key值定位存在问题的点。但是随着技术的日益发展,越来越多的应用程序使用json请求体来进行数据传参(参数传递),常见的iast工具虽然可以跟踪整个json请求体,但是json请求体中具体存在污点数据的key却很难获取到,不利于后期漏洞的维护。


技术实现要素:

3.本发明的目的是提供一种基于iast快速定位json框架中污点数据位置的方法及系统,以在基于json框架进行数据存储和参数传递的软件漏洞检测过程中快速定位存在漏洞的污点数据的字段,便于漏洞修复。
4.为了实现上述目的,本发明公开了一种基于iast快速定位json框架中污点数据位置的方法,以用于应用程序的漏洞检测和修复,所述应用程序基于json框架进行数据存储和参数传递,该方法包括:
5.采用iast工具插桩待测应用程序,以将漏洞检测逻辑织入到所述应用程序,所述漏洞检测逻辑通过跟踪污点数据在所述应用程序中的传播途径进行漏洞检测;
6.获取当前所述应用程序中json解析函数返回对象的位置信息;
7.当测试用污点数据进入所述应用程序后,提取并存储所述json解析函数返回的json对象中的字段名、字段类型、字段值的映射关系;
8.查询所述漏洞检测逻辑执行的结果,以判断当前测试请求是否存在漏洞,如果是,则将该漏洞信息与上述获得的所述json对象中相应的字段名关联。
9.较佳地,通过所述iast工具插桩所述应用程序中的json解析函数,以获得该json解析函数返回对象的位置信息。
10.较佳地,创建包括若干已知解析类型的json解析函数的函数库,并判断当前所述应用程序中任一json类函数是否存在于所述函数库,如果是,则直接通过所述iast工具插桩该json类函数;
11.如果否,则根据所述应用程序中每一json类函数的入参和返回值来推断用作解析json对象的json解析函数。
12.本发明还公开一种基于iast快速定位json框架中污点数据位置的系统,以用于应用程序的漏洞检测和修复,所述应用程序基于json框架进行数据存储和参数传递,该系统包括:
13.漏洞检测模块,其用于采用iast工具插桩待测应用程序,以将漏洞检测逻辑织入到所述应用程序,所述漏洞检测逻辑通过跟踪污点数据在所述应用程序中的传播途径进行漏洞检测;
14.json对象位置获取模块,其用于获取当前所述应用程序中json解析函数返回对象的位置信息;
15.数据提取模块,其用于测试用污点数据进入所述应用程序后,提取并存储所述json解析函数返回的json对象中的字段名、字段类型、字段值的映射关系;
16.关联模块,其用于当测试请求存在漏洞时,将该漏洞信息与上述获得的所述json对象中相应的字段名关联。
17.较佳地,所述json对象位置获取模块通过所述iast工具插桩所述应用程序中的json解析函数,以获得该json解析函数返回对象的位置信息。
18.较佳地,所述json对象位置获取模块包括函数库创建模块、匹配模块、插桩模块和推断模块;
19.所述函数库创建模块,用于创建包括若干已知解析类型的json解析函数的函数库;
20.所述匹配模块,用于将当前应用程序中任一json类函数与所述函数库中的函数匹配,以确认所述应用程序中的json解析函数;
21.推断模块,用于当通过匹配模块确认当前应用程序中任一json类函数均不与所述函数库中的函数匹配时,根据所述应用程序中每一json类函数的入参和返回值来推断用作解析json对象的json解析函数;
22.所述插桩模块,用于采用iast工具插桩所述json解析函数。
23.本发明还公开一种基于iast快速定位json框架中污点数据位置的系统,其包括:
24.一个或多个处理器;
25.存储器;
26.以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如上所述的基于iast快速定位json框架中污点数据位置的方法的指令。
27.本发明还公开一种计算机可读存储介质,其包括计算机程序,所述计算机程序可被处理器执行以完成如上所述基于iast快速定位json框架中污点数据位置的方法。
28.与现有技术相比,本发明上述技术方案,针对基于json框架进行数据存储和参数传递的应用程序的漏洞检测工作,预先获取有当前待测应用程序中json解析函数返回对象的位置信息,这样,当测试用污点数据进入应用程序后,可获得该应用程序中son解析函数返回的json对象中的字段名、字段类型、字段值的映射关系,然后,当检测结果存在漏洞时,由于基于污点数据流跟踪的方式可定位到漏洞所属的代码行、函数以及参数,因此,可将该
漏洞信息与上述获得的json对象中相应的字段名关联,从而,当开发人员查看漏洞数据而进行漏洞修复时,可通过污点数据的字段名快速定位问题点,方便漏洞的修复工作。
附图说明
29.图1为本发明实施例中定位json框架中污点数据位置的方法流程图。
具体实施方式
30.为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
31.本实施例公开了一种基于iast插桩技术快速定位json框架中污点数据位置的方法,以用于应用程序的漏洞检测和修复,本实施例中的应用程序基于json框架进行数据存储和参数传递,在对该应用程序进行漏洞检测过程中,通过对污点数据中与漏洞相关的字段(key)的定位,使得后续查看和修复漏洞时变得更加容易。具体地,如图1,该方法包括如下步骤:
32.s1:采用iast工具插桩待测应用程序,以将漏洞检测逻辑织入到应用程序,漏洞检测逻辑通过跟踪污点数据在应用程序中的传播途径进行漏洞检测。在此需要说明的是,关于本实施例中的漏洞检测逻辑的具体执行过程属于本领域的公知技术,如中国发明专利cn111046396a公开的web应用测试数据流跟踪方法及系统,因此在此对其不再赘述。
33.s2:获取当前应用程序中json解析函数返回对象的位置信息;
34.s3:当测试用污点数据(也即json请求体)进入应用程序后,基于步骤s2获取到的json解析函数返回对象的位置信息提取并存储json解析函数返回的json对象中的字段名、字段类型、字段值的映射关系。
35.s4:查询漏洞检测逻辑执行的结果,以判断当前测试请求是否存在漏洞,如果是,则将该漏洞信息与上述获得的json对象中相应的字段名关联。
36.基于上述定位方法,当测试用污点数据进入应用程序后,可获得该应用程序中son解析函数返回的json对象中的字段名、字段类型、字段值的映射关系,然后,当检测结果存在漏洞时,由于基于污点数据流跟踪的方式可定位到漏洞所属的代码行、函数以及参数,因此,可将该漏洞信息与上述获得的json对象中相应的字段名关联,从而,当开发人员查看漏洞数据而进行漏洞修复时,可通过污点数据的字段名快速定位问题点,方便漏洞的修复工作。
37.进一步地,通过iast工具插桩应用程序中的json解析函数,以获得该json解析函数返回对象的位置信息。
38.基于此,在实际运用中,如欲通过iast工具自动插桩应用程序中的json解析函数,事先必须使得iast工具能够识别应用程序中的哪个函数为json解析函数,否则,将只能人工插桩,这将浪费时间。为解决该问题,本实施例中的定位方法还包括:
39.创建包括若干已知解析类型的json解析函数的函数库,并判断当前应用程序中任一json类函数是否存在于函数库,如果是,则直接通过iast工具插桩该json类函数;
40.如果否,则根据应用程序中每一json类函数的入参和返回值来推断用作解析json对象的json解析函数,从而识别出该应用程序中的json解析函数,然后再采用iast工具插
桩识别出的json解析函数即可。
41.具体地,如下一包含json类函数的请求体为:
[0042][0043]
在上述请求体中,由于json类函数“readvalue”已预设在函数库中,因此,通过将与函数库中的各个json解析函数比对,即可快速匹配出该请求体中的json解析函数(也即readvalue),然后即可对objectmapper中的readvalue函数插桩,并且对返回值进行标记。
[0044]
又如下另一包含json类函数的请求体为:
[0045][0046]
在上述请求体中,通过与包含有多个json解析函数的函数库比对,未发现有与函数中相同的已知解析类型的json类函数,因此,由于正常json解析函数都会传入两个入参,一个是字符串或者字节流,作为json数据的载体,另外一个是json解析对象的类型,java中一般返回object对象或者跟json解析对象类型相同的类型,所以,根据该请求体中每一json类函数的入参和返回值来推断用作解析json对象的json解析函数,也即parseobject。然后,采用iast插桩工具插桩该parseobject函数即可。
[0047]
另外,json解析对象一般返回class或者object类型,前者可以明确知道对象类型,后者需要通过反射等技术进一步获取对象类型。
[0048]
如上例中的person.class,在步骤s3中可以通过反射等技术先获取到对象中的字段名,具体执行语句如下:
[0049][0050]
此时就可以将提取到的字段名、字段值、字段类型等映射关系进行存储,如{"
key":"name","value":"张三","type":"string"},在此需要注意的是,此处的value属性存储的是携带内存地址的值,即两个相同的字符串“张三”也会出现不同内存地址的情况。
[0051]
本发明另一较佳实施例中,还公开一种基于iast快速定位json框架中污点数据位置的系统,以用于应用程序的漏洞检测和修复,应用程序基于json框架进行数据存储和参数传递,该系统包括漏洞检测模块、json对象位置获取模块、数据提取模块以及关联模块。
[0052]
漏洞检测模块,其用于采用iast工具插桩待测应用程序,以将漏洞检测逻辑织入到应用程序,漏洞检测逻辑通过跟踪污点数据在应用程序中的传播途径进行漏洞检测。
[0053]
json对象位置获取模块,其用于获取当前应用程序中json解析函数返回对象的位置信息。
[0054]
数据提取模块,其用于测试用污点数据进入应用程序后,提取并存储json解析函数返回的json对象中的字段名、字段类型、字段值的映射关系。
[0055]
关联模块,其用于当测试请求存在漏洞时,将该漏洞信息与上述获得的json对象中相应的字段名关联。
[0056]
进一步地,json对象位置获取模块通过iast工具插桩应用程序中的json解析函数,以获得该json解析函数返回对象的位置信息。
[0057]
进一步地,json对象位置获取模块包括函数库创建模块、匹配模块、插桩模块和推断模块。
[0058]
函数库创建模块,用于创建包括若干已知解析类型的json解析函数的函数库。
[0059]
匹配模块,用于将当前应用程序中任一json类函数与函数库中的函数匹配,以确认应用程序中的json解析函数。
[0060]
推断模块,用于当通过匹配模块确认当前应用程序中任一json类函数均不与函数库中的函数匹配时,根据应用程序中每一json类函数的入参和返回值来推断用作解析json对象的json解析函数。
[0061]
插桩模块,用于采用iast工具插桩json解析函数。
[0062]
本发明还公开另一种定位json框架中污点数据位置的系统,其包括一个或多个处理器、存储器以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如上所述的定位json框架中污点数据位置的方法的指令。处理器可以采用通用的中央处理器(central processing unit,cpu),微处理器,应用专用集成电路(application specific integrated circuit,asic),或者一个或多个集成电路,用于执行相关程序,以实现本技术实施例的定位json框架中污点数据位置的系统中的模块所需执行的功能,或者执行本技术方法实施例的定位json框架中污点数据位置的方法。
[0063]
本发明还公开一种计算机可读存储介质,其包括计算机程序,所述计算机程序可被处理器执行以完成如上所述的定位json框架中污点数据位置的方法。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是只读存储器(read-onlymemory,rom),或随机存取存储器(random access memory,ram),或磁性介质,例如,软盘、硬盘、磁带、磁碟、或光介质,例如,数字通用光盘(digital versatile disc,dvd)、或者半导体介质,例如,固态硬盘(solid state disk,ssd)等。
[0064]
本技术实施例还公开了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述定位json框架中污点数据位置的方法。
[0065]
以上所揭露的仅为本发明的优选实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献