In PostgreSQL wurde eine Schwachstelle behoben, die bei einem Angriff auf BeyondTrust ausgenutzt wurde.

Es wurden Korrekturupdates fĂŒr alle unterstĂŒtzten PostgreSQL-Versionen 17.3, 16.7, 15.11, 14.16 und 13.19 erstellt, in denen ĂŒber 70 Fehler behoben und eine Schwachstelle (CVE-2025-1094) behoben wurde, die Ende Dezember wĂ€hrend eines Angriffs auf das Unternehmen BeyondTrust und das US-Finanzministerium aktiv war. Das Problem in PostgreSQL wurde bei der Analyse einer entfernten Schwachstelle (CVE-2024-12356) in den Diensten BeyondTrust PRA (Privileged Remote Access) und BeyondTrust RS (Remote Support) festgestellt, wobei zusĂ€tzlich eine zuvor unbekannte (0-Day) Schwachstelle in libpq ausgenutzt wurde.

Als Ergebnis des Angriffs gelang es den Angreifern, einen SchlĂŒssel fĂŒr den Zugriff auf die API zu erhalten, die zur Erbringung von Remote-Supportdiensten fĂŒr Kunden von BeyondTrust SaaS-Diensten verwendet wird. Diese API wurde verwendet, um Passwörter zurĂŒckzusetzen und die Infrastruktur des US-Finanzministeriums, das Produkte von BeyondTrust nutzt, zu kompromittieren. Im Verlauf des Angriffs konnten die Angreifer vertrauliche Dokumente herunterladen und Zugriff auf die Arbeitsstationen der Mitarbeitern des Ministeriums erlangen.

Die Schwachstelle zeigt sich in der Bibliothek libpq, die eine API fĂŒr die Interaktion mit der Datenbankverwaltungssystem (DBMS) aus C-Programmen bereitstellt (auf der Bibliothek basieren auch Wrapper-Bibliotheken fĂŒr C++, Perl, PHP und Python). Das Problem betrifft Anwendungen, die zur Escape von Sonderzeichen und zur Neutralisierung von AnfĂŒhrungszeichen die Funktionen PQescapeLiteral(), PQescapeIdentifier(), PQescapeString() oder PQescapeStringConn() verwenden.

Ein Angreifer kann erreichen, dass sein SQL-Code substituiert wird, wenn der von außen eingehende Text vor der Verwendung in einer SQL-Abfrage mit den oben genannten libpq-Funktionen escaped wird. In den Anwendungen von BeyondTrust wurden derart escaped Abfragen ĂŒber das Kommandozeilenwerkzeug psql ĂŒbergeben. Die Schwachstelle wird durch das Fehlen einer ÜberprĂŒfung der GĂŒltigkeit der verwendeten Unicode-Zeichen in den Escape-Funktionen hervorgerufen, was es ermöglicht, die Normalisierung von AnfĂŒhrungszeichen ĂŒber die Angabe ungĂŒltiger mehrbyteiger UTF-8-Sequenzen zu umgehen.

FĂŒr die Ausnutzung der Verwundbarkeit kann ein ungĂŒltiges UTF-8-Zeichen verwendet werden, das aus den Bytes 0xC0 und 0x27 besteht (»└'«). Das Byte 0x27 entspricht in der ASCII-Codierung einem einfachen AnfĂŒhrungszeichen (»‘«), das escaped werden muss. In der Escape-Sequenz werden die Byte-Kombinationen 0xC0 und 0x27 als ein Unicode-Zeichen behandelt. Daher bleibt das Byte 0x27 in dieser Sequenz unbehandelt, wĂ€hrend es bei der Verarbeitung der SQL-Abfrage im Tool psql als AnfĂŒhrungszeichen interpretiert wird.

Bei der AusfĂŒhrung von SQL-Abfragen mit Hilfe des Tools psql zur Organisation der AusfĂŒhrung beliebigen Codes kann die Ersetzung in der Befehlszeile „\!“, die in psql zum Starten beliebiger Programme bestimmt ist, verwendet werden. Zum Beispiel kann fĂŒr die AusfĂŒhrung des Server Tools „id“ der Wert „hax\xC0â€Č; \! id #“ ĂŒbergeben werden. Im folgenden Beispiel wird zur Escape-Behandlung ein PHP-Skript dbquote aufgerufen, das die PHP-Funktion pg_escape_string verwendet, die auf der Funktion PQescapeString aus libpq basiert: $ 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└’; FEHLER: ungĂŒltige Byte-Sequenz fĂŒr die Kodierung „UTF8“: 0xc0 0x27 uid=1000(myexamplecompany) gid=1000(myexamplecompany)

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster