Static Detection of DoS Vulnerabilities in Programs that use Regular Expressions (Extended Version)
Preprint
Abstract
In an algorithmic complexity attack, a malicious party takes advantage of the worst-case behavior of an algorithm to cause denial-of-service. A prominent algorithmic complexity attack is regular expression denial-of-service (ReDoS), in which the attacker exploits a vulnerable regular expression by providing a carefully-crafted input string that triggers worst-case behavior of the matching algorithm. This paper proposes a technique for automatically finding ReDoS vulnerabilities in programs. Specifically, our approach automatically identifies vulnerable regular expressions in the program and determines whether an "evil" input string can be matched against a vulnerable regular expression. We have implemented our proposed approach in a tool called REXPLOITER and found 41 exploitable security vulnerabilities in Java web applications.Keywords
All Related Versions
This publication has 19 references indexed in Scilit:
- Analyzing Matching Time Behavior of Backtracking Regular Expression Matchers by Using Ambiguity of NFA2016
- Automata-based symbolic string analysis for vulnerability detectionFormal Methods in System Design, 2013
- Static Analysis for Regular Expression Denial-of-Service Attacks2013
- String Abstractions for String VerificationLecture Notes in Computer Science, 2011
- Stranger: An Automata-Based String Analysis Tool for PHP2010
- Inputs of Coma: Static Detection of Denial-of-Service Vulnerabilities2009
- Automatic creation of SQL Injection and cross-site scripting attacks2009
- Sound and precise analysis of web applications for injection vulnerabilitiesACM SIGPLAN Notices, 2007
- The essence of command injection attacks in web applicationsACM SIGPLAN Notices, 2006
- Precise Analysis of String Expressions2003