CVE-2026-62384
PoC moderateSymlink sandbox bypass in NLTK FramenetCorpusReader enables arbitrary XML file read
CVE-2026-62384 is a new, distinct symlink-based bypass of the path-security sandbox in NLTK's FramenetCorpusReader, defeating the fix released in PR #3581 for the earlier FrameNet path-traversal issue CVE-2026-54292 (GHSA-xh95-f55m-82fw). The guard added by that fix, _reject_unsafe_path_component(), only blocks literal path separators, '..' and Windows drive prefixes and never resolves symlinks, and the affected call sites (frame_by_name(), _lu_file() and doc() in nltk/corpus/reader/framenet.py) then perform a lexical abspath() join and open the result via PathPointer.open() with no required_root check, so a separator-free symlink planted inside a FrameNet corpus subdirectory (e.g. frame/) is followed to any file outside the corpus root. An attacker who can plant a symlink in a corpus directory that the application then reads gains disclosure of the contents of XML files located outside the corpus root, since the file is parsed through XMLCorpusView and its parsed fields (such as the frame definition) are returned to the caller; CVSS 4.0 rates this 8.7 High with a network vector and confidentiality-only impact. Anyone running an unpatched nltk installation from the pip ecosystem whose code loads FrameNet data from a directory an attacker can influence is affected, while deployments that only load trusted, locally controlled NLTK data face little risk. No in-the-wild exploitation is known, the flaw is not in CISA KEV, EPSS gives roughly 0.6% odds of exploitation within 30 days (45th percentile), and a self-contained runnable proof of concept is included in the advisory.
What to do: If your applications use FramenetCorpusReader (frame_by_name(), _lu_file(), or doc()), upgrade nltk to the patched release for CVE-2026-62384 once published, since no fixed version number is stated in the available data. Until then, keep FrameNet corpus directories (frame/ and the LU and fulltext subdirectories) writable only by trusted principals, audit them for symlinks pointing outside the corpus root, and treat user-supplied corpus archives as untrusted.
| NLTK Project nltk (Natural Language Toolkit, PyPI package) - nltk.corpus.reader.framenet.FramenetCorpusReader | Unpatched releases, including builds that already contain the CVE-2026-54292 fix (PR #3581) but not the follow-up symlink fix; no affected or fixed version numb |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
NLTK versions before 3.10.2 contain a symlink-based sandbox bypass in FramenetCorpusReader that allows attackers to read arbitrary XML files outside the corpus root. Attackers can place symlinks with names containing no path separators inside the corpus subdirectory, which pass the path validation guard and are resolved to files outside the intended corpus root when accessed via frame_by_name(), _lu_file(), or doc() methods.
- Vendors
- nltk
- Products
- nltk
- Ecosystems
- pip
- Weakness
- CWE-22
- Vector
- CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/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
- GHSA
- GHSA-f833-7jw8-xwrv (high)
In the news0 stories
No ingested article mentions this CVE yet.