HotFuzz: Discovering Algorithmic Denial-of-Service Vulnerabilities Through Guided Micro-Fuzzing
Abstract
Fifteen billion devices run Java and many of them are connected to the
Internet. As this ecosystem continues to grow, it remains an important
task to discover any unknown security threats these devices face. Fuzz
testing repeatedly runs software on random inputs in order to trigger
unexpected program behaviors, such as crashes or timeouts, and has
historically revealed serious security vulnerabilities. Contemporary
fuzz testing techniques focus on identifying memory corruption
vulnerabilities that allow adversaries to achieve either remote code
execution or information disclosure. Meanwhile, Algorithmic Complexity
(AC) vulnerabilities, which are a common attack vector for
denial-of-service attacks, remain an understudied threat.
In this paper, we present HotFuzz, a framework for automatically
discovering AC vulnerabilities in Java libraries. HotFuzz uses
micro-fuzzing, a genetic algorithm that evolves arbitrary Java objects
in order to trigger the worst-case performance for a method under
test. We define Small Recursive Instantiation (SRI) as a technique to
derive seed inputs represented as Java objects to micro-fuzzing. After
micro-fuzzing, HotFuzz synthesizes test cases that triggered AC
vulnerabilities into Java programs and monitors their execution in
order to reproduce vulnerabilities outside the fuzzing framework.
HotFuzz outputs those programs that exhibit high CPU utilization as
witnesses for AC vulnerabilities in a Java library. We evaluate
HotFuzz over the Java Runtime Environment (JRE), the 100 most popular
Java libraries on Maven, and challenges contained in the DARPA Space
and Time Analysis for Cybersecurity (STAC) program. We evaluate SRI’s
effectiveness by comparing the performance of micro-fuzzing with SRI,
measured by the number of AC vulnerabilities detected, to simply using
empty values as seed inputs. In this evaluation, we verified known AC
vulnerabilities, discovered previously unknown AC vulnerabilities that
we responsibly reported to vendors, and received confirmation from
both IBM and Oracle. Our results demonstrate that micro-fuzzing finds
AC vulnerabilities in real-world software, and that micro-fuzzing with
SRI-derived seed inputs outperforms using empty values.
References
- William Blair, Andrea Mambretti, Sajjad Arshad, Michael Weissbacher, Engin Kirda, William Robertson, Manuel Egele. "HotFuzz: Discovering Algorithmic Denial-of-Service Vulnerabilities Through Guided Micro-Fuzzing." In Proceedings of Network and Distributed Systems Security Symposium (NDSS) 2020