CVE-2026-80205: NLTK ReDoS in Text.findall via unvalidated regex

CVE-2026-80205 · Severity: high · CVSS 7.5 · Published 2026-08-26

NLTK is a popular natural language processing library used to analyze and manipulate text data. The Text.findall() method, which searches for patterns in tokenized text, accepts user-supplied regular expressions but runs them without timeout protection or validation. An attacker can submit a specially crafted regex pattern that triggers catastrophic backtracking, consuming 100% CPU indefinitely and preventing legitimate users from accessing the application.

Technologies: nltk (PyPI). Vendors: PyPI.

Quick answers

Is CVE-2026-80205 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-80205 being exploited in the wild.
How severe is CVE-2026-80205?
High severity, with a CVSS score of 7.5, published 26 August 2026.
Which products and versions are affected?
nltk (PyPI) <= 3.9.4, ECOSYSTEM:introduced=0,fixed=3.10.0.
Is there a fix for CVE-2026-80205?
Yes. nltk (PyPI): upgrade to 3.10.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-80205 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-80205?
Check whether you run nltk (PyPI) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • nltk (PyPI): upgrade to 3.10.0 or later
    pip install "nltk>=3.10.0"

Technical details

The vulnerability is a Regular Expression Denial of Service (ReDoS) in nltk/text.py, specifically in the TokenSearcher.findall() (line 255) and Text.findall() (line 620) methods. The code preprocesses user-supplied regexes by transforming angle brackets and whitespace, but does not validate or reject patterns prone to exponential backtracking. When re.findall() executes the preprocessed regex against the internal token string, a malicious pattern like ((a+)+)b can cause catastrophic backtracking if the input contains no match, forcing the Python regex engine to explore exponentially many paths. This requires no authentication or user interaction; an unauthenticated attacker can trigger the denial of service with a single network request. The patch was released in version 3.10.0 (commit d8e4753), and affected versions are &lt;= 3.9.4.

Affected products

  • NLTK Project NLTK <= 3.9.4

Identifiers

  • CVE-2026-80205
  • GHSA-rrv8-h7p8-rx55
  • PYSEC-2026-3750

Timeline

  • 2026-08-12: disclosed: Published to GitHub Advisory Database
  • 2026-09-08: advisory: GHSA-rrv8-h7p8-rx55 and CVE-2026-80205 published
  • 2026-09-08: patched: Fix available in version 3.10.0

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.