NLTK TweetTokenizer URL Pattern Backtracks Catastrophically on Naked-Domain-Like Input
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.
CVE-2026-72818
Primary source · Revision 1
Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.
Security context
Source reference: cve:CVE-2026-72818
nltk
Source reference: /containers/cna/affected/0/product
- Affected versions
- Not stated in this record
- Fixed versions
- Not stated in this record
- Prerequisites
- Not stated in this record
Structured affected-version data
Original package identities and version rules from this source.
[
{
"repo": "https://github.com/nltk/nltk",
"vendor": "nltk",
"product": "nltk",
"versions": [
{
"status": "affected",
"version": "0",
"lessThan": "3.10.1",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "3.10.1",
"versionType": "semver"
}
],
"packageURL": "pkg:pypi/nltk",
"packageName": "nltk",
"programFiles": [
"nltk/tokenize/casual.py"
],
"collectionURL": "https://pypi.org",
"defaultStatus": "unaffected"
}
]- Related CVEs
- CVE-2026-72818
Source reference:
/cveMetadata/cveId
Publisher severity
high
Source reference: /containers/cna/metrics
- Event
- #957 · Revision 1
- Added to Heist Feed
- Publisher date