关键信息
- 分类
- 安全与校验
- 输入类型
- textarea, text, number
- 输出类型
- json
- 样本覆盖
- 4
- 支持 API
- Yes
概览
ReDoS 正则拒绝服务扫描器是一款专为开发者和安全工程师设计的在线工具,用于检测正则表达式中潜在的灾难性回溯风险。通过结合静态规则分析与近失配(near-miss)恶意输入模拟,该工具能够精准评估正则模式在极端情况下的性能表现,并提供风险评级与更安全的重写建议,帮助您在代码上线前拦截 ReDoS 漏洞。
适用场景
- •在代码审查阶段,需要验证新引入的正则表达式是否存在性能隐患时。
- •处理用户提供的动态输入或复杂文本匹配逻辑,担忧引发服务器 CPU 飙升时。
- •进行应用安全测试(AST),排查系统中潜在的正则拒绝服务(ReDoS)漏洞时。
工作原理
- •在文本框中逐行输入需要检测的正则表达式(无需包含前后的斜杠)。
- •根据需要配置正则标志位(如 i, m, u)以及最大恶意输入长度和模拟运行次数。
- •工具将结合静态启发式规则和动态基准测试,模拟最坏情况下的匹配耗时。
- •生成包含风险等级、最长耗时及安全替代方案的 JSON 格式分析报告。
使用场景
用户案例
1. 检查登录校验正则是否存在灾难性回溯
后端开发工程师- 背景原因
- 团队在用户注册接口中引入了一个复杂的正则表达式来校验用户名格式,但担心恶意用户利用特殊构造的字符串发起 ReDoS 攻击。
- 解决问题
- 评估现有的用户名校验正则是否存在灾难性回溯风险。
- 如何使用
- 将正则 `^(\w+\s?)*$` 粘贴到“正则列表”中,设置最大恶意输入长度为 32,模拟次数为 200。
- 示例配置
-
{ "regexList": "^(\\w+\\s?)*$", "maxEvilInputLength": 32, "simulationRuns": 200 } - 效果
- 扫描报告指出该正则存在“Critical”级别的风险,并展示了在 32 字符恶意输入下的极高耗时,同时建议移除嵌套量词。
2. 批量扫描旧代码库中的正则隐患
安全研究员- 背景原因
- 公司正在进行年度安全审计,需要排查旧版系统中所有用于日志解析和数据清洗的正则表达式。
- 解决问题
- 快速识别多个正则表达式中的性能瓶颈和安全漏洞。
- 如何使用
- 将提取出的多个正则表达式逐行粘贴到输入框中,配置标志位为 `g`,并运行扫描。
- 示例配置
-
{ "regexList": "(a+)+$\n<([a-z]+)([^<]+)*(?:>(.*)<\\/\\2>|\\s+\\/?>)", "flags": "g" } - 效果
- 工具输出 JSON 报告,精准标记出包含多重嵌套的 HTML 标签匹配正则为高危,并给出了具体的静态风险发现说明。
用 Samples 测试
regex常见问题
什么是灾难性回溯?
当正则表达式包含嵌套的量词(如 `(a+)+`)且匹配失败时,正则引擎会尝试所有可能的匹配路径,导致计算时间呈指数级增长,从而耗尽 CPU 资源。
最大恶意输入长度有什么作用?
它决定了工具在模拟攻击时生成的“近失配”字符串的最大长度。较长的输入能更明显地暴露指数级时间复杂度的缺陷。
为什么需要设置模拟次数?
模拟次数用于在基准测试中重复执行匹配操作,以消除偶然误差,从而得出更准确的最坏输入耗时评估。
工具能自动修复有漏洞的正则吗?
工具会提供静态风险发现和更安全的重写建议(例如消除嵌套量词),但建议开发者根据实际业务逻辑进行测试和调整。
支持哪些正则表达式语法?
工具主要基于 JavaScript 正则引擎标准进行静态分析和动态模拟测试,支持常见的正则语法及 i, m, u 等标志位。