System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 面向现代Web应用中存储型XSS漏洞的静态检测方法及装置制造方法及图纸_技高网

面向现代Web应用中存储型XSS漏洞的静态检测方法及装置制造方法及图纸

技术编号:40272403 阅读:10 留言:0更新日期:2024-02-02 22:58
本发明专利技术公开一种面向现代Web应用中存储型XSS漏洞的静态检测方法及装置,所述方法包括:获取目标程序的源代码;基于源代码,获取数据库操作三元组信息,数据库操作三元组信息包括:数据库的操作动作、操作动作的表名和操作动作的字段名;基于数据库操作三元组信息进行污点源到数据库写操作和数据库读操作到污点汇聚点的两段式污点分析,以得到存储型XSS漏洞的静态检测结果。本发明专利技术可以帮助静态污点分析工具识别污点数据在数据库中的读写位置,并在拼接污点读路径和污点写路径之后,发现存储型XSS漏洞在系统中的位置。

【技术实现步骤摘要】

本专利技术涉及软件安全与漏洞挖掘领域,尤其涉及一种面向现代web应用中存储型xss漏洞的静态检测方法及装置。


技术介绍

1、在web应用的注入类漏洞当中,如果攻击者将攻击载荷发送到目标系统中,并没有直接触发漏洞,而是通过存入到数据库中,并在稍后进行触发,就会构成二次注入漏洞(second-order vulnerabilities)。

2、二次注入漏洞是一种污点类漏洞,此类漏洞的形成原因是用户将攻击载荷通过系统的交互点传入系统,攻击载荷在系统中经过传播后,最终到达产生危害的位置。而存储型xss漏洞是web应用程序中的一种典型的二次注入类漏洞,其原理是将触发xss的攻击载荷存储到数据库中,并在之后的操作里将攻击载荷从数据库中读取并触发。由于其攻击载荷会持久地存储在系统的持久存储介质中,因此具有较大的危害,可应用于用户cookie盗取、键盘监控、大规模蠕虫攻击等场景中。

3、通常,本领域技术人员将传入攻击载荷的系统交互点称作污点源,将产生危害的位置成为污点汇聚点,将在攻击载荷在系统中传播所经过的路径成为污点传播路径。在二次注入漏洞中,一条完整的污点传播路径是需要经过数据库的,因此在挖掘二次注入漏洞时,需要识别数据库的读写,并将两条污点传播路径并进行连接,因此挖掘此类漏洞必须要得到代码中对于数据库操作的读写操作的相关信息。

4、传统的针对二次注入类漏洞的静态挖掘,通常采用基于字符串分析(stringanalysis)的方法:通过收集目标web应用源代码中的字符串内容,并对所有的字符串静态计算字符串表达式可能的取值,进而从代码中解析出完整的sql查询语句,由此获取数据库操作的读写位置信息。然而,上述方法并不适用于对现代web应用中数据库读写操作的位置信息获取。因为现代web应用为了满足代码的解耦需求,通常采用用户业务与数据模型分离的开发模式,在整个系统中进行了分层,主要包括用户业务层与数据访问层。其中数据访问层(data access layer,dal)专门负责数据库的模型构建与操作,并提供接口供用户业务层使用。也就是说,在现代web应用中,由数据访问层控制着数据库的读写操作,且用户业务层往往采取了动态的方式对数据访问层进行调用。这些动态调用引入的动态特性使得静态程序分析技术难以准确追踪数据库查询语句的构造过程。具体到数据访问层内部,由于web应用需要适配不同的数据库,数据访问层通常采用动态加载驱动的方式,这使得完整的数据库查询语句在运行时才能够被动态拼接。基于以上原因,传统的字符串解析方法将在引入数据访问层的web应用中失效。


技术实现思路

1、针对上述问题,本专利技术提出了一种面向现代web应用中存储型xss漏洞的静态检测方法及装置,尤其适用于对web应用中的存储型xss(stored-xss)漏洞的挖掘。本专利技术可以在源代码中识别潜在的数据库读写位置,从而帮助静态污点分析工具识别污点数据在数据库中的读写位置,并在拼接污点读路径和污点写路径之后,发现存储型xss漏洞在系统中的位置。

2、一种面向现代web应用中存储型xss漏洞的静态检测方法,包括:

3、获取目标程序的源代码;

4、基于所述源代码,获取数据库操作三元组信息,所述数据库操作三元组信息包括:数据库的操作动作、所述操作动作的表名和所述操作动作的字段名;

5、基于所述数据库操作三元组信息进行污点源到数据库写操作和数据库读操作到污点汇聚点的两段式污点分析,以得到存储型xss漏洞的静态检测结果。

6、进一步地,基于所述源代码,获取数据库操作三元组信息,包括:

7、针对所述源代码,基于字符串分析技术进行完整sql语句的提取;

8、在获取到完整sql语句的情况下,对所述完整sql语句进行语义分析,以得到数据库操作三元组信息;

9、在未获取到完整sql语句的情况下,构建所述目标程序对应的数据库模型和可分析形式,并根据所述数据库模型和所述可分析形式,得到数据库操作三元组信息;其中,所述可分析形式包括:代码属性图或codeql。

10、进一步地,根据所述数据库模型和所述可分析形式,得到数据库操作三元组信息,包括:

11、基于所述可分析形式进行锚点api的推导,所述锚点api为包含数据库操作三元组信息的源代码片段对应的api调用点;

12、结合所述数据库模型进行锚点api的分析和对比,以得到数据库操作三元组信息。

13、进一步地,基于所述可分析形式进行锚点api的推导,包括:

14、从污点源进行前向的数据流分析,从污点汇聚点进行后向的数据流分析,并结合可分析形式,收集路径上所有出现的api调用;

15、去除所述路径上所有出现的api调用中不符合条件的api调用;其中,所述不符合条件的api调用包括:php的内置函数、无害处理函数和字符串处理函数;

16、对去除不符合条件后的api调用进行调用频度统计,并根据调用频度统计结果,形成锚点api集合。

17、进一步地,结合所述数据库模型进行锚点api的分析和对比,以得到数据库操作三元组信息,包括:

18、在所述源代码中找到每个锚点api的调用点,以得到该锚点api对应的代码集合;

19、对所述代码集合进行php解析和sql解析,以形成所述代码集合对应的token序列;

20、将所述token序列与数据库模型进行比对,得到数据库操作三元组信息对应的位置。

21、进一步地,在所述源代码中找到每个锚点api的调用点,以得到该锚点api对应的代码集合,包括:

22、判断所述锚点api是否为链式api;

23、在所述锚点api为链式api的情况下,基于与链的起始标识符相同的调用点,得到该锚点api对应的代码集合;其中,所述链的起始标识符包括:类名或对象名;

24、在所述锚点api为非链式api的情况下,获取该锚点api的函数调用点,并基于该函数调用点的参数进行后向数据流分析,得到该锚点api对应的代码集合。

25、进一步地,将所述token序列与数据库模型进行比对,得到数据库操作三元组信息对应的位置,包括:

26、按照设定条件,将所述token序列与数据库模型进行比对;其中,所述设定条件包括:忽略大小写、前后缀、token出现顺序、设置每个token数据库模型内的信息的相似度、字段属性判断、字符串类型长度判断;

27、根据比对结果,得到数据库操作三元组信息对应的位置。

28、进一步地,基于所述数据库操作三元组信息进行污点源到数据库写操作和数据库读操作到污点汇聚点的两段式污点分析,以得到存储型xss漏洞的静态检测结果,包括:

29、找到从污点源到数据库写位置的所有污点传播路径,并通过分析污点源是否能够将污点传播到可污染的数据库读位置,得到写污点传播路径集合;

30、找到从本文档来自技高网...

【技术保护点】

1.一种面向现代Web应用中存储型XSS漏洞的静态检测方法,其特征在于,所述方法包括:获取目标程序的源代码;

2.如权利要求1所述的方法,其特征在于,基于所述源代码,获取数据库操作三元组信息,包括:

3.如权利要求2所述的方法,其特征在于,根据所述数据库模型和所述可分析形式,得到数据库操作三元组信息,包括:

4.如权利要求3所述的方法,其特征在于,基于所述可分析形式进行锚点API的推导,包括:

5.如权利要求3所述的方法,其特征在于,结合所述数据库模型进行锚点API的分析和对比,以得到数据库操作三元组信息,包括:

6.如权利要求5所述的方法,其特征在于,在所述源代码中找到每个锚点API的调用点,以得到该锚点API对应的代码集合,包括:

7.如权利要求5所述的方法,其特征在于,将所述token序列与数据库模型进行比对,得到数据库操作三元组信息对应的位置,包括:

8.如权利要求1所述的方法,其特征在于,基于所述数据库操作三元组信息进行污点源到数据库写操作和数据库读操作到污点汇聚点的两段式污点分析,以得到存储型XSS漏洞的静态检测结果,包括:

9.一种面向现代Web应用中存储型XSS漏洞的静态检测装置,其特征在于,所述装置包括:源代码获取模块,用于获取目标程序的源代码;

10.一种计算机设备,其特征在于,所述计算机设备包括:处理器以及存储有计算机程序指令的存储器;所述处理器执行所述计算机程序指令时实现如权利要求1-8任一项所述的面向现代Web应用中存储型XSS漏洞的静态检测方法。

...

【技术特征摘要】

1.一种面向现代web应用中存储型xss漏洞的静态检测方法,其特征在于,所述方法包括:获取目标程序的源代码;

2.如权利要求1所述的方法,其特征在于,基于所述源代码,获取数据库操作三元组信息,包括:

3.如权利要求2所述的方法,其特征在于,根据所述数据库模型和所述可分析形式,得到数据库操作三元组信息,包括:

4.如权利要求3所述的方法,其特征在于,基于所述可分析形式进行锚点api的推导,包括:

5.如权利要求3所述的方法,其特征在于,结合所述数据库模型进行锚点api的分析和对比,以得到数据库操作三元组信息,包括:

6.如权利要求5所述的方法,其特征在于,在所述源代码中找到每个锚点api的调用点,以得到该锚点api对应的代码集合,包括:...

【专利技术属性】
技术研发人员:苏赫李丰许丽丽晁会娜霍玮
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1