TRE Python绑定 — ReDoS鲁棒性演示
摘要
一个极简的Python ctypes绑定到TRE正则表达式库,展示了针对ReDoS攻击的鲁棒性能,处理1000万字符输入上的恶意模式时,速度远超Python的re模块。
暂无内容
查看缓存全文
缓存时间: 2026/05/08 06:43
# 研究:TRE Python绑定——ReDoS鲁棒性演示
来源:https://simonwillison.net/2026/May/4/tre-python-binding/
研究TRE Python绑定——ReDoS鲁棒性演示 (https://github.com/simonw/research/tree/main/tre-python-binding#readme) —— 该项目旨在演示正则表达式的健壮性能,提供了一个基于Python `ctypes`的最小化TRE正则库绑定,突出展示了TRE对正则表达式拒绝服务(ReDoS)攻击的免疫能力,而Python内置的`re`模块在面对此类攻击时极易崩溃。关键基准测试表明,即使在巨量输入(1000万个字符)上执行臭名昭著的“邪恶”模式,TRE的处理速度也远快于`re`模块处理极少量输入的速度,并且其性能随输入规模线性增长,而非指数级爆炸。
既然它已经足够好到让 antirez (https://simonwillison.net/2026/May/4/redis-array/) 将其添加到Redis中,我觉得有必要更详细地探索一下 Ville Laurikari 的 TRE (https://github.com/laurikari/tre/) 正则表达式引擎。
我让 Claude Code 构建了一个实验性的Python绑定(使用了 `ctypes`),并针对该库尝试了一些恶意正则表达式攻击。TRE 对这些攻击的处理能力远胜于 Python 标准库实现,这主要得益于它不支持回溯。
相似文章
PostgreSQL 正则表达式的新增特性 (pg_tre 和 pg_re2)
本文探讨了用于增强正则表达式索引的新 PostgreSQL 扩展 pg_tre 和 pg_re2,展示了在大型数据库测试中相较于传统方法(如 pg_trgm)的显著性能提升。
在正则表达式引擎上运行《DOOM》
一位开发者演示了如何使用正则表达式引擎作为计算基础来运行《DOOM》游戏,每帧执行数百万次替换。
@dakshgup: 介绍 T-Rex,启用 T-Rex 后,Greptile 不仅能审查你的 PR,还能在沙箱中运行你的分支以发现错误……
Greptile 推出 T-Rex,该功能可在沙箱中运行你的分支,通过模拟 API 调用、点击 UI 界面以及运行单元测试来发现错误,相比基础版 Greptile 能多捕获约 20% 的错误。
TREX:一款运行你的代码的AI代码审查工具
Greptile 推出 TREX,这是一款能够执行代码并检测运行时错误的 AI 代码审查工具。它超越了静态分析,通过启动并行代理来调查问题并生成截图等产物。
@charliermarsh: 对于这个126字节的代码片段:- ty 0.0.65 栈溢出 - mypy 2.3.0 段错误 - Pyright 1.1.411 超时 - Pyrefly 1.1.…
一个126字节的代码片段导致多个Python类型检查器(ty、mypy、Pyright、Pyrefly、Pycroscope)崩溃、挂起或恐慌,凸显了这些工具中有趣的边界情况。