Eine in PostgreSQL gefundene Sicherheitsanfälligkeit wurde behoben, die bei dem Angriff auf BeyondTrust ausgenutzt wurde.

Korrigierende Updates für alle unterstützten Versionen von PostgreSQL 17.3, 16.7, 15.11, 14.16 und 13.19 wurden veröffentlicht, in denen mehr als 70 Fehler behoben und eine Sicherheitsanfälligkeit (CVE-2025-1094) beseitigt wurde, die Ende Dezember in einem Angriff auf BeyondTrust und das US-Finanzministerium ausgenutzt wurde. Das Problem in PostgreSQL wurde bei der Analyse einer entfernten Schwachstelle (CVE-2024-12356) in den Diensten von BeyondTrust PRA (Privileged Remote Access) und BeyondTrust RS (Remote Support) festgestellt, wobei außerdem eine zuvor unbekannte (0-Day) Schwachstelle in libpq ausgenutzt wurde.

Im Zuge des Angriffs gelang es den Angreifern, einen Schlüssel für den Zugriff auf die API zu erlangen, die für die Bereitstellung von technischem Support für Kunden der SaaS-Dienste von BeyondTrust verwendet wird. Diese API wurde verwendet, um Passwörter zurückzusetzen und die Infrastruktur des US-Finanzministeriums, das Produkte von BeyondTrust nutzt, zu kompromittieren. Während des Angriffs konnten die Angreifer vertrauliche Dokumente herunterladen und auf die Arbeitsstationen der Mitarbeiter des Ministeriums zugreifen.

Die Schwachstelle tritt in der Bibliothek libpq auf, die eine API für die Interaktion mit Datenbanksystemen aus Programmen in der Programmiersprache C bereitstellt (über die Bibliothek sind auch Wrapper-Bibliotheken für C++, Perl, PHP und Python implementiert). 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 die Einspeisung seines SQL-Codes erreichen, wenn der von außen stammende Text vor der Verwendung innerhalb einer SQL-Anfrage mithilfe der oben genannten libpq-Funktionen escaped wird. In den Anwendungen von BeyondTrust wurden derart escaped Anfragen über das Command-Line-Werkzeug psql übermittelt. Die Schwachstelle wird durch das Fehlen einer Validierung der verwendeten Unicode-Zeichen in den Escape-Funktionen verursacht, was es ermöglicht, die Normalisierung von Anführungszeichen durch die Angabe von ungültigen UTF-8-Multibyte-Sequenzen zu umgehen.

Für die Ausnutzung der Schwachstelle kann ein ungültiges UTF-8-Zeichen verwendet werden, das aus den Bytes 0xC0 und 0x27 besteht («└'»). Das Byte 0x27 entspricht im ASCII-Zeichensatz dem einfachen Anführungszeichen («‘»), das escapes werden muss. Im Escape-Code wird die Bytefolge 0xC0 und 0x27 als ein Unicode-Zeichen behandelt. Folglich bleibt das Byte 0x27 in dieser Sequenz unescapet, während es bei der Verarbeitung von SQL-Abfragen in der psql-Utility als Anführungszeichen behandelt wird.

Mit Ausführen von SQL-Abfragen mit der psql-Utility kann die Substitution in der Befehlszeile «\!» verwendet werden, die in psql zum Starten beliebiger Programme vorgesehen ist. Zum Beispiel, um Folgendes zu starten: Server Die Utility «id» kann den Wert «hax\xC0′; \! id #» erhalten. Im folgenden Beispiel wird das PHP-Skript dbquote zur Escape-Behandlung 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 Codierung «UTF8»: 0xc0 0x27 uid=1000(myexamplecompany) gid=1000(myexamplecompany)

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster