{"id":"GHSA-g5wx-957h-f4wj","kind":"vulnerability","aliases":["GHSA-g5wx-957h-f4wj"],"related":[],"title":"Duplicate Advisory: Path Traversal in save_maxent_params / load_maxent_params Allow Arbitrary File READ/WRITE","description":"## Duplicate Advisory\n\nThis advisory has been withdrawn because it is a duplicate of GHSA-59f9-gqg8-mqpj. This link is maintained to preserve external references.\n\n## Original Description\n\nNLTK 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":"This advisory was withdrawn as a duplicate of GHSA-59f9-gqg8-mqpj. The original text says NLTK before 3.10.4 lets an attacker who controls the tab_dir argument read or overwrite model parameter files outside permitted directories.","severity":"medium","cvss":4.8,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"nltk","fixed":[],"affected":"< 3.10.4","ecosystem":"pypi"}],"ecosystems":["pypi"],"tags":["cwe-73","nltk","package","python"],"not_affected_if":["nltk-3.10.4-or-later","no-external-tab-dir"],"how_to_check":"- Check the installed NLTK version with `pip show nltk`\n- Look for calls to `save_maxent_params` or `load_maxent_params` in your code, where the directory path comes from outside input","fix":"- `nltk` `3.10.4` (the version the affected range is below, per the product data)","status":"withdrawn","published_at":"2026-11-13T12:31:16+00:00","first_seen_at":"2026-11-13T21:45:25+00:00","triaged_at":"2026-11-13T21:46:18+00:00","updated_at":"2026-11-13T21:46:18+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-11-13T21:46:18Z","model":"claude-haiku-5-5","output":{"fix":"- `nltk` `3.10.4` (the version the affected range is below, per the product data)","reach":"unknown","title":"NLTK: path traversal in MaxEnt save and load functions","impact":"medium","summary":"This advisory was withdrawn as a duplicate of GHSA-59f9-gqg8-mqpj. The original text says NLTK before 3.10.4 lets an attacker who controls the tab_dir argument read or overwrite model parameter files outside permitted directories.","audience":"developers","category":"package","nicknames":[],"who_cares":["python","nltk"],"confidence":0.6,"fix_status":"available","needs_auth":"unknown","worst_case":"attacker reads or overwrites model parameter files outside allowed directories","analyst_note":"","how_to_check":"- Check the installed NLTK version with `pip show nltk`\n- Look for calls to `save_maxent_params` or `load_maxent_params` in your code, where the directory path comes from outside input","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["no-external-tab-dir","nltk-3.10.4-or-later"],"who_is_affected":"Applications that use NLTK's MaxEnt parameter save or load functions with a directory path an attacker could influence. The sources do not describe other usage patterns. Teams that do not call these functions with external input are less exposed.","user_interaction":"unknown","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000731,"input_tokens":4695,"output_tokens":524,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-73':28B '3.10.4':51B,100C '59f9':42B,85C '957h':19A,24A 'advisori':2A,33B,71C,73C 'allow':12A 'arbitrari':13A 'argument':60B,127C 'attack':54B,121C 'built':146C 'built-in':145C 'bypass':115C 'call':142C 'contain':101C 'control':56B,123C 'cwe':27B 'data':137C 'descript':97C 'dir':59B,126C 'direct':149C 'directori':69B 'duplic':1A,38B,70C,81C 'extern':94C 'f4wj':20A,25A 'file':14A,66B,134C 'filesystem':118C 'function':141C 'g5wx':18A,23A 'ghsa':17A,22A,41B,84C 'ghsa-59f9-gqg8-mqpj':40B,83C 'ghsa-g5wx-957h-f4wj':16A,21A 'gqg8':43B,86C 'let':52B 'link':89C 'load':9A,111C 'maintain':91C 'maxent':7A,10A,108C,112C 'mechan':120C 'model':64B,132C 'mqpj':44B,87C 'nltk':26A,29B,49B,98C 'open':148C 'origin':46B,96C 'outsid':67B,135C 'overwrit':63B,131C 'packag':30B 'param':8A,11A,109C,113C 'paramet':65B,133C 'path':3A,103C 'pathsec':117C 'permit':68B,136C 'preserv':93C 'python':31B,143C 'read':61B,129C 'read/write':15A 'refer':95C 'restrict':119C 'root':138C 'save':6A,107C 'say':48B 'tab':58B,125C 'text':47B 'travers':4A,104C 'vulner':105C 'withdrawn':35B,76C","nicknames":[],"mitigations":[],"who_affected":"Applications that use NLTK's MaxEnt parameter save or load functions with a directory path an attacker could influence. The sources do not describe other usage patterns. Teams that do not call these functions with external input are less exposed.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":["nltk"],"ptokens":["nltk"],"labels":["cwe73","medium","nltk","package","pypi","python"],"campaign_type":null,"search_a":"'957h':19A,24A 'advisori':2A 'allow':12A 'arbitrari':13A 'duplic':1A 'f4wj':20A,25A 'file':14A 'g5wx':18A,23A 'ghsa':17A,22A 'ghsa-g5wx-957h-f4wj':16A,21A 'load':9A 'maxent':7A,10A 'nltk':26A 'param':8A,11A 'path':3A 'read/write':15A 'save':6A 'travers':4A","search_b":"'-73':28B '3.10.4':51B '59f9':42B 'advisori':33B 'argument':60B 'attack':54B 'control':56B 'cwe':27B 'dir':59B 'directori':69B 'duplic':38B 'file':66B 'ghsa':41B 'ghsa-59f9-gqg8-mqpj':40B 'gqg8':43B 'let':52B 'model':64B 'mqpj':44B 'nltk':29B,49B 'origin':46B 'outsid':67B 'overwrit':63B 'packag':30B 'paramet':65B 'permit':68B 'python':31B 'read':61B 'say':48B 'tab':58B 'text':47B 'withdrawn':35B","search_c":"'3.10.4':100C '59f9':85C 'advisori':71C,73C 'argument':127C 'attack':121C 'built':146C 'built-in':145C 'bypass':115C 'call':142C 'contain':101C 'control':123C 'data':137C 'descript':97C 'dir':126C 'direct':149C 'duplic':70C,81C 'extern':94C 'file':134C 'filesystem':118C 'function':141C 'ghsa':84C 'ghsa-59f9-gqg8-mqpj':83C 'gqg8':86C 'link':89C 'load':111C 'maintain':91C 'maxent':108C,112C 'mechan':120C 'model':132C 'mqpj':87C 'nltk':98C 'open':148C 'origin':96C 'outsid':135C 'overwrit':131C 'param':109C,113C 'paramet':133C 'path':103C 'pathsec':117C 'permit':136C 'preserv':93C 'python':143C 'read':129C 'refer':95C 'restrict':119C 'root':138C 'save':107C 'tab':125C 'travers':104C 'vulner':105C 'withdrawn':76C","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:H/PR:N/UI:N/S:U/C:N/I:L/A:L","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-g5wx-957h-f4wj","url":"https://github.com/advisories/GHSA-g5wx-957h-f4wj","severity":"medium","published_at":"2026-11-13T12:31:16+00:00","modified_at":"2026-11-13T21:42:31+00:00","first_seen_at":"2026-11-13T21:45:25+00:00","fetched_at":"2026-11-13T22:36:37+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"}