CVE-2026-17348

pgAdmin 4: Missing authentication decorator on Constraints, preferences, Debugger and Schema Diff routes allows unauthenticated access in SERVER mode (incomplete fix for CVE-2026-12046)

Published Jul 31, 2026 CVSS 4.0 · 6.9 Medium EPSS < 1% KEV · Not listed
Description
In SERVER mode, pgAdmin 4 enforces authentication per route via the @pga_login_required decorator; the application's before_request hook only handles desktop-mode auto-login and the Kerberos/Webserver-auth redirect, so any route shipped without the decorator is reachable without authentication (CWE-306). This is the same defect class previously fixed as CVE-2026-12046 (the sqleditor close/update_connection routes).

A follow-up sweep, prompted by a report describing an incomplete fix for CVE-2026-12046, found further routes missing @pga_login_required: the Constraints blueprint's nodes and proplist (object listing) routes and its delete route (a state-mutating DELETE that removes table constraints); preferences.get_all_cli (GET, discloses all CLI-settable preference values); debugger.close (DELETE); and schema_diff.close (DELETE). An unauthenticated network client could therefore enumerate constraint metadata, delete table constraints, read preference values, and force-close debugger or schema-diff sessions belonging to other users, without ever authenticating.

Fix adds the missing @pga_login_required decorator (and the corresponding import to the Constraints module) to each of these routes. The change is decorator-only; no behavioral changes to the underlying handlers.

This issue affects pgAdmin 4 in SERVER mode: the Constraints and Debugger routes from 1.0, the Schema Diff close route from 4.18, and preferences.get_all_cli from 8.2, all before 9.17.

Analysis

AI-generated

Technical impact

pgAdmin 4 in SERVER mode mistakenly exposes several REST endpoints without requiring the @pga_login_required decorator, allowing any network user to reach these routes. The affected endpoints let an unauthenticated client enumerate table constraints, delete constraints, read command‑line preference values, and abruptly terminate active debugger or schema‑diff sessions. As a result, an attacker can modify database schema metadata, leak configuration data, and disrupt user sessions without providing credentials, effectively gaining unauthorized control over those privileged operations.

Affected Systems

The vulnerability is present in pgAdmin 4 server deployments running any release prior to 9.17. The specific routes impacted are the Constraints blueprint (nodes, proplist, and delete), the preferences.get_all_cli endpoint, the debugger.close endpoint, and the schema_diff.close endpoint. These endpoints exist across pgAdmin 4 versions 1.0, 4.18, 8.2 and earlier, regardless of the installed database version, because the missing decorator logic is a code‑level oversight.

Risk and Exploitability

With a CVSS score of 6.9, the vulnerability is considered moderate. The EPSS score is listed as less than 1 %, indicating a very low probability of exploitation seen in the wild. The attack requires lateral or direct network access to the pgAdmin 4 server and does not rely on any authenticated session. Despite the low exploitation likelihood, the lack of authentication for these operations means that a present user could perform destructive changes without any credentials, and the absence of a KEV listing implies no known large‑scale campaigns yet.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade pgAdmin 4 to release 9.17 or later, which adds the missing @pga_login_required decorator to all affected endpoints.
  • If an immediate upgrade is infeasible, restrict network exposure of the pgAdmin 4 SERVER mode interface by firewalling or network segmentation so that only trusted hosts can reach the web service.
  • Implement monitoring or intrusion detection to alert on repeated unauthenticated access attempts against the Constraints, preferences, debugger, or schema‑diff endpoints.

Generated by OpenCVE AI on August 2, 2026 at 04:08 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
First Time appeared Pgadmin
Pgadmin pgadmin 4
Vendors & Products Pgadmin
Pgadmin pgadmin 4
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description In SERVER mode, pgAdmin 4 enforces authentication per route via the @pga_login_required decorator; the application's before_request hook only handles desktop-mode auto-login and the Kerberos/Webserver-auth redirect, so any route shipped without the decorator is reachable without authentication (CWE-306). This is the same defect class previously fixed as CVE-2026-12046 (the sqleditor close/update_connection routes). A follow-up sweep, prompted by a report describing an incomplete fix for CVE-2026-12046, found further routes missing @pga_login_required: the Constraints blueprint's nodes and proplist (object listing) routes and its delete route (a state-mutating DELETE that removes table constraints); preferences.get_all_cli (GET, discloses all CLI-settable preference values); debugger.close (DELETE); and schema_diff.close (DELETE). An unauthenticated network client could therefore enumerate constraint metadata, delete table constraints, read preference values, and force-close debugger or schema-diff sessions belonging to other users, without ever authenticating. Fix adds the missing @pga_login_required decorator (and the corresponding import to the Constraints module) to each of these routes. The change is decorator-only; no behavioral changes to the underlying handlers. This issue affects pgAdmin 4 in SERVER mode: the Constraints and Debugger routes from 1.0, the Schema Diff close route from 4.18, and preferences.get_all_cli from 8.2, all before 9.17.
Title pgAdmin 4: Missing authentication decorator on Constraints, preferences, Debugger and Schema Diff routes allows unauthenticated access in SERVER mode (incomplete fix for CVE-2026-12046)
Weaknesses CWE-306
References
Metrics cvssV3_1

{'score': 6.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L'}

cvssV4_0

{'score': 6.9, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N'}

Weaknesses
  • CWE-306

    Missing Authentication for Critical Function

Sources

Status
PUBLISHED
Assigner
PostgreSQL
Published
Updated
Jul 31, 2026, 5:23 PM
Reserved
Jul 25, 2026, 2:52 AM
Status
Analyzed
Published
Jul 31, 2026, 4:16 PM
Modified
Oct 23, 2026, 11:10 PM
Severity
Moderate
Public date
Jul 31, 2026, 3:59 PM