> CVE-2026-12046 [CRITICAL]

« BACK_TO_HOME
PUBLISHED
2026-06-19 00:16
MODIFIED
2026-06-19 00:16
CVSS_SCORE V3
9.5
EPSS (Prob. Exploit)
1.04%
Top 36.1%
DATA SOURCES:
NVD 🔗 2026-06-19 RED HAT 🔗 2026-06-21 CWE MITRE 🔗 2026-11-01 FIRST EPSS 🔗 2026-11-01 OSV 🔗 2026-11-02

> DESCRIPTION

Two state-mutating endpoints in pgAdmin 4's SQL Editor blueprint -- DELETE /sqleditor/close/<trans_id> and POST /sqleditor/initialize/sqleditor/update_connection/<sgid>/<sid>/<did> -- were the only routes in the module missing the @pga_login_required decorator. Both reach a pickle.loads sink on session['gridData'][<trans_id>]['command_obj']: the close endpoint via close_sqleditor_session(), and update_sqleditor_connection via check_transaction_status(). In server mode these endpoints were reachable without any authenticated pgAdmin session. The defect is a missing-authentication-on-critical-function (CWE-306) wrapper around a deserialization-of-untrusted-data sink (CWE-502). Exploiting it for remote code execution requires the attacker to also forge a server-side session file whose gridData entry contains a malicious pickle payload, which in turn requires both (a) knowledge of pgAdmin's Flask SECRET_KEY (no chain to leak it is described here -- the attacker must already possess it) and (b) write access to pgAdmin's sessions/ directory on the host. Neither precondition is granted by this defect on its own. When those preconditions are met from another channel (misconfigured deployment, prior compromise, leaked configuration), the missing auth gate is the final hop that turns an existing partial compromise into unauthenticated code execution in the pgAdmin process -- and, by extension, on the host under whatever account runs pgAdmin. Fix is a one-line @pga_login_required decorator on each of the two endpoints, matching the convention used by every other route in the module. The is_authenticated / MFA chain now runs before the trans_id is dereferenced, so an unauthenticated request is rejected before reaching the deserialization path. The defect is server-mode only. In DESKTOP mode pgAdmin's before_request hook re-authenticates DESKTOP_USER on every request, so no endpoint can be exercised in an unauthenticated state and no auth decorator (or its absence) is meaningful. The accompanying regression test mirrors the attacker's path -- harvests an X-pgA-CSRFToken from GET /login and replays it against both endpoints -- and self-skips outside server mode for that reason; it is wired into the existing server-mode CI workflow alongside the data-isolation tests. This issue affects pgAdmin 4: from 6.9 before 9.16.

> AFFECTED_PRODUCTS

ℹ️ Aucun produit affecté n'a encore été publié par NVD pour cette CVE.

> CVSS V3 METRICS

CVSS_VECTOR
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/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

> MÉTRIQUES CVSS DÉTAILLÉES

CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/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
Métrique Valeur Interprétation
AV (Vecteur d'Attaque)
Attack Vector
Network (N)
Exploit possible à distance via réseau (HTTP, API, etc.)
AC (Complexité d'Attaque)
Attack Complexity
Low (L)
Peu de conditions requises pour exploiter
PR (Privilèges Requis)
Privileges Required
None (N)
Aucune authentification requise
UI (Interaction Utilisateur)
User Interaction
None (N)
Aucune interaction utilisateur nécessaire
S (Périmètre)
Scope
Unchanged (U)
Impact reste dans le périmètre du composant compromis
C (Impact Confidentialité)
Confidentiality Impact
High (H)
Divulgation totale d'informations
I (Impact Intégrité)
Integrity Impact
High (H)
Modification totale des données possible
A (Impact Disponibilité)
Availability Impact
High (H)
Interruption totale du service possible

> RÉSUMÉ DES IMPACTS

Confidentialité
High
Divulgation totale d'informations
Intégrité
High
Modification totale des données possible
Disponibilité
High
Interruption totale du service possible

> WEAKNESSES

CWE-306 CWE-502

> CWE DETAILED DESCRIPTIONS

CWE-306: Missing Authentication for Critical Functionality - The product does not perform any authentication for functionality that requires a provable user identity or consumes a significant amount of resources. | CWE-502: Deserialization of Untrusted Data - The product deserializes untrusted data without sufficiently ensuring that the resulting data will be valid.

> RED HAT SEVERITY ASSESSMENT

THREAT SEVERITY
Important

> OSV (GOOGLE OPEN SOURCE VULNERABILITIES)

pgAdmin 4: Unauthenticated pickle deserialization in SQL Editor close / update_connection routes enables remote code execution

AFFECTED PACKAGES:
Unknown / Unknown
53 versions affected

> HISTORIQUE DES MODIFICATIONS

Première apparition
19/06/2026 00:16
Source: NVD
📊 ENRICHISSEMENT 01/11/2026 06:59
CWE
Champ modifié: Description CWE
Ancienne valeur:
CWE-306: Missing Authentication for Critical Function - The product does not perform any authentication for functionality that requires a provable user identity or consumes a significant amount of res...
Nouvelle valeur:
CWE-306: Missing Authentication for Critical Functionality - The product does not perform any authentication for functionality that requires a provable user identity or consumes a significant amount o...
📊 ENRICHISSEMENT 01/07/2026 06:01
CWE
Champ modifié: Description CWE
Ancienne valeur:
N/A
Nouvelle valeur:
CWE-306: Missing Authentication for Critical Function - The product does not perform any authentication for functionality that requires a provable user identity or consumes a significant amount of res...
📊 ENRICHISSEMENT 21/06/2026 05:01
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Important" }
Nouvelle valeur:
{ "threat_severity": "Important", "severity_scale": null }
📊 ENRICHISSEMENT 19/06/2026 23:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Important" }
Nouvelle valeur:
{ "threat_severity": "Important", "severity_scale": null }
📊 ENRICHISSEMENT 19/06/2026 22:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Important" }
Nouvelle valeur:
{ "threat_severity": "Important", "severity_scale": null }
📊 ENRICHISSEMENT 19/06/2026 21:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Important" }
Nouvelle valeur:
{ "threat_severity": "Important", "severity_scale": null }
📊 ENRICHISSEMENT 19/06/2026 20:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Important" }
Nouvelle valeur:
{ "threat_severity": "Important", "severity_scale": null }
📊 ENRICHISSEMENT 19/06/2026 19:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Important" }
Nouvelle valeur:
{ "threat_severity": "Important", "severity_scale": null }
📊 ENRICHISSEMENT 19/06/2026 18:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Important" }
Nouvelle valeur:
{ "threat_severity": "Important", "severity_scale": null }
📊 ENRICHISSEMENT 19/06/2026 17:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Important" }
Nouvelle valeur:
{ "threat_severity": "Important", "severity_scale": null }
📊 ENRICHISSEMENT 19/06/2026 16:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Important" }
Nouvelle valeur:
{ "threat_severity": "Important", "severity_scale": null }
📊 ENRICHISSEMENT 19/06/2026 15:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Important" }
Nouvelle valeur:
{ "threat_severity": "Important", "severity_scale": null }
📊 ENRICHISSEMENT 19/06/2026 14:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Important" }
Nouvelle valeur:
{ "threat_severity": "Important", "severity_scale": null }
📊 ENRICHISSEMENT 19/06/2026 13:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
{ "severity_scale": null, "threat_severity": "Important" }
Nouvelle valeur:
{ "threat_severity": "Important", "severity_scale": null }
📊 ENRICHISSEMENT 19/06/2026 12:30
REDHAT
Champ modifié: Sévérité Red Hat
Ancienne valeur:
N/A
Nouvelle valeur:
{ "threat_severity": "Important", "severity_scale": null }
📊 ENRICHISSEMENT 19/06/2026 12:30
REDHAT
Champ modifié: Red Hat
Ancienne valeur:
Non
Nouvelle valeur:
Oui
Total des modifications: 16 Dernière mise à jour: 5 days ago

> REFERENCES

https://github.com/pgadmin-org/pgadmin4/commit/f81433ae2f998f95bb17f27f53b4e99eb...
https://github.com/pgadmin-org/pgadmin4/issues/10072
« BACK_TO_HOME