CVE-2026-116239

HighCVSS 8.8/10Last modified Nov 6, 2026

Description

In server mode pgAdmin 4 keeps an account per authentication source, so the same username can exist as, for example, an internal account and an LDAP account. After LDAP or Kerberos authenticated a user, pgAdmin chose the account to log in by username alone, or took the account Flask-Security's login form had looked up, without checking that it came from the source that authenticated the user. The session therefore belonged to another account, with its role, its servers and its saved database passwords:

- An LDAP or Kerberos user whose username matched an internal account was logged in as that internal account, including the administrator account created when pgAdmin is first set up. - With internal authentication listed before LDAP or Kerberos in AUTHENTICATION_SOURCES, the login form's internal validation looks up the account whose email was typed and keeps it even though its password does not match. A Kerberos user could type another Kerberos user's principal and be logged in as that user, and an LDAP user could do the same with an LDAP account whose email is their username.

Exploitation requires valid credentials for an LDAP directory or Kerberos realm that pgAdmin is configured to use.

The fix looks the account up by the authenticated username and the source that authenticated it, and no longer uses the account the login form found for any source but internal authentication. Internal authentication logs in that account only if it is an internal account. Desktop mode is not affected.

This issue affects pgAdmin 4: before 9.19.

Metrics

CVSS 3.1 8.8/10CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Weakness enumeration

Affected software

VendorProductVersions
pgadmin.orgpgAdmin 4< 9.19

References

Timeline

Published
Oct 30, 2026
Last modified
Nov 6, 2026
NVD status
Analyzed

Related CVEs from 2026

CVE-2026-116249.4The Model Context Protocol has a security warning advising servers to validate the "Origin" header on all incoming connections to prevent DNCVE-2026-1162406.5In server mode pgAdmin 4 validates a path into the user's storage directory with check_access_permission(), which builds the absolute path wCVE-2026-1162418.8pgAdmin 4's Import/Export Data tool wraps a user's query export in a psql \copy (...) TO command and checks that the query's parentheses areCVE-2026-1162429.6pgAdmin 4 opens SSH tunnels with the sshtunnel library but gave it neither host_pkey_directories nor ssh_config_file, so it always loaded thCVE-2026-1162438.8pgAdmin 4 runs pg_dump, pg_restore, pg_dumpall and psql from the binary path a user sets in their preferences. In server mode the binary patCVE-2026-1162449.6When a pgAdmin 4 connection was not meant to use a Kerberos user's delegated credentials, pgAdmin removed KRB5CCNAME from its environment, sCVE-2026-1162459.6libpq looks a connection service up in the service file of the operating-system account running pgAdmin 4, and an entry there can hold a pasCVE-2026-1162467.6To pass a server's password to psql and to the utilities pgAdmin 4 runs as background processes, the server manager wrote it into pgAdmin's CVE-2026-1162479.6When a server in pgAdmin 4 had no password file, client certificate or client key configured, or the configured one could not be found, pgAdCVE-2026-1162486.8In pgAdmin 4 server mode only administrators are meant to share a server with all users; the server dialog shows the Shared switch only to tCVE-2026-1162499.6In server mode pgAdmin 4 resolves a server's password file, SSL certificate, key, CRL and SSH tunnel identity file relative to the user's stCVE-2026-116257.5Bytes::Random::Secure versions through 0.29 for Perl share internal state across forked processes. When an object is initialised before for
CVE-2026-116239: High severity, CVSS 8.8 | Vulnix