In PostgreSQL è stata risolta una vulnerabilità sfruttata nell'attacco a BeyondTrust

Sono stati rilasciati aggiornamenti correttivi per tutti i rami supportati di PostgreSQL 17.3, 16.7, 15.11, 14.16 e 13.19, che correggono oltre 70 errori e risolvono una vulnerabilità (CVE-2025-1094), utilizzata alla fine di dicembre in un attacco contro l'azienda BeyondTrust e il Ministero delle Finanze degli Stati Uniti. Il problema in PostgreSQL è stato individuato durante l'analisi di una vulnerabilità remota (CVE-2024-12356) nei servizi BeyondTrust PRA (Privileged Remote Access) e BeyondTrust RS (Remote Support), durante l'exploitation della quale è stata ulteriormente sfruttata una vulnerabilità sconosciuta (0-day) in libpq.

A seguito dell'attacco, gli aggressori sono riusciti ad ottenere una chiave di accesso all'API utilizzata per la fornitura remota di servizi di supporto tecnico ai clienti dei servizi SaaS di BeyondTrust. Questa API è stata utilizzata per reimpostare le password e compromettere l'infrastruttura del Ministero delle Finanze degli Stati Uniti, che utilizza i prodotti BeyondTrust. Durante l'attacco, gli aggressori sono stati in grado di scaricare documenti riservati e ottenere accesso ai posti di lavoro dei dipendenti del ministero.

La vulnerabilità si manifesta nella libreria libpq, che fornisce un'API per interagire con il DBMS da programmi in linguaggio C (sopra la libreria sono inoltre implementate librerie di wrapping per C++, Perl, PHP e Python). Il problema riguarda le applicazioni che utilizzano le funzioni PQescapeLiteral(), PQescapeIdentifier(), PQescapeString() o PQescapeStringConn() per l'escaping dei caratteri speciali e la neutralizzazione delle virgolette.

L'attaccante può ottenere l'inserimento del proprio SQL se il testo ricevuto dall'esterno è sottoposto a escaping utilizzando le suddette funzioni libpq prima dell'utilizzo all'interno della query SQL. Nelle applicazioni BeyondTrust, le query così escatate venivano inviate tramite l'utilità da riga di comando psql. La vulnerabilità è causata dall'assenza di verifica della correttezza dei caratteri Unicode utilizzati nel testo nelle funzioni di escaping, che consente di eludere la normalizzazione delle virgolette specificando sequenze multibyte UTF-8 non valide.

Per sfruttare la vulnerabilità, è possibile utilizzare un carattere UTF-8 non valido composto dai byte 0xC0 e 0x27 («└'»). Il byte 0x27 nella codifica ASCII corrisponde all'apostrofo («‘»), che deve essere eseguito. Nel codice di escape, la combinazione di byte 0xC0 e 0x27 viene trattata come un singolo carattere Unicode. Di conseguenza, il byte 0x27 in una tale sequenza rimane non eseguito, mentre durante l'elaborazione di una query SQL nello strumento psql viene trattato come un apostrofo.

Durante l'esecuzione di query SQL utilizzando lo strumento psql per organizzare l'esecuzione di codice arbitrario, è possibile utilizzare la sostituzione nella stringa di comando «\!», destinata in psql per eseguire programmi arbitrari. Ad esempio, per eseguire la server utility «id», si può passare il valore «hax\xC0′; \! id #». Nell'esempio seguente, per eseguire viene chiamato lo script PHP dbquote, che utilizza la funzione PHP pg_escape_string, che lavora sopra la funzione PQescapeString di libpq: $ echo -e «hello \xC0’world'» | .\/dbquote ‘hello └’world»’ $ quoted=$(echo -e «hax\xC0′; \! id # » | .\/dbquote) $ echo «SELECT COUNT(1) FROM gw_sessions WHERE session_key = $quoted AND session_type = ‘sdcust’ AND (expiration IS NULL OR expiration>NOW())» | psql -e SELECT COUNT(1) FROM gw_sessions WHERE session_key = ‘hax└’; ERROR: sequenza di byte non valida per la codifica «UTF8»: 0xc0 0x27 uid=1000(myexamplecompany) gid=1000(myexamplecompany)

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster