Skip to main content
QUICK REVIEW

[论文解读] Static Analysis for Regular Expression Exponential Runtime via Substructural Logics

Asiri Rathnayake, Hayo Thielecke|arXiv (Cornell University)|May 27, 2014
Logic, programming, and type systems参考文献 27被引用 26
一句话总结

本文提出了一种改进的静态分析方法,通过回溯检测正则表达式在指数级运行时间上的漏洞,使用子结构逻辑将搜索树的分支建模为非线性行为。通过幂和乘积组合转换关系,将REDoS问题简化为可达性问题,从而在形式化正确性保证下精确检测指数级膨胀。

ABSTRACT

Regular expression matching using backtracking can have exponential runtime, leading to an algorithmic complexity attack known as REDoS in the systems security literature. In this paper, we build on a recently published static analysis that detects whether a given regular expression can have exponential runtime for some inputs. We systematically construct a more accurate analysis by forming powers and products of transition relations and thereby reducing the REDoS problem to reachability. The correctness of the analysis is proved using a substructural calculus of search trees, where the branching of the tree causing exponential blowup is characterized as a form of non-linearity.

研究动机与目标

  • 解决因正则表达式回溯导致的算法复杂度攻击安全威胁,即REDoS问题。
  • 通过提高检测指数时间正则表达式模式的精度,改进先前的静态分析方法。
  • 使用子结构逻辑将指数级膨胀的根源形式化为搜索树中的非线性分支。
  • 通过转换关系的代数组合,将REDoS检测问题简化为可达性问题。
  • 提供形式化验证的、精确的静态分析方法,用于识别可能导致指数级运行时间的正则表达式模式。

提出的方法

  • 将正则表达式匹配建模为转换系统,其中状态表示模式和输入字符串中的位置。
  • 将搜索树中的分支行为表示为非线性资源使用,通过子结构逻辑进行形式化。
  • 通过构造转换关系的幂和乘积,模拟所有可能的匹配路径并检测指数级增长。
  • 将检测指数级运行时间的问题简化为组合转换系统中的可达性查询。
  • 使用捕获回溯期间资源消耗的子结构演算,证明分析的正确性。
  • 利用该演算刻画非线性分支在何种情况下导致匹配时间的指数级膨胀。

实验结果

研究问题

  • RQ1我们能否精确识别出由于回溯而可能导致指数级运行时间的正则表达式?
  • RQ2如何形式化建模导致正则表达式匹配中指数级膨胀的非线性分支行为?
  • RQ3我们能否将检测指数级运行时间的问题简化为结构化转换系统中的可达性问题?
  • RQ4子结构逻辑在刻画正则表达式匹配期间资源使用方面起到什么作用?
  • RQ5通过幂和乘积组合转换关系,如何提升检测精度?

主要发现

  • 所提出的分析方法通过建模搜索树中的非线性分支,精确识别出可能导致指数级运行时间的正则表达式。
  • 子结构逻辑的使用实现了对资源消耗的形式化刻画,直接将非线性与指数级膨胀关联起来。
  • 通过幂和乘积组合转换关系,可在不过度近似的情况下准确检测指数级行为。
  • 将REDoS问题简化为可达性问题,实现了可扩展且形式化可验证的分析。
  • 该方法通过捕捉指数行为的真实根源,相比先前的静态分析实现了更高的精度。
  • 分析的正确性通过子结构演算形式化证明,确保在安全关键应用中的可靠性。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。