{"id":"CVE-2026-126299","kind":"vulnerability","aliases":["CVE-2026-126299"],"related":[],"title":"NLTK: crafted CCG lexicon input exhausts CPU and blocks worker threads","description":"NLTK before 3.10.4 contains a denial of service vulnerability in the CCG lexicon parser fromstring that allows remote attackers to exhaust CPU by supplying wide inputs. Attackers can submit lexicon text with long flat bracket bodies or operator chains, triggering quadratic string re-slicing in matchBrackets and augParseCategory that blocks worker threads.","summary":"NLTK's CCG lexicon parser fromstring takes quadratic time on long bracket bodies or operator chains in lexicon text. A remote attacker who supplies such input can exhaust CPU and block worker threads, causing denial of service.","severity":"high","cvss":8.7,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["nlp","nltk","package","python"],"not_affected_if":["ccg-unused","trusted-input-only"],"how_to_check":"- Check the installed NLTK version with `python -c \"import nltk; print(nltk.__version__)\"`\n- Look for calls to the CCG lexicon parser (`nltk.ccg` lexicon fromstring) that handle untrusted input","fix":"- NLTK `3.10.4` (fixed version stated for NLTK before 3.10.4)","status":"open","published_at":"2026-11-13T10:17:34+00:00","first_seen_at":"2026-11-13T10:47:14+00:00","triaged_at":"2026-11-13T10:50:28+00:00","updated_at":"2026-11-13T10:50:28+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-13T10:50:28Z","model":"claude-haiku-5-5","output":{"fix":"- NLTK `3.10.4` (fixed version stated for NLTK before 3.10.4)","reach":"network","title":"NLTK: crafted CCG lexicon input exhausts CPU and blocks worker threads","impact":"low","summary":"NLTK's CCG lexicon parser fromstring takes quadratic time on long bracket bodies or operator chains in lexicon text. A remote attacker who supplies such input can exhaust CPU and block worker threads, causing denial of service.","audience":"developers","category":"package","nicknames":[],"who_cares":["python","nltk","nlp"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"Remote input stalls worker threads and exhausts server CPU","analyst_note":"","how_to_check":"- Check the installed NLTK version with `python -c \"import nltk; print(nltk.__version__)\"`\n- Look for calls to the CCG lexicon parser (`nltk.ccg` lexicon fromstring) that handle untrusted input","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["trusted-input-only","ccg-unused"],"who_is_affected":"Applications that pass lexicon text from untrusted sources into NLTK's CCG lexicon parser fromstring are exposed to CPU exhaustion. Projects that only parse their own trusted lexicon files, or that do not use the CCG module, can skip it.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000736,"input_tokens":4626,"output_tokens":547,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-126299':14A,17A '-2026':13A,16A '3.10.4':61C 'allow':75C 'attack':43B,77C,85C 'augparsecategori':107C 'block':9A,52B,109C 'bodi':34B,94C 'bracket':33B,93C 'caus':55B 'ccg':3A,24B,70C 'chain':37B,97C 'contain':62C 'cpu':7A,50B,80C 'craft':2A 'cve':12A,15A 'denial':56B,64C 'exhaust':6A,49B,79C 'flat':92C 'fromstr':27B,73C 'input':5A,47B,84C 'lexicon':4A,25B,39B,71C,88C 'long':32B,91C 'matchbracket':105C 'nlp':18B 'nltk':1A,19B,22B,59C 'oper':36B,96C 'packag':20B 'parser':26B,72C 'python':21B 'quadrat':29B,99C 're':102C 're-slic':101C 'remot':42B,76C 'servic':58B,66C 'slice':103C 'string':100C 'submit':87C 'suppli':45B,82C 'take':28B 'text':40B,89C 'thread':11A,54B,111C 'time':30B 'trigger':98C 'vulner':67C 'wide':83C 'worker':10A,53B,110C","nicknames":[],"mitigations":[],"who_affected":"Applications that pass lexicon text from untrusted sources into NLTK's CCG lexicon parser fromstring are exposed to CPU exhaustion. Projects that only parse their own trusted lexicon files, or that do not use the CCG module, can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["high","nlp","nltk","package","python"],"campaign_type":null,"search_a":"'-126299':14A,17A '-2026':13A,16A 'block':9A 'ccg':3A 'cpu':7A 'craft':2A 'cve':12A,15A 'exhaust':6A 'input':5A 'lexicon':4A 'nltk':1A 'thread':11A 'worker':10A","search_b":"'attack':43B 'block':52B 'bodi':34B 'bracket':33B 'caus':55B 'ccg':24B 'chain':37B 'cpu':50B 'denial':56B 'exhaust':49B 'fromstr':27B 'input':47B 'lexicon':25B,39B 'long':32B 'nlp':18B 'nltk':19B,22B 'oper':36B 'packag':20B 'parser':26B 'python':21B 'quadrat':29B 'remot':42B 'servic':58B 'suppli':45B 'take':28B 'text':40B 'thread':54B 'time':30B 'worker':53B","search_c":"'3.10.4':61C 'allow':75C 'attack':77C,85C 'augparsecategori':107C 'block':109C 'bodi':94C 'bracket':93C 'ccg':70C 'chain':97C 'contain':62C 'cpu':80C 'denial':64C 'exhaust':79C 'flat':92C 'fromstr':73C 'input':84C 'lexicon':71C,88C 'long':91C 'matchbracket':105C 'nltk':59C 'oper':96C 'parser':72C 'quadrat':99C 're':102C 're-slic':101C 'remot':76C 'servic':66C 'slice':103C 'string':100C 'submit':87C 'suppli':82C 'text':89C 'thread':111C 'trigger':98C 'vulner':67C 'wide':83C 'worker':110C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-10-26T09:54:34+00:00","kev":null,"cvss_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","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-126299","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-126299","severity":null,"published_at":"2026-11-13T10:17:34+00:00","modified_at":"2026-11-13T10:17:34+00:00","first_seen_at":"2026-11-13T10:47:14+00:00","fetched_at":"2026-11-13T10:47:14+00:00","note":null}],"documents":[{"id":144927,"url":"https://github.com/nltk/nltk/security/advisories/GHSA-89p3-fcch-88ph","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-26T09:54:34+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":144928,"url":"https://www.vulncheck.com/advisories/nltk-before-3.10.4-quadratic-time-denial-of-service-via-ccg-lexicon-fromstring","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}