Impact
pgAdmin 4 introduced a per‑tool permission system (custom roles / role‑based tool permissions) in version 9.3, meant to enforce fine‑grained access control for features such as the Query Tool, Grant Wizard, Schema Diff, ERD, PSQL, and Debugger. The vulnerability lies in the inconsistent application of the permissions_required decorator: only a single front‑door route for each tool was protected, while all additional backend routes and Socket.IO handlers were guarded solely by authentication checks. An authenticated user who has been explicitly denied a specific tool’s permission can therefore use other routes or socket event handlers to drive that tool end‑to‑end, retrieve data, generate and execute SQL, initiate backups, and even obtain a psql session. Because the attacker already holds the database privileges required to execute the actions, the flaw does not grant new database rights but circumvents pgAdmin’s separations‑of‑duty policy. The flaw is classified as CWE‑862 (Missing Authorization) and CWE‑425 (Access Termination Without Security Checks).
Affected Systems
The issue affects pgAdmin 4 when running in SERVER mode. Versions 9.3 through 9.16 (inclusive) are vulnerable; the problem was fixed in the 9.17 release. The affected products are distributed by pgadmin.org under the pgAdmin 4 name.
Risk and Exploitability
The CVSS score of 5.3 indicates moderate severity: the flaw is limited to authenticated users with an existing valid pgAdmin session and does not lead to database‑level privilege escalation. The EPSS score being less than 1% suggests a low likelihood of exploitation in the wild. It is not listed in the CISA KEV catalog. Attackers would need to first authenticate to pgAdmin and then attempt to access the unauthorized tool; once the flaw is exploited the attacker can retrieve or modify data they would normally be able to via other channels. Overall risk is moderate but exploitation probability low.
OpenCVE Enrichment