# SlowFuzz: Automated Domain-Independent Detection of Algorithmic Complexity Vulnerabilities

arXiv: https://arxiv.org/abs/1708.08437 · HTML: https://mlsanity.com/paper/1708.08437/

## Key facts

- Cited by 6 papers in the map (data through 14 Oct 2026).
- First posted on arXiv 28 Aug 2017.

## Built on by (most cited first, 6 of 6)

- [DeepPerform: An Efficient Approach for Performance Testing of Resource-Constrained Neural Networks](https://mlsanity.com/paper/2210.05370/) (2022)
- [Understanding Performance Problems in Deep Learning Systems](https://mlsanity.com/paper/2112.01771/) (2021)
- [RareGAN: Generating Samples for Rare Classes](https://mlsanity.com/paper/2203.10674/) (2022)
- [Worst-Case Convergence Time of ML Algorithms via Extreme Value Theory](https://mlsanity.com/paper/2404.07170/) (2024)
- [Worst-Case Analysis is Maximum-A-Posteriori Estimation](https://mlsanity.com/paper/2310.09774/) (2023)
- [Rethinking Code Performance Benchmarks for LLMs](https://mlsanity.com/paper/2607.07619/) (2026)

## Abstract (arXiv)

Algorithmic complexity vulnerabilities occur when the worst-case time/space complexity of an application is significantly higher than the respective average case for particular user-controlled inputs. When such conditions are met, an attacker can launch Denial-of-Service attacks against a vulnerable application by providing inputs that trigger the worst-case behavior. Such attacks have been known to have serious effects on production systems, take down entire websites, or lead to bypasses of Web Application Firewalls. Unfortunately, existing detection mechanisms for algorithmic complexity vulnerabilities are domain-specific and often require significant manual effort. In this paper, we design, implement, and evaluate SlowFuzz, a domain-independent framework for automatically finding algorithmic complexity vulnerabilities. SlowFuzz automatically finds inputs that trigger worst-case algorithmic behavior in the tested binary. SlowFuzz uses resource-usage-guided evolutionary search techniques to automatically find inputs that maximize computational resource utilization for a given application.
