Junglewise Threat Intelligence

NLTK FramenetCorpusReader symlink sandbox bypass

Severity: high · CVSS 7.5 · Published 2026-08-22

Executive brief

NLTK's FramenetCorpusReader is a Python library component used to process linguistic corpus data in XML format. A symlink-based vulnerability allows attackers with write access to a shared corpus directory to read arbitrary XML files outside the intended corpus root by placing specially-crafted symlinks inside the corpus subdirectory. This can lead to unauthorized disclosure of sensitive data in shared or multi-tenant environments where multiple users or processes access the same corpus.

Technical details

This is a path traversal vulnerability (CWE-22) in the FramenetCorpusReader class of NLTK. The root cause is incomplete path validation: while the code checks caller-supplied names via _reject_unsafe_path_component() to block literal slashes, backslashes, "..", and drive prefixes, it does not resolve symlinks before returning file content. The vulnerable methods (frame_by_name(), _lu_file(), doc()) perform lexical path joins via self.abspath() without symlink resolution or scoped validation checks. An attacker with write access to a shared corpus directory can place a symlink with a simple name (no separators) inside a corpus subdirectory; when the public API reads that symlink, it resolves outside the corpus root, exposing files elsewhere on the filesystem. No authentication, user interaction, or network access beyond the ability to write to the corpus directory is required. The fix is available in NLTK 3.10.2 by routing calls through the proper symlink-resolving validation function used elsewhere in the codebase.

Affected products

  • NLTK Project NLTK 3.10.0 to 3.10.1

Timeline

  • 2026-08-22: disclosed: Advisory GHSA-qq3h-cgj8-w3fx published; CVE-2026-62384 assigned
  • 2026-09-02: other: GHSA-qq3h-cgj8-w3fx withdrawn as duplicate of GHSA-f833-7jw8-xwrv
  • 2026-08-07: patched: NLTK 3.10.2 released with fix (PR #3581 follow-up)

References

Related threats