关于RegexploitRegexploit可以帮助研究人员识别易受正则表达式拒绝服务攻击(ReDoS)攻击的正则表达式。许多默认的正则表达式解析器都很复杂并且存在许多安全问题。在显示匹配的输入字符串时,使用正则表达式匹配可能很快,但一些不匹配的输入字符串会使正则表达式匹配器进入疯狂的回溯循环,并需要很长时间来处理。此时,可能会导致应用程序拒绝服务,因为CPU在尝试匹配正则表达式时卡住了。该工具的主要用途如下:查找易受正则表达式拒绝服务攻击(ReDoS)攻击的正则表达式;举一个会造成死循环回溯的恶意字符串的例子;Worst-casecomplexityWorst-casecomplexity反映了正则表达式匹配器回溯过程相对于输入字符串长度的复杂度。这个最坏情况的复杂度是立方的,如果字符串易受攻击部分的长度加倍,执行时间应该是原来的8倍(2^3)。工具安装工具需要安装在本地,并配置Python3.8+环境。由于Regexploit从JavaScript/TypeScript代码中提取正则表达式,因此还需要NodeJS12+。首先,我们可以创建一个虚拟环境:python3-mvenv.envsource.env/bin/activate然后使用pip安装Regexploit:pipinstallregexploit工具使用1.正则表达式处理我们可以将stdin(每个正则表达式占一行)传给Regexploit输入正则表达式:regexploit或直接处理正则表达式列表文件:catmyregexes.txt|regexploit2.自动提取正则表达式Regexploit内置支持解析Python、JavaScript、TypeScript、C#、YAML和JSON代码中的正则表达式。(1)Python代码通过AST解析Python代码(无需执行)并提取正则表达式,分析是否存在ReDoS漏洞:regexploit-pymy-project/regexploit-py"my-project/**/*.py"--glob(2)Javascript/Typescript此函数将使用捆绑在regexploit/bin/javascript中的NodeJS包实现,并在JavaScript中解析正则表达式:regexploit-jsmy-module/my-file.jsanother/file.jssome/folder/regexploit-js"my-project/node_modules/**/*.js"--glob(3)JSON/YAMLYAMLsupport需要安装pyyaml,我们可以使用命令"pipinstallregexploit[yaml]"来安装:regexploit-json*.jsonregexploit-yaml*.yaml(4)C#(.NET)regexploit-csharpsomething.cs工具使用样本运行Regexploit,并输入正则表达式“v\w*_\w*_\w*$on命令行":$regexploitv\w*_\w*_\w*$Pattern:v\w*_\w*_\w*$---最坏情况复杂度:3???(三次)重复字符:[5f:_]导致回溯的最终字符:[^WORD]示例:'v'+'_'*3456+'!'此时Regexploit会返回评估结果。项目地址Regexploit:[GitHub传送门]
