
CVE catalog
CVE-2026-72818
The URLS regular expression in nltk/tokenize/casual.py, compiled into TweetTokenizer.WORD_RE and applied by TweetTokenizer.tokenize, contains a naked-domain branch whose domain-label prefix [a-z0-9]+(
- Severity
- High · CVSS 8.7
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Published
- Updated
- Source
- [NVD] · [CVE record]
- EPSS
- 0.74% · Oct 25, 2026
The URLS regular expression in nltk/tokenize/casual.py, compiled into TweetTokenizer.WORD_RE and applied by TweetTokenizer.tokenize, contains a naked-domain branch whose domain-label prefix [a-z0-9]+(?:[.\-][a-z0-9]+)* is unbounded. Input consisting of many alternating label separators can be partitioned in exponentially many ways, and because the branch also requires a trailing top-level domain that such input never supplies, the engine explores those partitions before failing at each offset. A few kilobytes of input therefore consumes seconds to minutes of single-threaded CPU, and the HANG_RE substitution performed before matching does not collapse the pattern. TweetTokenizer is intended for tokenizing untrusted social-media text, so any service that applies it, or the module-level casual_tokenize, to submitted text can be stalled per request without authentication. Version 3.10.1 bounds the label repetition.
Vulnerable and fixed packages
Distribution-reported package versions and fixes. These do not depend on matching against the OpenFactory package catalog.
| Distribution | Package | Release | Version | Status |
|---|---|---|---|---|
| Debian | nltk | sid | 3.10.3-1 | fixed |
| Debian | nltk | forky | 3.10.3-1 | fixed |
| Debian | nltk | trixie | 3.9.1-2 | vulnerable |
| Debian | nltk | bookworm | 3.8-1 | vulnerable |
| PyPI | nltk | Not reported | 3.10.1 | fixed |
| PyPI | nltk | Not reported | 3.10.1 | fixed |
Fixed-version evidence
| Distribution | Package | Type | Release | Fixed version | Urgency | Origin | Bugs |
|---|---|---|---|---|---|---|---|
| Debian | nltk | source | sid | 3.10.3-1 | not yet assigned | Not reported | Not reported |
| Debian | nltk | source | forky | 3.10.3-1 | not yet assigned | Not reported | Not reported |
| Debian | nltk | source | trixie | (unfixed) | not yet assigned | Not reported | Not reported |
| Debian | nltk | source | bookworm | (unfixed) | not yet assigned | Not reported | Not reported |
| PyPI | nltk | PyPI | Not reported | 3.10.1 | Not reported | GHSA-QX2G-XRX7-VFH8 | Not reported |
| PyPI | nltk | PyPI | Not reported | 3.10.1 | Not reported | PYSEC-2026-3870 | Not reported |
Notes
[trixie] nltk: Minor issue [bookworm] nltk: Minor issue
OpenFactory catalog packages
[Debian 12 (Bookworm)]
- [python3-nltk]Affected
Source package: [nltk]
Details (2)
3.8-1· all · bookwormAffected
nvd · nltk · debian · bookworm; nvd · nltk · debian · 12
3.8-1· all · bookwormAffected
nvd · nltk · debian · bookworm; nvd · nltk · debian · 12
[Debian 13 (Trixie)]
- [python3-nltk]Affected
Source package: [nltk]
Details (2)
3.9.1-2· all · trixieAffected
nvd · nltk · debian · 13
3.9.1-2· all · trixieAffected
nvd · nltk · debian · 13
Observed:
References
- [https://github.com/nltk/nltk]
- [https://github.com/nltk/nltk/blob/3.9.4/nltk/tokenize/casual.py]
- [https://github.com/nltk/nltk/issues/3704]
- [https://github.com/nltk/nltk/releases/tag/v3.10.1]
- [https://nvd.nist.gov/vuln/detail/CVE-2026-72818]
- [https://osv.dev/vulnerability/DEBIAN-CVE-2026-72818]
- [https://osv.dev/vulnerability/PYSEC-2026-3870]
- [https://security-tracker.debian.org/tracker/CVE-2026-72818]
- [https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-72818.json]
- [https://www.vulncheck.com/advisories/nltk-tweettokenizer-url-pattern-backtracks-catastrophically-on-naked-domain-like-input]
[Debian Security Tracker] · [FIRST EPSS] · [GitHub Advisory Database] · [National Vulnerability Database (NVD)] · [OSV Package Vulnerability Database] · [Red Hat security advisories and VEX]