CVE-2025-14009: NLTK has a Zip Slip Vulnerability
A critical vulnerability exists in the NLTK downloader component of nltk/nltk, affecting all versions. The unzipiter function in nltk/downloader.py uses zipfile.extractall() without performing path validation or security checks. This allows attackers to craft malicious zip packages that, when downloaded and extracted by NLTK, can execute arbitrary code.
Published Feb 18, 2026 · Updated Jun 6, 2026
Affected packages
nltk
- Ecosystem
- PyPI
- Affected
- <= 3.9.2
- Fixed in
- 3.9.3
- Check
pip show nltk
Advisory details
From the GitHub Advisory Database (CC BY 4.0).
A critical vulnerability exists in the NLTK downloader component of nltk/nltk, affecting all versions. The _unzip_iter function in nltk/downloader.py uses zipfile.extractall() without performing path validation or security checks. This allows attackers to craft malicious zip packages that, when downloaded and extracted by NLTK, can execute arbitrary code. The vulnerability arises because NLTK assumes all downloaded packages are trusted and extracts them without validation. If a malicious package contains Python files, such as __init__.py, these files are executed automatically upon import, leading to remote code execution. This issue can result in full system compromise, including file system access, network access, and potential persistence mechanisms.
Credited to leegks, adamlaurencik.
References
- https://nvd.nist.gov/vuln/detail/CVE-2025-14009
- https://huntr.com/bounties/49ecbc02-054e-4470-b2e0-b267936cc4e4
- https://github.com/nltk/nltk/pull/3468
- https://github.com/nltk/nltk/commit/1056b323af6462455571302e766b67cf300aea18
- https://github.com/nltk/nltk/blob/4154eb85e832f266660a09286c7e37e308292284/ChangeLog#L1
- https://github.com/pypa/advisory-database/tree/main/vulns/nltk/PYSEC-2026-96.yaml
- https://github.com/advisories/GHSA-7p94-766c-hgjp
How this page is made: the data panel comes from the GitHub Advisory Database, CISA’s KEV catalog, the NVD and FIRST EPSS, and updates twice a day. No analysis has been written for this entry yet. Methodology
More PyPI vulnerabilities
All PyPI entriesCVE-2026-78683
NLTK: Unsafe Pickle Deserialization in TransitionParser Allows Remote Code Execution
critical9.4Sep 8, 2026CVE-2026-79657
NLTK: Allowlisted pickle loaders still permit code execution in current source
critical9.3Sep 8, 2026CVE-2026-79675
NLTK: JVM argument injection bypass via per-call options in the NLTK Stanford wrappers (incomplete fix of CVE-2026-12841)
critical9.8Sep 1, 2026
