修复真实世界正则表达式的 DoS 漏洞
编程语言
2022-08-23 v4
摘要
从示例中合成与修复正则表达式(简称 regexes)已有大量工作。这些编程 by 示例(PBE)方法通过让用户以示例反映其意图来帮助他们编写正则表达式。然而,现有方法可能生成匹配耗时超线性的正则表达式,并易受正则表达式拒绝服务(ReDoS)攻击。本文提出首个保证只生成无漏洞正则表达式的 PBE 修复方法。重要的是,我们的方法能处理包含环视与反向引用的真实世界正则表达式。由于这些扩展,现有仅考虑纯正则表达式的 ReDoS 漏洞形式化定义是不够的。因此,我们首先给出真实世界正则表达式回溯匹配算法的新形式化语义与复杂度,并据此给出首个真实世界正则表达式 ReDoS 漏洞的形式化定义。接下来,我们提出一种称为真实世界强 1-无歧义性的新条件,它足以保证真实世界正则表达式的无漏洞性,并将相应的 PBE 修复问题形式化。最后,我们给出一个解决该修复问题的算法。该算法基于并扩展先前的 PBE 方法以处理真实世界扩展,并通过约束强制真实世界强 1-无歧义性条件。
引用
@article{arxiv.2010.12450,
title = {Repairing DoS Vulnerability of Real-World Regexes},
author = {Nariyoshi Chida and Tachio Terauchi},
journal= {arXiv preprint arXiv:2010.12450},
year = {2022}
}