Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify application exposing NLTK corpus reader to external input
-
DeliveryCraft path traversal selector or poisoned index payload
-
ExploitSubmit to frame_by_name/doc/lu/header method
-
ExecutionNLTK constructs out-of-bounds file path
-
PersistXML parser reads arbitrary file outside corpus root
-
ImpactExfiltrate sensitive file contents
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V5 - File Handling File name/path control
|
| Exploitation Conditions | Exploitation requires three concurrent conditions: (1) the target application must pass attacker-controlled input - from a network-reachable source such as an HTTP parameter, API call, or message queue entry - directly or with insufficient sanitization to one of the specific methods frame_by_name, doc, lu, or header on a FramenetCorpusReader or NKJPCorpusReader instance; (2) NLTK version before 3.10.0 must be installed; and (3) the FrameNet or NKJP corpus data must be present and the corresponding reader must be initialized, as these are optional downloads not bundled with NLTK by default. The AT:P condition in the CVSS 4.0 vector confirms that a specific attack target configuration must exist. Exploitation is further limited to reading files that are (a) accessible by the process's OS account, and (b) parseable as XML - binary files, files with non-XML content, or files outside the process's read permissions cannot be exfiltrated via this vector. Authentication requirements are not independently confirmable from the CVE description; the CVSS PR:N indicates no NLTK-level credentials are required, but application-layer authentication wrapping the corpus reader API, if present, would serve as a mitigating control. |
| Impact | The CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N) communicates a nuanced risk profile. The AV:N and PR:N metrics indicate the attack path is network-accessible and requires no credentials, which would ordinarily elevate priority. However, AC:H and - critically - AT:P (attack target conditions present) significantly constrain exploitability: AT:P in CVSS 4.0 means a specific precondition must exist in the deployment, here that the application must relay externally-controlled input into the corpus reader methods. NLTK is predominantly used in research, academic, and data-science pipelines; production deployments that expose FramenetCorpusReader or NKJPCorpusReader methods to network-facing user input are uncommon. No EPSS data was provided in the input, no POC has been identified, and no active exploitation is confirmed (no CISA KEV listing). The high-sounding score of 8.2 reflects worst-case confidentiality impact but the realistic exploitable surface is narrow. Organizations running NLTK in isolated research environments with no external-facing corpus-reader exposure face minimal real-world risk; those with web services wrapping NLTK corpus functionality should treat this as higher priority. |
| Exploit ScenarioDerived | An attacker targeting a web application that accepts user-specified corpus queries and passes them to an NLTK FramenetCorpusReader instance submits a frame name parameter containing path traversal sequences such as '../../../etc/passwd' or a crafted index-poisoning payload to the frame_by_name endpoint. NLTK constructs a file path by concatenating the corpus root with the unsanitized selector, causing the XML parser to open and return contents of an arbitrary file readable by the application process. No public POC has been identified at time of analysis, and successful exploitation requires the application to expose these specific corpus reader methods to attacker-controlled input. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 22, 2026
Path traversal in NLTK's FramenetCorpusReader and NKJPCorpusReader (all versions before 3.10.0) enables unauthenticated network-reachable attackers to read arbitrary XML files accessible to the application process by supplying crafted selectors or poisoned index state to methods including frame_by_name, doc, lu, and header. The CVSS 4.0 score of 8.2 reflects high confidentiality impact (VC:H) tempered by high attack complexity (AC:H) and a required attack target condition (AT:P), meaning exploitation depends on application code that exposes these specific corpus reader methods to external input. No public exploit code and no CISA KEV listing have been identified at time of analysis.
RemediationAI
Upgrade NLTK to version 3.10.0 or later, which resolves the path traversal in FramenetCorpusReader and NKJPCorpusReader; the vendor advisory confirming this fix is at https://github.com/nltk/nltk/security/advisories/GHSA-568f-pv23-39p4. If an immediate upgrade is not feasible, apply the following compensating controls: first, audit all application code that instantiates FramenetCorpusReader or NKJPCorpusReader and ensure no externally-supplied string (HTTP parameter, API input, file upload) reaches the frame_by_name, doc, lu, or header methods without validation against an allowlist of known-safe corpus identifiers - this directly breaks the attack path with no functional side effects for legitimate use. Second, restrict the OS-level file permissions of the NLTK process account so it can only read the corpus root directory and explicitly required application directories, reducing the blast radius of any successful traversal. Third, consider running NLTK corpus operations in a sandboxed subprocess with a restricted filesystem view (e.g., via seccomp, containers, or chroot), which limits accessible files regardless of traversal. Note that installing the FrameNet or NKJP corpus data is a prerequisite for instantiating these readers; environments that have not downloaded these corpora are not exploitable via this vector.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
NLTK (Natural Language Toolkit) is a widely-used Python library for natural language processing tasks. The vulnerable components are FramenetCorpusReader, which reads Berkeley FrameNet lexical database data, and NKJPCorpusReader, which reads the National Corpus of Polish. CWE-73 (External Control of File Name or Path) identifies the root cause: user-supplied selector strings or poisoned index state are used to construct file system paths without adequate canonicalization or boundary enforcement, enabling traversal sequences to escape the intended corpus root directory. The affected methods - frame_by_name, doc, lu, and header - accept parameters that are used internally to locate and parse XML corpus files; when these parameters are attacker-controlled, NLTK's XML parser is directed to files entirely outside the corpus directory. The CPE string cpe:2.3:a:nltk:nltk:*:*:*:*:*:*:*:* with a version ceiling of 3.10.0 covers all prior releases.
Know when Nltk gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
AV:N for network-reachable attack path; AC:H maps from AT:P condition requiring application to expose corpus methods to attacker input; PR:N per description; C:H for arbitrary XML file read; no integrity or availability impact applies.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
NLTK versions before 3.10.0 contain a path traversal vulnerability in FramenetCorpusReader and NKJPCorpusReader that allows attackers to parse XML files outside the corpus root by supplying unsafe selectors or poisoned index state. Attackers can exploit frame_by_name, doc, lu, and header methods with crafted parameters to read arbitrary XML files accessible to the application.
Blast Radius
ecosystem impact- 6 pypi packages depend on nltk (6 direct, 0 indirect)
Ecosystem-wide dependent count for version 3.10.0.
Executive ViewAI
NLTK versions before 3.10.0 contain a path traversal vulnerability (CVE-2026-62385, CVSS 8.2) that could enable unauthorized access to XML files processed by affected applications. No public exploit identified at time of analysis. Organizations using NLTK-based NLP systems face data confidentiality risk, especially if corpus reader methods are exposed to user input; successful exploitation requires high attack complexity and specific application patterns. Patch to version 3.10.0 is available.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Arbitrary code execution in the Natural Language Toolkit (NLTK) before 3.10.3 allows attackers to bypass the library's p
Arbitrary code execution in NLTK (Natural Language Toolkit) through 3.9.4 allows attackers to run Python code when a vic
Arbitrary code execution in the NLTK (Natural Language Toolkit) Python library affects all versions through its data dow
StreamBackedCorpusView in NLTK before 3.10.0 allows arbitrary local file reads by calling Python's builtins.open() direc
Symlink-based path traversal in NLTK's FramenetCorpusReader before version 3.10.2 permits attackers with write access to
Unbounded recursion in NLTK's JSONTaggedDecoder.decode_obj() (nltk/jsontags.py) allows unauthenticated remote attackers
Path traversal and pickle deserialization protections in NLTK before 3.10.0 are effectively disabled by default - pathse
XML Entity Expansion (Billion Laughs) in NLTK before 3.10.3 allows unauthenticated remote attackers to cause denial of s
Server-side request forgery in NLTK before 3.10.3 allows unauthenticated remote attackers to reach internal HTTP service
Symlink escape in NLTK's CorpusReader.open() allows local attackers to read arbitrary files outside the designated corpu
NLTK (Natural Language Toolkit) is a suite of open source Python modules, data sets, and tutorials supporting research a
nltk is vulnerable to Inefficient Regular Expression Complexity. Rated high severity (CVSS 7.5), this vulnerability is r
EUVD-2026-64337
GHSA-568f-pv23-39p4
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB