Gptline: NLTK: Unsafe Pickle Deserialization in TransitionParser Allows Remote Code Execution (CVE-2026-78683)
Description
The NLTK library's TransitionParser.parse() method insecurely deserializes model files using pickle without restricting class resolution, allowing remote code execution (RCE) via malicious pickle files. Although NLTK provides a RestrictedUnpickler for safe deserialization, it is not used in production code paths, leaving versions up to 3.9.4 vulnerable. This vulnerability enables attackers to execute arbitrary code with the privileges of the user running the application. The issue is fixed in NLTK version 3.10.0 and later by enforcing restricted unpickling.
CVSS v4.0
Affected software
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
NLTK's TransitionParser.parse() method calls pickle_load() with the default parameter restricted=False, which uses WarningUnpickler that does not override find_class(), allowing arbitrary class/function resolution during unpickling. This enables remote code execution through crafted pickle files containing malicious payloads. The library includes a RestrictedUnpickler class designed to block unsafe deserialization, but this safe path is never invoked in production. Versions up to 3.9.4 are affected, with the vulnerability fixed in 3.10.0 by switching to restricted=True in all pickle_load calls within parsing modules.
Potential Impact
An attacker who can supply a malicious pickle file to the TransitionParser.parse() method can achieve remote code execution with the privileges of the user running the NLTK-dependent application. This affects researchers, data scientists, and automated ML pipelines using NLTK for parsing tasks. The vulnerability allows arbitrary Python code execution during model deserialization, posing a critical security risk.
Mitigation Recommendations
A patch is available and should be applied. The fix involves changing all pickle_load() calls in NLTK parsing modules to use restricted=True, which invokes RestrictedUnpickler and blocks unsafe deserialization. Users should upgrade to NLTK version 3.10.0 or later where this fix is implemented. No additional mitigations are required if the patched version is used.
Technical Details
- Gcve Source
- db.gcve.eu
- Osv Id
- GHSA-gx65-c5hj-vpv5
- Osv Schema Version
- 1.4.0
- Aliases
- ["CVE-2026-78683"]
- Database Specific Severity
- CRITICAL
- Cvss Version
- 3.1
Threat ID: 6a8d9aeeacd9273b493e19c3
Added to database: 08/25/2026, 13:38:54 UTC
Last enriched: 09/18/2026, 02:16:40 UTC
Last updated: 10/09/2026, 18:48:23 UTC
Views: 92
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.