CVE-2026-0847
High · 7.5CVSS
7.5
EPSS
0.9%
Published
Mar 4, 2026
CISA due date
—
Cloudanix analysis
A widely used language-processing library can be tricked into opening private files on the server when an application lets users choose which files it should read.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Data Exposure
- Component
- Library
- Class
- Path Traversal
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
NLTK through 3.9.2 fails to sanitize file and corpus paths in multiple CorpusReader classes (including WordListCorpusReader, TaggedCorpusReader, and BracketParseCorpusReader). An attacker who can influence those path arguments can traverse out of the intended corpus directory and read arbitrary files the process can open. The direct impact is confidentiality-only (CVSS 7.5, C:H/I:N/A:N): contents of configuration, credentials, keys, and other local files may be returned, logged, or otherwise exposed. This CVE does not itself write files or execute code; remote code execution would require a separate bug or misuse of stolen secrets.
Why it matters to the business
Chatbots, ML APIs, and NLP pipelines that pass user-influenced paths into NLTK can leak API tokens, SSH keys, cloud credentials, and other secrets, enabling account takeover or follow-on incidents. NLTK is a common Python NLP dependency, so any service that loads corpora from request data is in scope. Urgency is moderate rather than emergency: EPSS is low and flat (~0.009 over 30 days), the issue is not in CISA KEV, ransomware use is not reported, and exploit maturity is none—but the advisory has been public for over 200 days with no fixed version listed in this dataset, so unpatched internet-facing NLP services remain an unnecessary secret-disclosure risk.
How an attack unfolds
An attacker finds an application that constructs or forwards a file, root, or corpus location into an NLTK CorpusReader. They supply a location that escapes the intended data directory. Because the reader does not adequately validate the resolved path, the worker process opens a file outside the corpus tree and the application reflects, logs, or otherwise exposes the contents. No named threat actors or ransomware campaigns are associated with this CVE, and there is no public exploit maturity; opportunistic probing of NLP and document-ingest APIs is the realistic scenario, not a tracked APT playbook. Stolen material (tokens, keys, configs) could later be reused against other systems, which is a consequence of the leak rather than a capability of this bug alone.
How to fix it
This dataset lists no official fixed NLTK version. Treat all nltk packages at or below 3.9.2 as affected: upgrade to a vendor-patched release from the official index as soon as one is published, then pin that version. Until a patch is available, do not pass user-controlled strings into CorpusReader path, root, or file arguments; resolve and constrain paths to an allowlisted corpus directory and reject any path that is not a child of that directory after canonicalization. Run NLP workers with least privilege, no read access to secrets or host key material, and filesystem isolation (separate user, container, or sandbox). Prefer shipping corpora as application assets rather than loading caller-specified files.
How to confirm the fix worked
Inventory every Python environment for nltk 3.9.2 or earlier. Search application code for WordListCorpusReader, TaggedCorpusReader, BracketParseCorpusReader, and any user-influenced root/file/corpus arguments. After upgrading, confirm the running interpreter reports a patched nltk version. Defensively verify that corpus loaders reject paths that resolve outside the allowlisted directory (assert denial/error, do not attempt to open sensitive host files). Confirm the service account cannot read secret locations even if a path were supplied. Re-scan dependencies on a regular cadence until an official fix is pinned.
Typical attack path
- Identify an NLP, chatbot, or ML API that loads NLTK corpora or word/tag/parse files from request or upload input
- Submit a corpus or file location intended to resolve outside the application's corpus directory
- Cause WordListCorpusReader, TaggedCorpusReader, or BracketParseCorpusReader (or a subclass) to open that location
- Recover file contents from the API response, error text, logs, or downstream pipeline output
- Reuse any exposed credentials or keys against other services (follow-on activity, not this CVE)
How to detect it
There is no known in-the-wild exploit kit or named actor for this CVE, so hunt for opportunistic probing rather than a signatured campaign. Review web, API gateway, and application logs for corpus, file, root, or path parameters containing parent-directory sequences or absolute paths on NLP, chatbot, or document-ingest routes. Review Python application logs and stack traces that mention WordListCorpusReader, TaggedCorpusReader, or BracketParseCorpusReader together with unexpected file locations. On the host, inspect file-access audit logs (for example Linux auditd or equivalent process-file telemetry) for the NLP worker reading files outside the corpus data directory—especially configuration, key, and token files—around the time of those requests. Correlate with processes that import nltk. Absence of these artifacts does not prove non-exploitation if verbose logging was off.
- ../
- ..\
- %2e%2e%2f
- %2e%2e/
- %2e%2e%5c
- ..%2f
- WordListCorpusReader
- TaggedCorpusReader
- BracketParseCorpusReader
What your security team should do
- Inventory all services and images that ship nltk 3.9.2 or earlier, especially internet-facing ML/NLP APIs
- Stop passing request, upload, or other untrusted input into NLTK CorpusReader path arguments; enforce an allowlisted corpus root
- Upgrade nltk past 3.9.2 as soon as an official patched release exists and pin the version
- Restrict NLP worker filesystem permissions so the process cannot read secrets, keys, or host configuration
- Add WAF or application checks that reject parent-directory and absolute-path values on corpus/file parameters
- Hunt historical logs for traversal patterns on NLP ingest endpoints given 200+ days of public disclosure, even though EPSS and KEV risk are currently low
The record
A vulnerability in NLTK versions up to and including 3.9.2 allows arbitrary file read via path traversal in multiple CorpusReader classes, including WordListCorpusReader, TaggedCorpusReader, and BracketParseCorpusReader. These classes fail to properly sanitize or validate file paths, enabling attackers to traverse directories and access sensitive files on the server. This issue is particularly critical in scenarios where user-controlled file inputs are processed, such as in machine learning APIs, chatbots, or NLP pipelines. Exploitation of this vulnerability can lead to unauthorized access to sensitive files, including system files, SSH private keys, and API tokens, and may potentially escalate to remote code execution when combined with other vulnerabilities.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| openSUSE:Tumbleweed | python-nltk | 0 | 3.9.3-1.1 |
Related vulnerabilities
- CVE-2026-54293 NLTK (Natural Language Toolkit) is a suite of open source Python modules, data sets, and… Also affects python-nltk
- CVE-2026-33230 NLTK (Natural Language Toolkit) is a suite of open source Python modules, data sets, and… Also affects python-nltk
- CVE-2025-14009 A critical vulnerability exists in the NLTK downloader component of nltk/nltk, affecting… Also affects python-nltk
- CVE-2024-39705 NLTK through 3.8.1 allows remote code execution if untrusted packages have pickled Python… Also affects python-nltk
- CVE-2026-81163 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')… CWE-22
- CVE-2026-112049 Vita3K before build 4187 contains a path traversal (zip slip) vulnerability in… CWE-22
- CVE-2026-112005 WhoDB 0.104.0 before 0.135.0 contains a path traversal vulnerability that allows remote… CWE-22
- CVE-2026-61702 OpenPrinting CUPS is an open source printing system for Linux and other Unix-like… CWE-22