{"id":"CVE-2026-116245","kind":"vulnerability","aliases":["CVE-2026-116245"],"related":[],"title":"pgAdmin 4: any server-mode user can reach OS-account database credentials","description":"libpq looks a connection service up in the service file of the operating-system account running pgAdmin 4, and an entry there can hold a password or name a password file or client certificate. In server mode any user could set a server's Service, or a \"service\" connection parameter, to one of those entries and connect with its credentials. A PGPASSWORD or PGSERVICE variable set for that account was likewise used by libpq for every connection without a value of its own and passed on to the utilities, and pg_dumpall read a maintenance database name such as \"service=...\" as a connection string.\n\nThe fix adds the SERVER_MODE_ALLOWED_SERVICES setting, empty by default: in server mode only a listed service can be used, the servicefile parameter is refused, and PGPASSWORD and PGSERVICE are removed from pgAdmin's environment at startup. The allowlist is checked again on the final connection string, and the pg_dumpall database name is wrapped as a connection string.\n\nThis issue affects pgAdmin 4: before 9.19.","summary":"In server mode, any pgAdmin user could point a connection at a service entry in the operating-system account's libpq service file, using the credentials stored there. Environment variables PGPASSWORD and PGSERVICE set for that account were also used for every connection and passed to utilities.","severity":"high","cvss":8.2,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","pgadmin","postgresql","self-hosted"],"not_affected_if":["desktop-mode","no-service-file","pgadmin-9.19-or-later"],"how_to_check":"- Check the pgAdmin version with `pgadmin4 --version` or the installed package version; affected if before `9.19`\n- Check whether the pgAdmin 4 service account has a `~/.pg_service.conf` file or PGPASSWORD/PGSERVICE set in its environment\n- Check whether pgAdmin is running in server mode with multiple users","fix":"- pgAdmin 4: upgrade to `9.19` or later (sources state the fix is in 9.19 and later)\n- Setting `SERVER_MODE_ALLOWED_SERVICES` is empty by default; list only the services that should be usable in server mode","status":"open","published_at":"2026-10-30T20:17:04+00:00","first_seen_at":"2026-10-30T20:25:37+00:00","triaged_at":"2026-10-30T20:26:23+00:00","updated_at":"2026-10-30T20:26:23+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-30T20:26:23Z","model":"claude-haiku-5-5","output":{"fix":"- pgAdmin 4: upgrade to `9.19` or later (sources state the fix is in 9.19 and later)\n- Setting `SERVER_MODE_ALLOWED_SERVICES` is empty by default; list only the services that should be usable in server mode","reach":"network","title":"pgAdmin 4: any server-mode user can reach OS-account database credentials","impact":"medium","summary":"In server mode, any pgAdmin user could point a connection at a service entry in the operating-system account's libpq service file, using the credentials stored there. Environment variables PGPASSWORD and PGSERVICE set for that account were also used for every connection and passed to utilities.","audience":"businesses","category":"package","nicknames":[],"who_cares":["pgadmin","postgresql","self-hosted"],"confidence":0.7,"fix_status":"available","needs_auth":"yes","worst_case":"A logged-in user connects to databases using stored server credentials","analyst_note":"","how_to_check":"- Check the pgAdmin version with `pgadmin4 --version` or the installed package version; affected if before `9.19`\n- Check whether the pgAdmin 4 service account has a `~/.pg_service.conf` file or PGPASSWORD/PGSERVICE set in its environment\n- Check whether pgAdmin is running in server mode with multiple users","plain_action":"","needs_analyst":false,"not_affected_if":["desktop-mode","no-service-file","pgadmin-9.19-or-later"],"who_is_affected":"Teams running pgAdmin 4 in server mode with more than one user, where the pgAdmin operating-system account has libpq service entries or PGPASSWORD/PGSERVICE set. Single-user desktop installs or installs without service-file entries are less exposed.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000757,"input_tokens":4348,"output_tokens":645,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-116245':17A,20A '-2026':16A,19A '4':2A,93C,245C '9.19':247C 'account':12A,46B,64B,90C,144C 'add':182C 'affect':243C 'allow':186C 'allowlist':220C 'also':66B 'certif':109C 'check':222C 'client':108C 'connect':36B,70B,78C,124C,132C,152C,178C,227C,239C 'could':33B,115C 'credenti':14A,53B,135C 'cve':15A,18A 'databas':13A,171C,233C 'default':191C 'dumpal':167C,232C 'empti':189C 'entri':40B,96C,130C 'environ':56B,216C 'everi':69B,151C 'file':50B,84C,106C 'final':226C 'fix':181C 'hold':99C 'host':26B 'issu':242C 'libpq':48B,75C,149C 'likewis':146C 'list':197C 'look':76C 'mainten':170C 'mode':6A,29B,112C,185C,194C 'name':103C,172C,234C 'one':127C 'oper':44B,88C 'operating-system':43B,87C 'os':11A 'os-account':10A 'packag':21B 'paramet':125C,204C 'pass':72B,160C 'password':101C,105C 'pg':166C,231C 'pgadmin':1A,22B,31B,92C,214C,244C 'pgpassword':58B,137C,208C 'pgservic':60B,139C,210C 'point':34B 'postgresql':23B 'reach':9A 'read':168C 'refus':206C 'remov':212C 'run':91C 'self':25B 'self-host':24B 'server':5A,28B,111C,118C,184C,193C 'server-mod':4A 'servic':39B,49B,79C,83C,120C,123C,175C,187C,198C 'servicefil':203C 'set':61B,116C,141C,188C 'startup':218C 'store':54B 'string':179C,228C,240C 'system':45B,89C 'use':51B,67B,147C,201C 'user':7A,32B,114C 'util':74B,164C 'valu':155C 'variabl':57B,140C 'without':153C 'wrap':236C","nicknames":[],"mitigations":[],"who_affected":"Teams running pgAdmin 4 in server mode with more than one user, where the pgAdmin operating-system account has libpq service entries or PGPASSWORD/PGSERVICE set. Single-user desktop installs or installs without service-file entries are less exposed.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"first_public_at":"2026-10-30T20:17:04+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/SC:H/SI:H/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":"f86ef6dc-4d3a-42ad-8f28-e6d5547a5007","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-116245","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116245","severity":null,"published_at":"2026-10-30T20:17:04+00:00","modified_at":"2026-10-30T20:17:04+00:00","first_seen_at":"2026-10-30T20:25:37+00:00","fetched_at":"2026-10-30T20:25:37+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}