一句话:指出 Python、Java、JavaScript 等语言的正则引擎存在最坏指数级匹配行为,呼吁重新设计引擎以抵御 ReDoS 攻击。
正则表达式是广泛使用的强大字符串处理工具,但在 Python、Java、JavaScript 等主流编程语言中,其实现存在最坏情形指数级的匹配行为。这种高时间复杂度使攻击者能够构造特定输入耗尽服务端计算资源,造成正则表达式拒绝服务(ReDoS)攻击,给软件服务带来现实的安全威胁。本文以此为主题,指出该类问题并非个别语言的孤立现象,而是当前正则引擎设计层面的共性隐患,主张重新思考正则引擎的匹配与实现机制,以在保留正则表达力的同时缩小指数级匹配带来的攻击面。摘要以问题阐述与立场呼吁为主,未给出具体的技术方案与实验评估。
Regular expressions (regexes) are a powerful string manipulation tool. Unfortunately, in programming languages like Python, Java, and JavaScript, they are unnecessarily dangerous, implemented with worst-case exponential matching behavior. This high time complexity exposes software services to regular expression denial of service (ReDoS) attacks.
DOI 原文 ·
@inproceedings{paperbot5041,
title = {Rethinking Regex engines to address ReDoS},
author = {James C. Davis},
booktitle = {FSE},
year = {2019},
doi = {10.1145/3338906.3342509}
}