CVE-2026-79657
PoC nicheRCE via unsafe deserialization in NLTK allowlisted pickle loaders (v3.10.0-rc2)
NLTK's allowlisted pickle loaders — introduced to replace unrestricted pickle loading with a safer mechanism — still permit arbitrary code execution because they allowlist entire module namespaces instead of exact safe globals, exposing dangerous callables such as nltk.tokenize.repp.ReppTokenizer._execute (a subprocess.Popen sink) and numpy.f2py.crackfortran.myeval (an attacker-controllable eval path) to pickle REDUCE. The flaw is triggered when an application loads an attacker-controlled tokenizer or model artifact through punkt_pickle_load() or through TransitionParser.parse(), which calls allowlisted_pickle_load with allowed_modules ('numpy', 'scipy', 'sklearn'). An attacker gains command execution on the host during unpickling, before the loader returns or before post-load type checks abort, defeating the protection mechanism the allowlist was designed to provide. Only deployments running the current v3.10.0-rc2 source tree and loading untrusted model or tokenizer artifacts through these loaders are affected; published 3.9.4 was not the claim target for this bypass. The issue is not yet patched, with no public proof-of-concept, no KEV listing, and an estimated 1.2% probability of exploitation within 30 days.
What to do: Until a patched release ships, do not load untrusted punkt tokenizer or transition-parser model artifacts through the new allowlisted loaders on the v3.10.0-rc2 source tree; load only artifacts from trusted sources and verify the loaded object's type immediately after unpickling. There is no fixed version to upgrade to yet, so monitor the NLTK 3.10 line for a fix that narrows the allowlists to exact (module, qualname) pairs.
| NLTK project (nltk/nltk) NLTK allowlisted pickle loaders (nltk.picklesec.allowlisted_pickle_load, nltk.tokenize.punkt.punkt_pickle_load, nltk.par | current source v3.10.0-rc2 (pre-release); published 3.9.4 was not the claim target; no patched version available yet |
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.3 contain a remote code execution vulnerability in allowlisted pickle loaders that trust entire module namespaces instead of specific safe callables. Attackers can craft malicious pickle payloads invoking dangerous in-namespace functions like ReppTokenizer._execute and numpy.f2py.crackfortran.myeval through pickle REDUCE to execute arbitrary commands during model or tokenizer artifact loading.
- Vendors
- nltk
- Products
- nltk
- Ecosystems
- pip
- Weakness
- CWE-502
- Vector
- CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/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-x99w-6fgc-pmfw (critical)
In the news0 stories
No ingested article mentions this CVE yet.