SQLIA漏洞破坏Web后台数据库的完整性,一直是Web应用安全的主要威胁。提出一种检测和验证Java Web程序的SQLIA漏洞的解决方案,将静态分析与动态验证相结合,并且形式化定义指令级污点传播操作语义,能够有效跟踪跨文件和跨页面的污点传播。静态分析首先对Source进行预处理和分类得到真实可靠的Source集合,然后应用方法、请求、会话、方法调用等多重关系匹配潜在的Source和Sink对,使得分析过程可以过滤无关Source和Sink,最后结合静态污点分析和活跃变量分析排除不可能存在污点传播路径的Source和Sink。动态验证首先对程序插桩,然后在执行程序的同时进行动态污点传播并生成Trace,基于Trace验证静态分析结果的正确性,获得真实污点传播路径的漏洞集合。原型系统基于Soot框架实现,对若干开源程序的实验结果表明了方法的有效性。
[SQL注入, 污点传播语义, 静态分析, 活跃变量分析, 插桩, 动态验证]
[郭帆, 范威威]