黑客接单网,一个诚信可靠的黑客在线接单平台网站
标题: 正则表达式拒绝服务(ReDoS)——邪恶字符串导致的CPU炸弹 [打印本页]
作者: admin 时间: 昨天 23:58
标题: 正则表达式拒绝服务(ReDoS)——邪恶字符串导致的CPU炸弹
正则表达式拒绝服务(ReDoS)——邪恶字符串导致的CPU炸弹摘要:正则表达式拒绝服务(ReDoS, Regular Expression Denial of Service)攻击利用某些低效正则表达式(具有“灾难性回溯”特性),通过精心构造的字符串使正则引擎CPU占用飙升,导致服务不可用。黑客利用此漏洞可瞬间拖垮应用。本文讲解易受攻击的正则模式,并提供替代引擎、输入长度限制和超时机制。
关键词:黑客网站攻击;ReDoS;渗透测试;拒绝服务;正则表达式安全
一、引言正则表达式是处理字符串的强大工具,但不当的写法可能导致指数级回溯。例如,正则^(a+)+$匹配字符串aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!时,需要进行2^N次回溯。黑客利用此特性发起ReDoS攻击,瘫痪服务器。
二、ReDoS原理2.1 危险模式2.2 攻击示例服务端代码:
[size=12.573px]javascript
app.get('/search', (req, res) => { let pattern = req.query.pattern; let input = req.query.input; let re = new RegExp(pattern); if (re.test(input)) res.send("Match"); else res.send("No match");});
黑客提供pattern为(a+)+,input为一长串a加一个!,服务器CPU瞬间满载。
三、防御措施使用非回溯引擎:Google RE2、Rust的regex库等保证线性时间。
限制输入长度:例如最长100字符,极大降低回溯爆炸可能性。
设置正则执行超时:如Node.js的--regexp-timeout,Python的timeout装饰器。
避免动态构造用户提供的正则表达式;如果必须,使用安全子集或强制超时。
代码审计:扫描危险正则模式。
四、总结ReDoS是一种低带宽高杀伤力的DoS攻击。防御核心是杜绝用户控制的正则表达式 + 输入长度限制 + 超时机制。
| 欢迎光临 黑客接单网,一个诚信可靠的黑客在线接单平台网站 (https://www.heike666.com/) |
Powered by Discuz! X3.3 |