Show HN: Regolith – Regex library that prevents ReDoS CVEs in TypeScript
9 months ago
- #ReDoS
- #Rust
- #TypeScript
- Regolith 是一个服务端 TypeScript/JavaScript 库,通过结合 Rust 和线性正则表达式技术,从根本上免疫正则表达式拒绝服务(ReDoS)攻击。
- 该库旨在成为 TypeScript/JavaScript 默认 RegExp 的无缝替代方案,几乎无需修改现有代码即可接入。
- ReDoS 攻击通过利用低效的正则模式,使服务因计算资源耗尽而不可用。
- 与原生 RegExp 存在指数级最坏时间复杂度不同,Regolith 严格保证线性时间执行。
- 借鉴 Rust 正则库的设计理念,Regolith 主动舍弃反向引用、环视等特性以维持线性时间复杂度。
- 项目目前处于早期开发阶段,正积极寻求社区共建支持。
- 由于服务器常成为 ReDoS 攻击目标,Regolith 当前主要聚焦服务端应用场景。
- 可通过 npm 安装使用,执行命令 `npm i @regolithjs/regolith` 即可完成部署。
- 支持模式匹配、替换、搜索、字符串分割等线性时间复杂度操作,并提供完整示例。
- 项目已配备 93 项全面测试,支持多平台运行环境。
- 未来规划包括通过 WebAssembly(WASM)技术向客户端应用领域扩展。
- 库名 Regolith 源自行星表层的风化层概念,喻指其作为安全基石的定位。