Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach NLP endpoint accepting options
-
DeliveryInject malicious JVM flag in options
-
ExploitNLTK builds java command line
-
ExecutionStanford wrapper spawns JVM with flag
-
PersistJVM loads attacker agent/native library
-
ImpactArbitrary code execution as service user
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Argument sanitization
|
| Exploitation Conditions | Exploitation requires that the target application invoke NLTK's Java-backed Stanford wrapper classes (StanfordTagger/StanfordParser/CoreNLP integrations that call |
| Impact | The published CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H, score 9.3) rates this as network-reachable, low-complexity, unauthenticated RCE, which is the theoretical ceiling. In practice the risk is materially gated by a data-flow precondition not captured by base metrics: an application must both use the deprecated |
| Exploit ScenarioDerived | An NLP web service uses NLTK's Stanford tagger and lets clients pass optional tuning flags that are forwarded into the |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 25, 2026
Argument injection in the Natural Language Toolkit (NLTK) Python library before 3.10.3 allows attackers who control the per-call options parameter of the java() helper to inject dangerous JVM flags (such as -agentpath, -javaagent, or @argfile) into invocations of the bundled Stanford NLP wrapper classes, resulting in arbitrary code execution. The flaw stems from missing validation of JVM options before they are handed to the spawned Java process. Reported by VulnCheck; no public exploit identified at time of analysis and it is not listed in CISA KEV.
RemediationAI
Upgrade NLTK to the fixed release: Vendor-released patch: 3.10.3, which adds validation of JVM options passed through the java() function. If immediate upgrade is not possible, apply compensating controls: avoid using the Stanford Java wrapper functionality entirely (the affected code path only triggers when the JVM-backed Stanford tagger/parser/CoreNLP wrappers are invoked), and never pass user-supplied or externally derived strings into the options parameter of java() or the Stanford wrapper constructors - hardcode a fixed, reviewed option set instead. Where the Java integration is not needed, ensure no Java executable is reachable on PATH for the NLTK process and/or run the process under a restricted account without permission to load native libraries, accepting that this disables Java-backed NLP features. Consult GHSA-m4rf-3fr8-xwx3 (https://github.com/nltk/nltk/security/advisories/GHSA-m4rf-3fr8-xwx3) and the VulnCheck advisory (https://www.vulncheck.com/advisories/nltk-before-jvm-argument-injection-via-per-call-options) for authoritative guidance.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
NLTK is a widely used Python natural-language-processing library. Its legacy nltk.internals.java() helper launches a JVM subprocess to drive Stanford CoreNLP/tagger/parser wrapper classes, and it accepts an options parameter that is passed through to the java command line. Because these strings are not validated or allowlisted, an attacker who influences that parameter can smuggle JVM startup flags that load native agents or Java agents at process start. This is a classic CWE-88 argument (command) injection: the trust boundary between the caller-supplied option string and the executed JVM command line is not enforced. Flags like -agentpath=/path/to/lib load an arbitrary native library, -javaagent:evil.jar loads an attacker-controlled Java agent, and @argfile expands an external file of additional arguments - any of which yields code execution in the JVM context. The single CPE, cpe:2.3:a:nltk:nltk:*:*:*:*:*:*:*:*, covers all NLTK versions prior to the fixed 3.10.3.
Know when Nltk gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
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
Network-reachable unauthenticated RCE, but AC:H because exploitation depends on the app using the legacy Stanford wrappers and routing untrusted data into the options parameter; full CIA impact via JVM code execution.
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
NLTK before 3.10.3 fails to validate JVM options passed through the per-call options parameter in the java() function, allowing attackers to inject dangerous JVM flags. Attackers can supply malicious options like -agentpath, -javaagent, or @argfile to Stanford wrapper classes to achieve arbitrary code execution.
Blast Radius
ecosystem impact- 6,216 pypi packages depend on nltk (3,092 direct, 3,205 indirect)
Ecosystem-wide dependent count for version 3.10.3.
Latest POC
1 public PoC link from github
Sign in to open the public PoC links collected for this CVE.
Executive ViewAI
NLTK versions before 3.10.3 contain a critical argument injection vulnerability in the Stanford NLP wrapper that enables arbitrary code execution when attackers control the options parameter. Organizations running NLP workloads with NLTK-particularly those processing user-supplied or external text-face immediate risk of full system compromise. No vendor patch has been released.
Implement strict input validation and sanitization for any user-controlled data passed to NLTK functions; eliminate use of java() helper with untrusted input; apply principle of least privilege and network isolation for vulnerable systems; consider temporary disablement of Stanford NLP wrapper functionality pending patch release; establish monitoring for NLTK security advisories and CISA KEV updates.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Arbitrary code execution in the Natural Language Toolkit (NLTK) before 3.10.3 allows attackers to bypass the library's p
Arbitrary code execution in NLTK (Natural Language Toolkit) through 3.9.4 allows attackers to run Python code when a vic
Arbitrary code execution in the NLTK (Natural Language Toolkit) Python library affects all versions through its data dow
StreamBackedCorpusView in NLTK before 3.10.0 allows arbitrary local file reads by calling Python's builtins.open() direc
Symlink-based path traversal in NLTK's FramenetCorpusReader before version 3.10.2 permits attackers with write access to
Unbounded recursion in NLTK's JSONTaggedDecoder.decode_obj() (nltk/jsontags.py) allows unauthenticated remote attackers
Path traversal and pickle deserialization protections in NLTK before 3.10.0 are effectively disabled by default - pathse
XML Entity Expansion (Billion Laughs) in NLTK before 3.10.3 allows unauthenticated remote attackers to cause denial of s
Server-side request forgery in NLTK before 3.10.3 allows unauthenticated remote attackers to reach internal HTTP service
Symlink escape in NLTK's CorpusReader.open() allows local attackers to read arbitrary files outside the designated corpu
Path traversal in NLTK's FramenetCorpusReader and NKJPCorpusReader (all versions before 3.10.0) enables unauthenticated
NLTK (Natural Language Toolkit) is a suite of open source Python modules, data sets, and tutorials supporting research a
EUVD-2026-65525
GHSA-3h2g-j4wp-7qqq
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB