{"id":"CVE-2026-126296","kind":"vulnerability","aliases":["CVE-2026-126296"],"related":[],"title":"NLTK: path traversal lets callers read or overwrite files outside data roots","description":"NLTK before 3.10.4 contains a path traversal vulnerability in save_maxent_params() and load_maxent_params() that bypasses the pathsec filesystem restriction mechanism. Attackers who control the tab_dir argument can read or overwrite model parameter files outside permitted data roots, because the functions call Python's built-in open() directly.","summary":"NLTK before 3.10.4 has a path traversal flaw in save_maxent_params() and load_maxent_params() that skips its own pathsec restriction. An attacker who controls the tab_dir argument can read or overwrite model parameter files outside the permitted data directories.","severity":"medium","cvss":6.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["nltk","package","python"],"not_affected_if":["fixed-paths","no-maxent-params-use"],"how_to_check":"- Check the installed NLTK version with `pip show nltk` or `python -c \"import nltk; print(nltk.__version__)\"`.\n- Search your code for calls to `save_maxent_params` or `load_maxent_params` where the path comes from user input.","fix":"- NLTK: move to `3.10.4` or later.","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:55:24+00:00","updated_at":"2026-11-13T10:55:24+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-11-13T10:55:24Z","model":"claude-haiku-5-5","output":{"fix":"- NLTK: move to `3.10.4` or later.","reach":"unknown","title":"NLTK: path traversal lets callers read or overwrite files outside data roots","impact":"medium","summary":"NLTK before 3.10.4 has a path traversal flaw in save_maxent_params() and load_maxent_params() that skips its own pathsec restriction. An attacker who controls the tab_dir argument can read or overwrite model parameter files outside the permitted data directories.","audience":"developers","category":"package","nicknames":[],"who_cares":["python","nltk"],"confidence":0.6,"fix_status":"available","needs_auth":"unknown","worst_case":"files outside permitted data roots are read or overwritten","analyst_note":"Ask whether the vendor advisory at github.com or the vulncheck page names other affected functions.(optional)","how_to_check":"- Check the installed NLTK version with `pip show nltk` or `python -c \"import nltk; print(nltk.__version__)\"`.\n- Search your code for calls to `save_maxent_params` or `load_maxent_params` where the path comes from user input.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["fixed-paths","no-maxent-params-use"],"who_is_affected":"Applications that call NLTK's maxent parameter save or load functions with a tab_dir value that an untrusted user can influence. Code that only uses fixed, trusted paths is unlikely to be exposed. unknown whether other NLTK functions are affected.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.00074,"input_tokens":4614,"output_tokens":557,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-126296':15A,18A '-2026':14A,17A '3.10.4':24B,66C 'argument':51B,93C 'attack':45B,87C 'built':112C 'built-in':111C 'bypass':81C 'call':108C 'caller':5A 'contain':67C 'control':47B,89C 'cve':13A,16A 'data':11A,62B,103C 'dir':50B,92C 'direct':115C 'directori':63B 'file':9A,58B,100C 'filesystem':84C 'flaw':29B 'function':107C 'let':4A 'load':35B,77C 'maxent':32B,36B,74C,78C 'mechan':86C 'model':56B,98C 'nltk':1A,19B,22B,64C 'open':114C 'outsid':10A,59B,101C 'overwrit':8A,55B,97C 'packag':20B 'param':33B,37B,75C,79C 'paramet':57B,99C 'path':2A,27B,69C 'pathsec':42B,83C 'permit':61B,102C 'python':21B,109C 'read':6A,53B,95C 'restrict':43B,85C 'root':12A,104C 'save':31B,73C 'skip':39B 'tab':49B,91C 'travers':3A,28B,70C 'vulner':71C","nicknames":[],"mitigations":[],"who_affected":"Applications that call NLTK's maxent parameter save or load functions with a tab_dir value that an untrusted user can influence. Code that only uses fixed, trusted paths is unlikely to be exposed. unknown whether other NLTK functions are affected.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["medium","nltk","package","python"],"campaign_type":null,"search_a":"'-126296':15A,18A '-2026':14A,17A 'caller':5A 'cve':13A,16A 'data':11A 'file':9A 'let':4A 'nltk':1A 'outsid':10A 'overwrit':8A 'path':2A 'read':6A 'root':12A 'travers':3A","search_b":"'3.10.4':24B 'argument':51B 'attack':45B 'control':47B 'data':62B 'dir':50B 'directori':63B 'file':58B 'flaw':29B 'load':35B 'maxent':32B,36B 'model':56B 'nltk':19B,22B 'outsid':59B 'overwrit':55B 'packag':20B 'param':33B,37B 'paramet':57B 'path':27B 'pathsec':42B 'permit':61B 'python':21B 'read':53B 'restrict':43B 'save':31B 'skip':39B 'tab':49B 'travers':28B","search_c":"'3.10.4':66C 'argument':93C 'attack':87C 'built':112C 'built-in':111C 'bypass':81C 'call':108C 'contain':67C 'control':89C 'data':103C 'dir':92C 'direct':115C 'file':100C 'filesystem':84C 'function':107C 'load':77C 'maxent':74C,78C 'mechan':86C 'model':98C 'nltk':64C 'open':114C 'outsid':101C 'overwrit':97C 'param':75C,79C 'paramet':99C 'path':69C 'pathsec':83C 'permit':102C 'python':109C 'read':95C 'restrict':85C 'root':104C 'save':73C 'tab':91C 'travers':70C 'vulner':71C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-10-26T09:47:21+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/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-126296","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-126296","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":144921,"url":"https://github.com/nltk/nltk/security/advisories/GHSA-59f9-gqg8-mqpj","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-26T09:47:21+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":144922,"url":"https://www.vulncheck.com/advisories/nltk-before-3.10.4-path-traversal-via-save-maxent-params-and-load-maxent-params","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"}