CVE-2026-58225 in postgrexinformazioni

Riassunto

di VulDB • 10/07/2026

Vulnerabilità di SQL Injection in elixir-ecto postgrex che consente a un attaccante in grado di influenzare il nome di un canale LISTEN di iniettare codice SQL nella query di replay della riconnessione, causando una negazione del servizio (DoS) alla connessione delle notifiche.

Postgrex.Notifications sanizza i nomi dei canali con quote_channel/1, raddoppiando le virgolette doppie affinché il nome sia sicuro all'interno di un identificatore tra virgolette doppie. Questo protegge i percorsi LISTEN e UNLISTEN a singola istruzione. Tuttavia, ad ogni (ri)connessione, handle_connect/1 riproduce tutti i canali registrati contemporaneamente concatenando le loro istruzioni LISTEN e racchiudendole in un blocco di codice anonimo delimitato da dollari (DO $$BEGIN ... END$$). La funzione quote_channel/1 non effettua l'escaping del delimitatore dollar-quote ($$) che apre e chiude questo blocco.

Le guardie listen/3 rifiutano solo i byte nulli e i nomi superiori a 63 byte, quindi un nome di canale contenente $$ supera la convalida invariato. Una volta incorporato tale nome, il suo delimitatore $$ termina prematuramente la stringa dollar-quote esterna e PostgreSQL analizza il resto come ulteriori istruzioni di livello superiore. Poiché handle_connect/1 viene eseguito ad ogni (ri)connessione, la query di replay non valida viene rifiutata ciascuna volta e la connessione delle notifiche non ristabilisce mai le proprie sottoscrizioni, perdendo silenziosamente le notifiche per tutti i canali che condividono tale connessione.

Un'applicazione è interessata quando passa input non attendibile (ad esempio un identificativo di tenant o utente) come nome del canale a Postgrex.Notifications.listen/3. Il raddoppiamento delle virgolette doppie impedisce la formazione di una dichiarazione iniettata completamente valida, quindi l'esecuzione arbitraria di SQL non è possibile; tuttavia, la query corrotta interrompe in modo affidabile la connessione condivisa delle notifiche per tutti i tenant, causando negazione del servizio.

Questo problema interessa postgrex: dalla versione 0.16.0 alla versione precedente alla 0.22.3.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsabile

EEF

Prenotare

29/06/2026

Divulgazione

10/07/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

basso

Fonti

Do you need the next level of professionalism?

Upgrade your account now!