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.
Published: 2026-08-22
Score: 8.7 High
EPSS: < 1% Very Low
KEV: No
Impact: Remote Code Execution
Action: Immediate Patch
AI Analysis

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.

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

Remediation

No vendor fix or workaround currently provided.

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

Mon, 31 Aug 2026 12:15:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

threat_severity

Important


Thu, 27 Aug 2026 17:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

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


Sat, 22 Aug 2026 13:45:00 +0000

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'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-08-27T16:24:50.539Z

Reserved: 2026-08-06T20:42:17.834Z

Link: CVE-2026-71513

cve-icon Vulnrichment

Updated: 2026-08-27T16:15:04.460Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-08-22T14:16:33.417

Modified: 2026-08-31T20:49:08.970

Link: CVE-2026-71513

cve-icon Redhat

Severity : Important

Publid Date: 2026-08-22T13:34:07Z

Links: CVE-2026-71513 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-23T15:45:04Z

Weaknesses
  • CWE-502

    Deserialization of Untrusted Data