作者CMJ0121 (不要偷 Q)
看板NetSecurity
标题[闲聊] Cloudflare 发生问题的 RegEx
时间Sat Jul 13 22:12:51 2019
在 Clludflrae[0] 的官方文章中提到了 大家想知道发生问题的 regex 为何
根据文章中提到出现问题的 regex 因为出现了 .*(?:.*=.*) 导致出现 DoS 的状况发生
也就是资源被占满的情况 (以这次的例子是 CPU)
这类型的问题可以被称为 ReDos [1]
是一种因为正规表示法 (RegEx) 撰写时的疏忽导致再比对时 耗尽 CPU 资源
经典的例子是 (a+)+ 这个表示法 当比对 aaaa! 时
会根据 a 的数量而比对次数成等比成长
原因在於当配失败时 会触发 backtrack 而继续比对
更多的比对资讯可以使用 Perl[2] 的 debug 工具
[0]:
https://blog.cloudflare.com/details-of-the-cloudflare-outage-on-july-2-2019/
[1]:
https://en.wikipedia.org/wiki/ReDoS
[2]:
https://metacpan.org/pod/Regexp::Debugger
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 106.1.224.240 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/NetSecurity/M.1563027175.A.0CC.html
1F:推 st1009: 好文推推 07/13 22:54