[发明专利]面向Java EE程序SQLIA漏洞的污点分析和验证方法及装置有效
申请号: | 202010725417.X | 申请日: | 2020-07-24 |
公开(公告)号: | CN111737150B | 公开(公告)日: | 2023-09-15 |
发明(设计)人: | 郭帆;范威威;龙薇 | 申请(专利权)人: | 江西师范大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/41;G06F21/57;G06F16/958 |
代理公司: | 南昌市平凡知识产权代理事务所 36122 | 代理人: | 夏材祥 |
地址: | 330100 *** | 国省代码: | 江西;36 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 面向 java ee 程序 sqlia 漏洞 污点 分析 验证 方法 装置 | ||
1.一种面向Java EE程序SQLIA漏洞的污点分析和验证方法,其特征在于,所述方法包括:
对Source进行预处理和分类得到真实可靠的Source集合;
应用多重关系匹配存在潜在安全漏洞的(Source, Sink)对;
结合静态污点分析和活跃变量分析过滤不可能存在污点传播路径的(Source, Sink)对;
对所述Java EE程序进行插桩,然后在执行所述Java EE程序的同时进行动态污点分析并生成Trace;
将每条Trace与静态分析结果的(Source,Sink)对进行匹配,判断是否存在真实污点传播路径,获取真实污点传播路径的漏洞集合;
所述结合静态污点分析和活跃变量分析过滤不可能存在污点传播路径的(Source,Sink)对,包括:对文件内进行污点传播以及进行跨文件污点传播;活跃变量分析过滤不可能存在污点传播路径的(Source, Sink);
所述对文件内进行污点传播,包括:根据Request和Session对象传播的污点信息获取目标文件的污点信息集合;对所述目标文件开启新一轮文件内污点传播分析;所述进行跨文件污点传播,包括:在所述目标文件中仅保留和传播被读写的属性所对应的污点状态值,并以此作为文件内污点传播的初始taintset,继续污点传播分析;
所述活跃变量分析过滤不可能存在污点传播路径的(Source, Sink)对,包括:
根据活跃变量分析的结果是否满足以下两个条件中的一条来判定(Source,Sink)对是否被裁减:
①在每条从Source到Sink的执行路径上都存在一个点,在该点的所有活跃变量都是可信变量;
②Source语句返回的变量不属于Source点的活跃变量集合;
如果满足其中一条,那么每条路径都不可能有污点信息传播到Sink,确定所述(Source,Sink)对是不可能存在污点传播路径的;
所述应用多重关系匹配存在潜在安全漏洞的(Source, Sink)对,包括:
判断Source和Sink是否位于相同文件的相同方法;如果是,则确定为存在潜在安全漏洞的(Source, Sink)对;
判断Source和Sink是否可以根据相同Request信息的GetAttribute方法返回值和SeAttribute参数匹配;如果是,则确定为存在潜在安全漏洞的(Source, Sink)对;
判断Source和Sink是否可以根据Session信息的GetAttribute方法返回值和SeAttribute参数匹配;如果是,则确定为存在潜在安全漏洞的(Source, Sink)对;
判断Source是否作为方法调用语句的参数传递给Sink所在方法;如果是,则确定为存在潜在安全漏洞的(Source, Sink)对。
2.根据权利要求1所述的方法,其特征在于,所述将每条Trace与静态分析结果的(Source,Sink)对进行匹配,判断是否存在真实污点传播路径,获取真实污点传播路径的漏洞集合,包括:
搜索每条Trace存在的(Source,Sink)对;
逐一与静态分析结果的(Source, Sink)对集合匹配,匹配成功则定位了一条真实污点传播路径;
获取真实污点传播路径的漏洞集合。
3.根据权利要求1所述的方法,其特征在于,所述Java EE程序进行插桩,然后在执行所述Java EE程序的同时进行动态污点分析并生成Trace,包括:
静态遍历程序的每条语句,根据污点传播规则判断其是否需要插桩;
根据每条语句的语句类型进行相应插桩,插入一条调用辅助类相应方法的语句;
根据插桩代码动态跟踪的污点传播信息打印相应的代码片段Trace。
4.根据权利要求1所述的方法,其特征在于,所述对Source进行预处理和分类得到真实可靠的Source集合,包括:
根据预定义的Source和Sink方法列表从程序代码中提取所有的Source和Sink语句,对每条Source语句的参数进行静态数据流分析,排除不是读取外部输入的Source语句得到真实可靠的Source集合。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于江西师范大学,未经江西师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010725417.X/1.html,转载请声明来源钻瓜专利网。