CVE-2026-78683
Received Received - Intake

Unsafe Pickle Deserialization in NLTK

Vulnerability report for CVE-2026-78683, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-08-25

Last updated on: 2026-08-25

Assigner: VulnCheck

Description

NLTK before 3.10.0 (affected versions <=3.9.4) contains an unsafe pickle deserialization vulnerability in the TransitionParser.parse() method (nltk/parse/transitionparser.py). The method calls pickle_load() with the default restricted=False, routing deserialization through WarningUnpickler, which does not override find_class() and therefore permits arbitrary class resolution. When an application loads an attacker-crafted model file, embedded pickle gadget chains execute arbitrary Python code with the privileges of the user running the application. NLTK provides a RestrictedUnpickler for safe deserialization, but it is not used by production code paths. Fixed in 3.10.0.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-08-25
Last Modified
2026-08-25
Generated
2026-08-25
AI Q&A
2026-08-25
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 2 associated CPEs
Vendor Product Version / Range
nltk nltk to 3.9.4 (inc)
nltk nltk to 3.10.0 (exc)

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-502 The product deserializes untrusted data without sufficiently ensuring that the resulting data will be valid.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability is an unsafe pickle deserialization flaw in NLTK versions before 3.10.0. The TransitionParser.parse() method uses pickle_load() with restricted=False, allowing arbitrary class resolution through WarningUnpickler. Attackers can craft malicious model files to execute arbitrary Python code with the user's privileges when loaded.

Detection Guidance

Check NLTK version with pip show nltk. If version is <=3.9.4, the system is vulnerable. Inspect Python applications using NLTK for TransitionParser.parse() calls without restricted=True. Search for pickle file loads in codebases.

Impact Analysis

If you use an affected NLTK version, an attacker could exploit this to run malicious code on your system. This could lead to data theft, system compromise, or further network attacks, depending on your user privileges.

Compliance Impact

This vulnerability could lead to unauthorized code execution, potentially violating data confidentiality and integrity requirements in GDPR and HIPAA. Organizations may face compliance violations if exploited, resulting in legal penalties or data breaches.

Mitigation Strategies

Upgrade NLTK to version 3.10.0 or later. Replace pickle_load() with RestrictedUnpickler or set restricted=True in TransitionParser.parse() calls. Remove or validate all untrusted pickle model files.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-78683. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart