CVE-2026-71513

NLTK 3.10.0 through 3.10.2 Remote Code Execution via AllowlistUnpickler Dotted-Name Bypass

Published Aug 22, 2026 CVSS 4.0 · 8.7 High EPSS 1.1% KEV · Not listed
Description
NLTK before 3.10.3 contains a remote code execution vulnerability in AllowlistUnpickler that validates only the pickle module string and not the global name, allowing attackers to resolve dotted names by attribute traversal to callables outside the allowlisted namespace. Attackers can craft untrusted transition-parser models that execute arbitrary commands when TransitionParser.parse loads the model through allowlisted_pickle_load.

Analysis

AI-generated

Technical impact

NLTK releases 3.10.0 through 3.10.2 contain a flaw in AllowlistUnpickler that verifies only the pickle module string but not the global name. This allows an attacker to craft a pickle that traverses attributes to resolve a callable outside the allowlisted namespace. When the vulnerable TransitionParser.parse function loads the malicious pickle via allowlisted_pickle_load, the code contained in the model is executed, giving the attacker arbitrary command execution on the host. The weakness is a classic insecure deserialization issue, classified as CWE‑502.

Affected Systems

Any installation of the NLTK library running versions 3.10.0, 3.10.1 or 3.10.2 is vulnerable. Systems that use TransitionParser.parse to load transition‑parser models from untrusted sources or that provide third‑party pickle files to the application are affected.

Risk and Exploitability

The CVSS score of 8.7 indicates high severity, while the EPSS score of 1% points to a low but nonzero likelihood of exploitation in the wild. The vulnerability is not listed in CISA KEV. Based on the description, the likely attack vector is remote: a malicious actor must be able to supply or modify a pickle file that the application will load via TransitionParser.parse. If that requirement can be met, the allowlist bypass can be exploited to execute arbitrary code without additional privileges.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade NLTK to version 3.10.3 or later, which removes the allowlist unpickling flaw.
  • If an immediate upgrade is not possible, refrain from loading transition‑parser models from untrusted sources and avoid calling TransitionParser.parse on any content obtained from external parties.
  • Restrict write access to the directory that stores pickle model files so that only trusted users can create or modify them. Consider removing the vulnerable NLTK package entirely and reinstalling the patched version.

Generated by OpenCVE AI on August 23, 2026 at 15:37 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-5gh2-94qg-qppq NLTK AllowlistUnpickler dotted-name validation bypass allows remote code execution
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description NLTK before 3.10.3 contains a remote code execution vulnerability in AllowlistUnpickler that validates only the pickle module string and not the global name, allowing attackers to resolve dotted names by attribute traversal to callables outside the allowlisted namespace. Attackers can craft untrusted transition-parser models that execute arbitrary commands when TransitionParser.parse loads the model through allowlisted_pickle_load.
Title NLTK 3.10.0 through 3.10.2 Remote Code Execution via AllowlistUnpickler Dotted-Name Bypass
First Time appeared Nltk
Nltk nltk
Weaknesses CWE-502
CPEs cpe:2.3:a:nltk:nltk:*:*:*:*:*:*:*:*
Vendors & Products Nltk
Nltk nltk
References
Metrics cvssV3_1

{'score': 8.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H'}

cvssV4_0

{'score': 8.7, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N'}

Weaknesses
  • CWE-502

    Deserialization of Untrusted Data

Sources

Status
PUBLISHED
Assigner
VulnCheck
Published
Updated
Aug 27, 2026, 4:24 PM
Reserved
Aug 6, 2026, 8:42 PM
Status
Analyzed
Published
Aug 22, 2026, 2:16 PM
Modified
Oct 14, 2026, 7:10 PM
Severity
Important
Public date
Aug 22, 2026, 1:34 PM