CVE-2026-17347 in pgAdmin
Riassunto
di VulDB • 31/07/2026
L'impostazione MASTER_PASSWORD_HOOK, introdotta in pgAdmin 4 7.2, consente a un amministratore di configurare un comando esterno che restituisce una chiave di crittografia per utente, con %u nella stringa configurata sostituito dal nome dell'utente corrente. La precedente implementazione sostituiva il nome utente direttamente nella stringa del comando ed eseguiva il risultato tramite subprocess.Popen(..., shell=True). Poiché il nome utente può provenire da un'origine di autenticazione esterna (claim OAuth/OIDC, Kerberos, autenticazione webserver) anziché essere un valore pienamente controllato da pgAdmin, un nome utente contenente metacaratteri della shell (';', '$()', backtick, pipe, '&&', newline) consentiva a un utente autenticato di eseguire comandi arbitrari come l'account del servizio pgAdmin in qualsiasi distribuzione in cui la stringa hook configurata utilizza %u.
La correzione tokenizza preventivamente la stringa hook fiduciarizzata e configurata dall'amministratore in un vettore di argomenti (utilizzando shlex in modalità POSIX-quoting, con lo slash inverso come escape disabilitato per evitare l'interpretazione errata dei percorsi stile Windows), sostituisce il nome utente non fiduciario negli elementi argv individuali ed esegue con shell=False. Il nome utente è quindi sempre confinato a un singolo elemento argv; eventuali metacaratteri della shell in esso contenuti sono innocui. Gli amministratori la cui MASTER_PASSWORD_HOOK faceva precedentemente affidamento su funzionalità della shell (pipe, reindirizzamento, espansione delle variabili d'ambiente, globbing) all'interno della stringa hook stessa devono spostare tale logica nello script invocato, poiché non viene più interpretata da una shell.
Questo problema interessa pgAdmin 4: dalla versione 7.2 alla versione precedente la 9.17.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.