正则表达式拒绝服务攻击及SMTP洪泛攻击研究
正则表达式拒绝服务攻击分析
在正则表达式匹配中,攻击者可以通过多次注入数据来成倍增加匹配时间,从而发动攻击。虽然在最坏情况下,检查正则表达式是否具有指数级运行时间的复杂度可能很高,但这并不意味着这种分析毫无意义。就像在函数式语言(如ML和Haskell)中的类型检查,虽然复杂度高,但在实际应用中,由于最坏情况很少出现在真实代码中,所以仍然能高效工作。
相关工作
- 基于算法复杂度的拒绝服务(DoS)攻击已经有了相关研究。回溯式正则表达式匹配器的指数级运行时间行为也被讨论过,有些研究还展示了如何利用此漏洞对入侵检测/防御系统(如Snort)发动DoS攻击。这些研究提出的解决方案主要是修改正则表达式和/或匹配算法,但它们主要关注带有反向引用的正则表达式,这是我们尚未探索的领域。
- 目前有一些工具可以帮助程序员找到易受攻击的正则表达式,其中微软的SDL Regex Fuzzer和RegexBuddy是比较实用的工具。RegexBuddy提供调试模式,可检测所谓的“灾难性回溯”,但这种可视化调试方法只有在提前知道攻击字符串时才有效。而SDL Fuzzer专门用于分析正则表达式漏洞,它通过模糊测试(即对生成的字符串序列进行暴力匹配)来检测长时间运行的情况。然而,该工具对某些表达式进行分类可能需要长达四分钟的时间,且其输出仅报告表达式在给定时间内未能执行完成的情况,难以确定表达式中的确切问题。
与这些工具不同,我们的静态分析方法无需运行表达式,就能在几秒钟内对数千个正则表达式进行分类,并能精确指出导致漏洞的Kleene表达式,还允许程序员使用恶意输入序列测试匹配器。
超级会员免费看
订阅专栏 解锁全文
1016

被折叠的 条评论
为什么被折叠?



