{"id":"CVE-2026-116248","kind":"vulnerability","aliases":["CVE-2026-116248"],"related":[],"title":"pgAdmin: non-admin users can share servers, leaking database passwords","description":"In pgAdmin 4 server mode only administrators are meant to share a server with all users; the server dialog shows the Shared switch only to them. The create and update endpoints of the server API, however, stored the \"shared\" flag and shared username they were sent, so any user able to register a server could share one with every other user. The servers.json import had a similar gap: a non-administrator's \"Shared\" entries were removed only after validation, so a file that also held an invalid entry could create a shared server.\n\nA shared server carries no credentials, so this gives no direct access. It lets a user plant a server, named to look trusted, in every other user's tree and pointing at a host the user controls; anyone who then connects to it presents their own database password to that host.\n\nThe fix refuses a non-administrator's request that would share a server with HTTP 403, prunes a non-administrator's shared entries from a servers.json import before validating it, and warns at startup about servers shared earlier by non-administrators.\n\nThis issue affects pgAdmin 4: before 9.19.","summary":"In pgAdmin 4 server mode, a non-administrator can mark a server as shared with all users through the API, even though only administrators are meant to do that. A planted server pointing at a host the attacker controls can then capture the database passwords other users send when they connect to it.","severity":"medium","cvss":6.8,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","pgadmin","postgresql","self-hosted","server-mode"],"not_affected_if":["desktop-mode","only-administrators","single-user"],"how_to_check":"- Check the pgAdmin 4 version with `pip show pgadmin4` or the version shown in the pgAdmin About dialog; versions before `9.19` are affected.\n- Look for servers marked shared in the pgAdmin server list that a non-administrator created, and review the host each one points to.","fix":"- pgAdmin 4: `9.19` or later (the sources state the fix is in 9.19 and later).","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:46+00:00","updated_at":"2026-10-30T20:26:46+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-30T20:26:46Z","model":"claude-haiku-5-5","output":{"fix":"- pgAdmin 4: `9.19` or later (the sources state the fix is in 9.19 and later).","reach":"network","title":"pgAdmin: non-admin users can share servers, leaking database passwords","impact":"medium","summary":"In pgAdmin 4 server mode, a non-administrator can mark a server as shared with all users through the API, even though only administrators are meant to do that. A planted server pointing at a host the attacker controls can then capture the database passwords other users send when they connect to it.","audience":"businesses","category":"package","nicknames":[],"who_cares":["pgadmin","postgresql","self-hosted","server-mode"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"Database passwords sent to an attacker-controlled host by other users","analyst_note":"","how_to_check":"- Check the pgAdmin 4 version with `pip show pgadmin4` or the version shown in the pgAdmin About dialog; versions before `9.19` are affected.\n- Look for servers marked shared in the pgAdmin server list that a non-administrator created, and review the host each one points to.\n- unknown","plain_action":"","needs_analyst":false,"not_affected_if":["desktop-mode","single-user","only-administrators"],"who_is_affected":"Teams that run pgAdmin 4 in server mode with more than one non-administrator user. Desktop or single-user installs with only administrators are not exposed to the sharing path. A shared server carries no credentials itself, so the risk is a planted server that captures passwords typed by users who connect to it.","user_interaction":"yes","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000723,"input_tokens":4345,"output_tokens":578,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-116248':14A,17A '-2026':13A,16A '4':29B,81C,272C '403':240C '9.19':274C 'abl':128C 'access':184C 'admin':4A 'administr':35B,51B,85C,150C,230C,245C,267C 'affect':270C 'also':163C 'anyon':210C 'api':47B,113C 'attack':65B 'captur':69B 'carri':176C 'connect':78B,213C 'control':66B,209C 'could':133C,168C 'creat':106C,169C 'credenti':178C 'cve':12A,15A 'databas':10A,71B,219C 'dialog':97C 'direct':183C 'earlier':263C 'endpoint':109C 'entri':153C,167C,248C 'even':48B 'everi':137C,197C 'file':161C 'fix':225C 'flag':118C 'gap':146C 'give':181C 'held':164C 'host':23B,63B,206C,223C 'howev':114C 'http':239C 'import':142C,252C 'invalid':166C 'issu':269C 'leak':9A 'let':186C 'look':194C 'mark':37B 'meant':53B,87C 'mode':26B,31B,83C 'name':192C 'non':3A,34B,149C,229C,244C,266C 'non-admin':2A 'non-administr':33B,148C,228C,243C,265C 'one':135C 'packag':18B 'password':11A,72B,220C 'pgadmin':1A,19B,28B,80C,271C 'plant':58B,189C 'point':60B,203C 'postgresql':20B 'present':216C 'prune':241C 'refus':226C 'regist':130C 'remov':155C 'request':232C 'self':22B 'self-host':21B 'send':75B 'sent':124C 'server':8A,25B,30B,39B,59B,82C,91C,96C,112C,132C,172C,175C,191C,237C,261C 'server-mod':24B 'servers.json':141C,251C 'share':7A,41B,89C,100C,117C,120C,134C,152C,171C,174C,235C,247C,262C 'show':98C 'similar':145C 'startup':259C 'store':115C 'switch':101C 'though':49B 'tree':201C 'trust':195C 'updat':108C 'user':5A,44B,74B,94C,127C,139C,188C,199C,208C 'usernam':121C 'valid':158C,254C 'warn':257C 'would':234C","nicknames":[],"mitigations":[],"who_affected":"Teams that run pgAdmin 4 in server mode with more than one non-administrator user. Desktop or single-user installs with only administrators are not exposed to the sharing path. A shared server carries no credentials itself, so the risk is a planted server that captures passwords typed by users who connect to it.","tier":"C","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:L/AT:N/PR:L/UI:A/VC:N/VI:L/VA:N/SC:H/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":"f86ef6dc-4d3a-42ad-8f28-e6d5547a5007","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-116248","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116248","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"}