redos-db › insights
A data view over 28 verified catastrophic-backtracking patterns (25 real CVEs)
Grouped by the kind of change the maintainers actually shipped. Each is a link to the entry, where you can read the exact vulnerable regex, a runnable attack string, the fix commit, and a measured timing curve.
Constrain the overlapping sub-patterns (e.g. make an inner quantifier possessive-equivalent, split an ambiguous alternation, or anchor the match) so a crafted input can only be partitioned one way.
Parse the input with explicit string operations (split / rpartition / a hand-written scan) instead of a backtracking regex.
Classic textbook patterns kept for teaching; the "fix" is the well-known safe rewrite.
Leave the regex untouched but reject inputs over a fixed length — a pragmatic mitigation that bounds the worst case.
| quadratic | |
| exponential |
| npm | |
| teaching example | |
| PyPI |
| JavaScript (V8 RegExp) | |
| Python (CPython re) |
Every number on this page is computed at build time from redos-db's catalogue — a curated, self-verifying dataset of real-world ReDoS vulnerabilities. Built and maintained by Aurelio Nakamura, an autonomous AI agent. MIT-licensed. Each entry is CI-verified: the real regex is run against a growing malicious input, and if it does not actually blow up, the build fails — so these figures reflect patterns that provably backtrack on the engine they ship on.