{"id":"CVE-2026-116330","kind":"vulnerability","aliases":["CVE-2026-116330"],"related":[],"title":"PostgreSQL pg_dump: crafted tar dump lets a server run code on the client","description":"Untrusted data inclusion in PostgreSQL pg_dump tar-format restore.sql allows a compromised origin server to execute arbitrary code as the client operating system account running psql, via the predictable restriction key in restore.sql.  This is a gap in the fix for CVE-2025-8714.  restore.sql is undocumented.  Versions before PostgreSQL 18.7, 17.12, 16.16, 15.20, and 14.25 are affected.","summary":"A flaw in pg_dump's tar-format restore handling lets a compromised origin server include untrusted data in restore.sql, which psql then executes. An attacker who controls the origin database can run arbitrary code as the operating system account that runs psql.","severity":"high","cvss":8.8,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"PostgreSQL","fixed":[],"affected":"","ecosystem":"runtime"}],"ecosystems":["runtime"],"tags":["pg_dump","postgresql","psql","runtime","self-hosted"],"not_affected_if":["custom-or-directory-format-dumps","no-tar-restores","trusted-origin-servers"],"how_to_check":"- Run `psql --version` and `pg_dump --version` on machines that restore tar-format dumps from other servers, and compare against the fixed versions below.\n- Look for tar-format dumps restored with `psql` from origin servers you do not fully control.","fix":"- PostgreSQL 18: move to `18.7`\n- PostgreSQL 17: move to `17.12`\n- PostgreSQL 16: move to `16.16`\n- PostgreSQL 15: move to `15.20`\n- PostgreSQL 14: move to `14.25`","status":"open","published_at":"2026-11-12T15:17:41+00:00","first_seen_at":"2026-11-12T15:41:55+00:00","triaged_at":"2026-11-12T15:43:24+00:00","updated_at":"2026-11-12T15:43:24+00:00","category":"runtime","confidence":0.6,"triage":{"at":"2026-11-12T15:43:24Z","model":"claude-haiku-5-5","output":{"fix":"- PostgreSQL 18: move to `18.7`\n- PostgreSQL 17: move to `17.12`\n- PostgreSQL 16: move to `16.16`\n- PostgreSQL 15: move to `15.20`\n- PostgreSQL 14: move to `14.25`","reach":"unknown","title":"PostgreSQL pg_dump: crafted tar dump lets a server run code on the client","impact":"high","summary":"A flaw in pg_dump's tar-format restore handling lets a compromised origin server include untrusted data in restore.sql, which psql then executes. An attacker who controls the origin database can run arbitrary code as the operating system account that runs psql.","audience":"businesses","category":"runtime","nicknames":[],"who_cares":["postgresql","pg_dump","psql","self-hosted"],"confidence":0.6,"fix_status":"available","needs_auth":"unknown","worst_case":"Code runs as the operating system account running psql.","analyst_note":"Confirm how the attacker must trigger the restore (user action in the client) and check the NVD and PostgreSQL advisory pages for the exact affected pg_dump/psql scope.","how_to_check":"- Run `psql --version` and `pg_dump --version` on machines that restore tar-format dumps from other servers, and compare against the fixed versions below.\n- Look for tar-format dumps restored with `psql` from origin servers you do not fully control.","plain_action":"","product_name":"PostgreSQL","needs_analyst":true,"not_affected_if":["custom-or-directory-format-dumps","no-tar-restores","trusted-origin-servers"],"who_is_affected":"Teams that use pg_dump in tar format and restore the output with psql, especially when the dump comes from a server they do not fully control. The flaw is in the client tooling that runs restore.sql, so a server that only runs PostgreSQL and is never used as a restore client is not directly exposed. This is a gap in the earlier fix for CVE-2025-8714.","user_interaction":"yes","product_ecosystem":"runtime","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.00083,"input_tokens":4612,"output_tokens":737,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-116330':17A,20A '-2025':118C '-2026':16A,19A '-8714':119C '14.25':131C '15.20':129C '16.16':128C '17.12':127C '18.7':126C 'account':70B,99C 'affect':133C 'allow':85C 'arbitrari':64B,92C 'attack':56B 'client':14A,96C 'code':11A,65B,93C 'compromis':43B,87C 'control':58B 'craft':4A 'cve':15A,18A,117C 'data':48B,75C 'databas':61B 'dump':3A,6A,23B,34B,80C 'execut':54B,91C 'fix':115C 'flaw':31B 'format':38B,83C 'gap':112C 'handl':40B 'host':29B 'includ':46B 'inclus':76C 'key':106C 'let':7A,41B 'oper':68B,97C 'origin':44B,60B,88C 'pg':2A,22B,33B,79C 'postgresql':1A,21A,24B,78C,125C 'predict':104C 'psql':25B,52B,73B,101C 'restor':39B 'restore.sql':50B,84C,108C,120C 'restrict':105C 'run':10A,63B,72B,100C 'runtim':26B 'self':28B 'self-host':27B 'server':9A,45B,89C 'system':69B,98C 'tar':5A,37B,82C 'tar-format':36B,81C 'undocu':122C 'untrust':47B,74C 'version':123C 'via':102C","nicknames":[],"mitigations":[],"who_affected":"Teams that use pg_dump in tar format and restore the output with psql, especially when the dump comes from a server they do not fully control. The flaw is in the client tooling that runs restore.sql, so a server that only runs PostgreSQL and is never used as a restore client is not directly exposed. This is a gap in the earlier fix for CVE-2025-8714.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":["postgresql"],"ptokens":["postgresql"],"labels":["high","pgdump","postgresql","psql","runtime","selfhosted"],"campaign_type":null,"search_a":"'-116330':17A,20A '-2026':16A,19A 'client':14A 'code':11A 'craft':4A 'cve':15A,18A 'dump':3A,6A 'let':7A 'pg':2A 'postgresql':1A,21A 'run':10A 'server':9A 'tar':5A","search_b":"'account':70B 'arbitrari':64B 'attack':56B 'code':65B 'compromis':43B 'control':58B 'data':48B 'databas':61B 'dump':23B,34B 'execut':54B 'flaw':31B 'format':38B 'handl':40B 'host':29B 'includ':46B 'let':41B 'oper':68B 'origin':44B,60B 'pg':22B,33B 'postgresql':24B 'psql':25B,52B,73B 'restor':39B 'restore.sql':50B 'run':63B,72B 'runtim':26B 'self':28B 'self-host':27B 'server':45B 'system':69B 'tar':37B 'tar-format':36B 'untrust':47B","search_c":"'-2025':118C '-8714':119C '14.25':131C '15.20':129C '16.16':128C '17.12':127C '18.7':126C 'account':99C 'affect':133C 'allow':85C 'arbitrari':92C 'client':96C 'code':93C 'compromis':87C 'cve':117C 'data':75C 'dump':80C 'execut':91C 'fix':115C 'format':83C 'gap':112C 'inclus':76C 'key':106C 'oper':97C 'origin':88C 'pg':79C 'postgresql':78C,125C 'predict':104C 'psql':101C 'restore.sql':84C,108C,120C 'restrict':105C 'run':100C 'server':89C 'system':98C 'tar':82C 'tar-format':81C 'undocu':122C 'untrust':74C 'version':123C 'via':102C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-12T15:17:41+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","cvss_by":"f86ef6dc-4d3a-42ad-8f28-e6d5547a5007","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-116330","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116330","severity":null,"published_at":"2026-11-12T15:17:41+00:00","modified_at":"2026-11-12T15:17:41+00:00","first_seen_at":"2026-11-12T15:41:55+00:00","fetched_at":"2026-11-12T15:41:55+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"}