Affiliation:
1. Boston University, Boston, MA, United States
2. Northeastern University, Boston, MA, United States
Abstract
Fuzz testing repeatedly assails software with random inputs in order to trigger unexpected program behaviors, such as crashes or timeouts, and has historically revealed serious security vulnerabilities. In this article, we present HotFuzz, a framework for automatically discovering Algorithmic Complexity (AC) time and space 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 resource 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 in both the temporal and spatial domains.
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,General Computer Science
Reference81 articles.
1. 2006. The Java Virtual Machine Specification. Retrieved July 16 2021 from https://docs.oracle.com/javase/specs/jvms/se8/html/index.html.
2. 2006. The JVM Tool Interface (JVM TI): How VM Agents Work. Retrieved July 16 2021 from https://www.oracle.com/technetwork/articles/javase/index-140680.html.
3. 2015. JSON-Java Project. Retrieved July 16 2021 from https://stleary.github.io/JSON-java/.
4. 2018. CVE-2018-1517. Retrieved July 16 2021 from https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1517.
5. 2018. CVE-2018-5390. Retrieved July 16 2021 from https://nvd.nist.gov/vuln/detail/CVE-2018-5390#vulnCurrentDescriptionTitle.
Cited by
4 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献