原文标题:SWIDE: A Semantic-aware Detection Engine for Successful Web Injection Attacks
原文作者:Ronghai Yang,Xianbo Wang,Kaixuan Luo,Xin Lei,Ke Li,Jiayuan Xin,Wing Cheong Lau原文链接:https://doi.org/10.1145/3658644.3670304发表会议:CCS笔记作者:李智宇@安全学术圈主编:黄诚@安全学术圈编辑:张贝宁@安全学术圈
1、背景介绍
由于注入攻击在 Web 应用中的普遍存在性,以及日益提升的攻击复杂性,检测引擎的有效性逐渐降低,导致安全警报泛滥。为了精准识别成功的 Web 注入攻击,本文提出了一种利用语法和语义分析的新型攻击检测引擎 SWIDE,该系统的设计基于 3 个观察结果:
大部分网络流量是良性的。系统采用两阶段设计:先快速过滤大部分良性流量,再对可疑流量进行轻量级语义分析。
攻击载荷语法的语法合规性。这种强制性要求使其暴露可被解析器识别的恶意句法模式。
成功的攻击需要可观察的效果。攻击成功需产生可观测反馈(如HTTP响应或侧信道数据),系统通过语义分析和模拟执行匹配这些预期效果。
本文贡献:
SWIDE 是首个行业就绪的解决方案,通过先进语义分析技术和 payload 模拟执行,大幅减少 5 类 Web 注入攻击的安全警报,有效检测高度规避型攻击。
通过与一流网络安全公司合作,SWIDE 系统已在超过 5000 家企业完成部署。基于实际部署环境,研究者通过大规模测量研究系统分析了成功攻击案例,并对其普遍性进行了量化评估。
SWIDE 系统成功检测到 60 个活跃利用的零日漏洞和定向勒索软件攻击,能在早期阶段有效识别高破坏性威胁,显著遏制了地下攻击活动的威胁扩散。
2、动机研究
下图以一个远程代码执行漏洞为例,揭示了 Web 注入攻击检测的三重挑战:
多层混淆技术(如载荷分割、动态函数调用)极大增加了解析难度。
需通过去混淆和模拟执行预测攻击效果(如响应中出现 “hacked”)。
必须在保证检测精度的同时实现近实时分析,需要一个轻量级的解决方案。
3、方案设计
如下图所示,SWIDE 使用双组件架构:
第一个组件位于服务器和互联网之间的实时流量检测系统。包含可疑数据包分类和攻击载荷识别两个模块。
第二个组件部署在集中式云平台上的近实时分析引擎。包含利用意图恢复和后果匹配两个模块。
3.1 可疑数据包分类
SWIDE 引擎首先对 HTTP 请求执行轻量级的分类,以过滤掉大量良性的网络流量。鉴于 Web 语言的动态特性,研究者设计了一种字符级过滤方案以阻止攻击者掩盖攻击载荷中的关键词。结果表明,该方案成功地排除了超过 99.9% 的良性负载,而没有错误地丢弃数据集中的任何恶意样本。
3.2 攻击载荷识别
由于攻击者会利用边界标记(如 ?> 和 ")来扰乱应用程序的预期流程并插入恶意代码,研究者设计了一种双状态策略(正常状态和紧急恢复状态),通过官方语法解析和自定义语法规则有效分析部分代码片段。在攻击检测方面, SWIDE 系统通过识别危险语法结构(如字符串连接和动态函数调用)精准定位混淆攻击。
3.3 利用意图恢复
研究者开发了一个包含函数模拟和表达式模拟功能的有效载荷模拟模块。函数模拟功能将函数分为攻击型(如命令执行函数和文件操作函数)和混淆型(字符串相关操作和动态函数调用)。对于攻击型函数,直接模拟其执行并分析参数;对于混淆型函数,结合语法分析和数据流预测推断函数名及参数值。此外,表达式模拟功能通过词法分析处理弱类型语言的混淆。
3.4 后果匹配
SWIDE 通过模拟执行攻击载荷并分析 HTTP 响应数据来判定攻击是否成功。对于信息泄露类攻击,采用正则匹配响应中的敏感数据,并针对环境相关命令设计启发式规则;对于文件上传攻击,通过响应内容或后续文件访问行为确认;对于网络探测攻击,结合语义识提取目标域名并监控网络流量。
4、实验评估
测试人员在5种不同的漏洞类型中总共生成了3598个成功的攻击测试案例,用于评估 SWIDE 的召回率,使用相同的攻击数据集来测试另外两种流行的商业网络入侵检测系统(NIDS)产品。下图表明:SWIDE 的召回率明显高于传统的 NIDS。
SWIDE 的可疑数据包分类和攻击载荷识别模块内存占用均低于 1MB,处理良性流量时吞吐量降幅低于 1%;在 10% 恶意流量的场景下,请求延迟仅 3-10ms,吞吐量下降幅度控制在 10% 以内。利用意图恢复与后果匹配模块以 10MB 内存实现每秒 2000 条安全日志的实时处理,单条日志最慢解析时间为 71ms。面对超过 5000 家企业数据产生的队列积压,该系统保证 5 分钟内完成处理。
下表展示了 200 家企业在一周内遭受的成功攻击情况。SQL注入精度较低的原因与非标准的工程实践有关,例如,一些良性业务逻辑中的查询语句类似于" and 1=1",导致在识别成功攻击时出现误判。
5、总结
本文提出了一种利用语法和语义分析的新型攻击检测引擎 SWIDE,用于大规模系统性地检测成功的 Web 注入攻击。通过解析混淆攻击载荷的语法结构、模拟执行推断攻击意图并匹配响应结果,实现了对PHP命令注入、SQL注入等 Web 攻击的高效精准检测。SWIDE 在六个月内每周为 15% 的企业检测其遭受的成功攻击并识别出 60 个零日漏洞,有效解决了传统网络入侵检测系统因大量误报导致的“警报疲劳”问题。
安全学术圈招募队友-ing
有兴趣加入学术圈的请联系 secdr#qq.com
声明:本文来自安全学术圈,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。