ZeroHour

CVE-2026-66393

PoC mass

Unbounded recursion DoS in NLTK JSONTaggedDecoder

CVSS 4.0
8.7 high
EPSS
<1%p30
Published
()
Modified
AI analysis

NLTK (the Natural Language Toolkit) versions before 3.9.4 contain an unbounded recursion flaw (CWE-674) in the JSONTaggedDecoder.decode_obj() function. An attacker who can control JSON input reaching this decoder, for example an application, API, or service that deserializes NLTK tagged JSON from untrusted clients, can submit a deeply nested JSON structure that exceeds Python's recursion limit and triggers an unhandled RecursionError. The result is denial of service: the Python process crashes, with the CVSS 4.0 score of 8.7 (high) reflecting high availability impact and no confidentiality or integrity impact. Any environment running an affected NLTK version in which JSONTaggedDecoder processes attacker-controlled input is affected, while uses of NLTK that never invoke this decoder are not practically exposed. There are no confirmed reports of exploitation in the wild; a public proof of concept is documented in the vendor advisory (GHSA-rf74-v2fm-23pw), the flaw is not in CISA KEV, and EPSS estimates only a 0.4% probability of exploitation within 30 days.

What to do: Upgrade to NLTK 3.9.4 or later. Until patched, identify any services that pass untrusted JSON to NLTK's JSONTaggedDecoder, enforce a nesting-depth or input-size limit on such JSON before decoding, and monitor worker processes for RecursionError crashes. Since no in-the-wild exploitation is reported and EPSS is low, patching on a normal cycle is reasonable, prioritizing internet-facing services that decode client-supplied JSON.

Affected
nltk (Natural Language Toolkit)All versions before 3.9.4 (< 3.9.4)
Estimated exposure
massmillions of NLTK installations (roughly 25-30 million monthly PyPI downloads); the subset actually decoding untrusted JSON via JSONTaggedDecoder is smaller and… — NLTK is among the most widely installed Python NLP libraries, with tens of millions of PyPI downloads per month implying millions of deployments, but the vulnerable JSONTaggedDecoder path is only reachable where applications deserialize…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

NLTK versions before 3.9.4 contain an unbounded recursion vulnerability in JSONTaggedDecoder.decode_obj() that allows attackers to cause denial of service by supplying deeply nested JSON structures. Attackers can craft JSON payloads exceeding the recursion limit to trigger an unhandled RecursionError that crashes the Python process.

Vendors
nltk
Products
nltk
Weakness
CWE-674
Vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

In the news

No ingested article mentions this CVE yet.