Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify application endpoint accepting feature structure input
-
DeliveryCraft payload with deeply nested brackets
-
ExploitSubmit payload over network without authentication
-
ExecutionFeatStructReader recurses without depth check
-
PersistPython recursion limit exceeded
-
ImpactUnhandled RecursionError crashes application
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Recursion depth limits
|
| Exploitation Conditions | Exploitation requires that the target application passes user-controlled input directly to |
| Impact | The CVSS 4.0 base score of 6.9 reflects network reachability with no authentication, complexity, or user-interaction barrier, but constrains impact to low vulnerable-system availability (VA:L) with no confidentiality or integrity effect (VC:N/VI:N) and no subsequent-system impact (SC:N/SI:N/SA:N). This scoring is consistent with a purely application-level crash that does not escalate privileges or expose data. No EPSS score was provided in the input data, so exploitation probability cannot be quantified numerically. The absence of a CISA KEV listing and the lack of identified public exploit code further support treating this as a lower-urgency issue compared to actively weaponized CVEs. Real-world exploitability is conditional: only applications that expose NLTK feature-structure parsing to untrusted external input are reachable, which limits the realistic attacker population considerably. The vulnerability is trivially exploitable once the attack surface is confirmed - crafting a deeply nested payload requires no special knowledge - but finding and targeting vulnerable deployments requires identifying NLP-specific endpoints, reducing opportunistic risk. Overall, this warrants prompt patching in any deployment that accepts external feature grammar input, but does not require emergency incident response for offline or authenticated-only pipelines. |
| Exploit ScenarioDerived | An attacker submits a crafted string such as |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 27, 2026
Uncontrolled recursion in NLTK's FeatStructReader component (all versions before 3.10.3) enables unauthenticated remote attackers to crash any Python application that parses user-supplied feature structures or feature grammars. Attackers submit trivially crafted payloads containing deeply nested brackets, exhausting Python's call stack and raising an unhandled RecursionError that terminates the application process. No active exploitation has been confirmed by CISA KEV, and no public exploit code has been identified at time of analysis; a vendor patch is available in NLTK 3.10.3.
RemediationAI
The primary fix is to upgrade NLTK to version 3.10.3 or later, as confirmed by the vendor advisory at https://github.com/nltk/nltk/security/advisories/GHSA-cw6x-m8jw-qmrh. Install the patched version via pip: pip install --upgrade nltk>=3.10.3. If an immediate upgrade is not feasible, a compensating control is to reject or pre-validate user-supplied feature-structure input before passing it to FeatStructReader - specifically by enforcing a maximum nesting depth (e.g., counting bracket depth and rejecting input exceeding a safe threshold such as 20 levels) before parsing. Alternatively, wrapping FeatStructReader calls in a try/except block to catch RecursionError prevents application crashes but does not fix the root cause and may mask other recursion-related failures. Disabling user-supplied feature grammar parsing entirely is the most effective workaround where the feature is not required. No side effects of upgrading to 3.10.3 are noted in available references.
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 (Natural Language Toolkit) is a widely used Python library for computational linguistics and NLP tasks. The vulnerable component, nltk.featstruct.FeatStructReader, is responsible for parsing feature structures - typed attribute-value matrices used in unification grammars and formal linguistics. The root cause is CWE-674 (Uncontrolled Recursion): the parser does not enforce a maximum nesting depth on input, so adversarially deep bracket nesting drives recursive calls beyond Python's default stack limit (typically 1000 frames), raising an unhandled RecursionError. The affected CPE is cpe:2.3:a:nltk:nltk:*:*:*:*:*:*:*:* covering all NLTK releases prior to 3.10.3 across all platforms where Python runs.
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:N/VI:N/VA:L/SC:N/SI:N/SA:N
Network-reachable with no authentication or user interaction; impact is limited to low application availability - no confidentiality, integrity, or scope-change effect applies.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
NLTK before 3.10.3 contains an uncontrolled recursion vulnerability in nltk.featstruct.FeatStructReader that allows unauthenticated attackers to cause a denial of service by supplying deeply nested feature-structure input. Attackers can craft trivial payloads with nested brackets that exceed Python's recursion limit and raise an unhandled RecursionError, crashing applications that parse user-supplied feature structures or feature grammars.
Blast Radius
ecosystem impact- 6,223 pypi packages depend on nltk (3,096 direct, 3,208 indirect)
Ecosystem-wide dependent count for version 3.10.3.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
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-67074
GHSA-cw6x-m8jw-qmrh
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB