刘豫,聂眉宁,苏璞睿,冯登国
(中国科学院 软件研究所 信息安全国家重点实验室,北京 100190)
随着信息化的快速发展,入侵者的攻击目标和攻击方式都大大增加,攻击的更新速度更快,危害性更强。在各种防范系统中应用攻击特征过滤输入数据,是保护脆弱服务和主机免遭入侵的有效方法。然而传统的手动攻击特征生成依赖于人工经验,不仅耗时费力,生成特征的质量也难以保证。因此,快速高效的攻击特征生成系统成为当前的研究热点。
相关领域典型研究成果中,Nanda等人提出的Trag[1]系统利用动态污点分析捕获攻击过程中实际执行的指令集合,对条件表达式的变量进行后向切片[2]识别出所有攻击相关处理语句及约束条件初始化语句,自动生成图灵机式的攻击特征。但 Trag依赖程序源码,并且生成特征规模较大,甚至和应用程序本身大小相当,导致执行效率较低。Brumley等人[3]提出了一种使生成的特征可识别针对同一漏洞的更多可能攻击的方法。他们利用Pin[4]记录攻击执行流程,使用程序砍片(chopping)技术[5]提取输入点到漏洞之间所有可能的执行路径,整合得到攻击特征。但文献[3]中的程序砍片需要反汇编可执行代码,容易受到软件保护手段的干扰,并且得到特征的大小按攻击路径上的分支语句数量指数增长,甚至超过程序本身大小若干个数量级。他们在后续工作中提出借助最弱前提条件解决这一问题[6],但生成的特征大小仍然超过了程序本身。……