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

基于数据流跟踪的应用程序漏洞检测方法及系统与流程

2022-11-19 07:59:22 来源:中国专利 TAG:


1.本发明涉及应用程序检测技术领域,尤其涉及一种基于数据流跟踪的应用程序漏洞检测方法及系统。


背景技术:

2.随着应用程序规模越来越大,功能越来越复杂,数量越来越多,漏洞数量也越来越多,其造成的破坏也日趋严重。一般的安全漏洞都是来自于用户输入的污点数据没有经过安全校验或编码,直接进入敏感函数导致的。所以市面上常见的iast工具都是通过跟踪污点数据的数据流传播过程来判断是否存在安全漏洞(如中国发明专利cn111046396a公开的web应用测试数据流跟踪方法及系统),在被测应用程序通过querystring或者form表单进行数据传承时,iast工具可以通过getparameter(“key”)等函数获取返回值(即污点数据),这种情况可以将污点数据与污点数据的key值进行关联,开发人员也可以快速的根据污点数据的key值定位存在问题的点。但是随着技术的日益发展,越来越多的应用程序使用json请求体来进行数据传参,常见的iast工具虽然可以跟踪整个json请求体,但是在解析json请求体时会将json对象映射的实体类的所有数据都加入到跟踪逻辑中,其中有些数据是实体类自动生成的默认数据,不是从请求中输入的,此时漏洞检测过程中就会将该默认数据认作外部非法数据,从而产生误报。


技术实现要素:

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

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

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

相关文献