{"id":"GHSA-qvhx-rvgc-jhwf","kind":"vulnerability","aliases":["GHSA-qvhx-rvgc-jhwf"],"related":[],"title":"Duplicate Advisory: Quadratic-time CPU denial of service in ConllCorpusReader SRL instance builder via nested span rescan","description":"## Duplicate Advisory\n\nThis advisory has been withdrawn because it is a duplicate of GHSA-v8f3-6phw-6mh9. This link is maintained to preserve external references.\n\n## Original Description\nNLTK before 3.10.4 contains a quadratic-time denial of service vulnerability in ConllCorpusReader._get_srl_instances that allows remote attackers to exhaust CPU through nested span rescans. Attackers can supply a crafted CoNLL SRL corpus with many predicates and span columns, placing the head span last, to pin a core for minutes.","summary":"NLTK before 3.10.4 has a quadratic-time flaw in the CoNLL SRL corpus reader, which runs when a corpus file is parsed. A crafted corpus with many predicates and span columns makes the process burn CPU for minutes, a denial of service.","severity":"high","cvss":7.5,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"nltk","fixed":[],"affected":"< 3.10.4","ecosystem":"pypi"}],"ecosystems":["pypi"],"tags":["cwe-400","nlp","nltk","package","python"],"not_affected_if":["srl-reader-unused","trusted-input-only"],"how_to_check":"- Check the installed NLTK version with `pip show nltk`\n- Look for `ConllCorpusReader` or `srl_instances` calls in code that parses CoNLL SRL files from untrusted input","fix":"- `nltk` fixed in `3.10.4`\n- This advisory is withdrawn as a duplicate of GHSA-v8f3-6phw-6mh9; check that advisory for the same fixed version","status":"withdrawn","published_at":"2026-11-13T12:31:16+00:00","first_seen_at":"2026-11-14T00:08:54+00:00","triaged_at":"2026-11-14T00:10:24+00:00","updated_at":"2026-11-14T00:10:24+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-11-14T00:10:24Z","model":"claude-haiku-5-5","output":{"fix":"- `nltk` fixed in `3.10.4`\n- This advisory is withdrawn as a duplicate of GHSA-v8f3-6phw-6mh9; check that advisory for the same fixed version","reach":"network","title":"NLTK: crafted CoNLL SRL corpus pins a CPU core for minutes","impact":"low","summary":"NLTK before 3.10.4 has a quadratic-time flaw in the CoNLL SRL corpus reader, which runs when a corpus file is parsed. A crafted corpus with many predicates and span columns makes the process burn CPU for minutes, a denial of service.","audience":"developers","category":"package","nicknames":[],"who_cares":["python","nltk","nlp"],"confidence":0.6,"fix_status":"available","needs_auth":"unknown","worst_case":"Service process pins a CPU core for minutes; denial of service","analyst_note":"","how_to_check":"- Check the installed NLTK version with `pip show nltk`\n- Look for `ConllCorpusReader` or `srl_instances` calls in code that parses CoNLL SRL files from untrusted input","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["trusted-input-only","srl-reader-unused"],"who_is_affected":"Only code that uses NLTK's ConllCorpusReader to parse CoNLL SRL corpora supplied by outside parties is exposed. Services that only process trusted local corpora or never call this reader can skip it.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000746,"input_tokens":4705,"output_tokens":551,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-400':31B '3.10.4':38B,109C '6mh9':96C '6phw':95C 'advisori':2A,80C,82C 'allow':122C 'attack':124C,132C 'builder':14A 'burn':71B 'column':67B,145C 'conll':47B,137C 'conllcorpusread':11A 'conllcorpusreader._get_srl_instances':120C 'contain':110C 'core':154C 'corpus':49B,55B,61B,139C 'cpu':6A,72B,127C 'craft':60B,136C 'cwe':30B 'denial':7A,76B,115C 'descript':106C 'duplic':1A,79C,90C 'exhaust':126C 'extern':103C 'file':56B 'flaw':44B 'ghsa':20A,25A,93C 'ghsa-qvhx-rvgc-jhwf':19A,24A 'ghsa-v8f3-6phw-6mh9':92C 'head':148C 'instanc':13A 'jhwf':23A,28A 'last':150C 'link':98C 'maintain':100C 'make':68B 'mani':63B,141C 'minut':74B,156C 'nest':16A,129C 'nlp':32B 'nltk':29A,33B,36B,107C 'origin':105C 'packag':34B 'pars':58B 'pin':152C 'place':146C 'predic':64B,142C 'preserv':102C 'process':70B 'python':35B 'quadrat':4A,42B,113C 'quadratic-tim':3A,41B,112C 'qvhx':21A,26A 'reader':50B 'refer':104C 'remot':123C 'rescan':18A,131C 'run':52B 'rvgc':22A,27A 'servic':9A,78B,117C 'span':17A,66B,130C,144C,149C 'srl':12A,48B,138C 'suppli':134C 'time':5A,43B,114C 'v8f3':94C 'via':15A 'vulner':118C 'withdrawn':85C","nicknames":[],"mitigations":[],"who_affected":"Only code that uses NLTK's ConllCorpusReader to parse CoNLL SRL corpora supplied by outside parties is exposed. Services that only process trusted local corpora or never call this reader can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":["nltk"],"ptokens":["nltk"],"labels":["cwe400","high","nlp","nltk","package","pypi","python"],"campaign_type":null,"search_a":"'advisori':2A 'builder':14A 'conllcorpusread':11A 'cpu':6A 'denial':7A 'duplic':1A 'ghsa':20A,25A 'ghsa-qvhx-rvgc-jhwf':19A,24A 'instanc':13A 'jhwf':23A,28A 'nest':16A 'nltk':29A 'quadrat':4A 'quadratic-tim':3A 'qvhx':21A,26A 'rescan':18A 'rvgc':22A,27A 'servic':9A 'span':17A 'srl':12A 'time':5A 'via':15A","search_b":"'-400':31B '3.10.4':38B 'burn':71B 'column':67B 'conll':47B 'corpus':49B,55B,61B 'cpu':72B 'craft':60B 'cwe':30B 'denial':76B 'file':56B 'flaw':44B 'make':68B 'mani':63B 'minut':74B 'nlp':32B 'nltk':33B,36B 'packag':34B 'pars':58B 'predic':64B 'process':70B 'python':35B 'quadrat':42B 'quadratic-tim':41B 'reader':50B 'run':52B 'servic':78B 'span':66B 'srl':48B 'time':43B","search_c":"'3.10.4':109C '6mh9':96C '6phw':95C 'advisori':80C,82C 'allow':122C 'attack':124C,132C 'column':145C 'conll':137C 'conllcorpusreader._get_srl_instances':120C 'contain':110C 'core':154C 'corpus':139C 'cpu':127C 'craft':136C 'denial':115C 'descript':106C 'duplic':79C,90C 'exhaust':126C 'extern':103C 'ghsa':93C 'ghsa-v8f3-6phw-6mh9':92C 'head':148C 'last':150C 'link':98C 'maintain':100C 'mani':141C 'minut':156C 'nest':129C 'nltk':107C 'origin':105C 'pin':152C 'place':146C 'predic':142C 'preserv':102C 'quadrat':113C 'quadratic-tim':112C 'refer':104C 'remot':123C 'rescan':131C 'servic':117C 'span':130C,144C,149C 'srl':138C 'suppli':134C 'time':114C 'v8f3':94C 'vulner':118C 'withdrawn':85C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-13T12:31:16+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-qvhx-rvgc-jhwf","url":"https://github.com/advisories/GHSA-qvhx-rvgc-jhwf","severity":"high","published_at":"2026-11-13T12:31:16+00:00","modified_at":"2026-11-14T00:04:16+00:00","first_seen_at":"2026-11-14T00:08:54+00:00","fetched_at":"2026-11-14T00:08:54+00:00","note":null}],"documents":[],"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"}