论文部分内容阅读
在当前复杂的网络空间环境下,对用户输入数据缺乏有效性验证及过滤的Web应用程序而言,黑客可通过构造各种畸形数据使得软件实体违背设计者初衷,从而改变程序控制流继而窃取程序控制权,是当前所面临最为严重的Web安全威胁。针对注入型脆弱性与接收外部输入行为密切相关这一特征,从诱发成因及实践两方面着手,利用污点分析方法检测与消除软件实体内部注入型脆弱性是可行解决方案。基于上述条件,本文提出了基于动态污点分析的检测及防御模型,通过引入面向方面编程中方面(Aspect)这一模块化单元对污点分析过程进行了封装,使得安全这类典型的程序横切关注点(crosscutting-concerns)从基层子系统中分离,有效解决了漏洞检测代码在业务逻辑模块中分散及缠绕这两大类问题。并结合通知(Advice)机制动态加载各类检测组件实现在运行时执行修复代码,从而应对SQL注入及跨站脚本这两类典型的针对Web应用程序的代码注入攻击方式。原型系统使用AspectJ语言实现了基于探针形式的Web应用程序自保护框架,易于采用Servlet组件的服务器端部署使用。由方面封装的安全规范检测代码经编织器(Weaver)自动织入到基层子程序中,这一过程针对使用不同编程语言的应用程序具有较强的可移植性。经对比实验验证,这是一种低侵入性、轻量级、高效的代码注入攻击检测方法,能够在不修改应用程序执行引擎及源码的前提下实现自保护过程,从而有效防御7种已知SQL注入攻击类型及主流的跨站脚本漏洞利用代码,并选取部分针对商业系统攻击样本验证了本方法应对真实攻击场景的有效性,最后在漏洞原理上分析了本方法对于未知漏洞检测的可行性。