摘要

SQL注入攻击是一种常见的针对Web应用程序漏洞的攻击形式。任何形式的SQL注入攻击最终都会改变原有SQL语句的逻辑结构,违背设计者的初衷。现有的SQL注入攻击检测方法存在检测代码不易被重用,且不能被在线注入到Web应用程序等不足。本文提出一种基于ECA规则和动态污点分析的在线检测SQL注入攻击的模型。首先,定义污点标记规则监视污点源函数以标记系统外部引入数据;然后,定义污点传播规则以实时跟踪污点数据在应用内部的流向;接着,定义污点检查规则以拦截污点汇聚点函数的参数并解析其可能携带的污点状态;最后,在原始的Web应用运行时加载ECA规则脚本以达到在线检测SQL注入攻击的目的,Web应用无需重新编译、打包和部署。本文使用Byteman实现了所提模型。在两个不同的Web应用测试实验中,所提模型可以识别绝大多数的SQL注入攻击样本,对于正常请求样本没有误报。所提模型的检测准确率可以达到99.42%,与基于支持向量机(SVM)和基于词频逆向文件频率(TFIDF)的方法相比有所提升;与基于面向方面编程(AOP)实现的方法相比,所提模型易于在Web应用启动后在线加载检测模块。实验结果证明所提模型能够在不修改应用程序执行引擎及源码的情况下,可以检测6种常见的SQL注入攻击类型,且具有在线检测的优点。