PostgreSQL veröffentlicht Updates, die den Libpq-Fehler beheben

postgreSQL

Vor ein paar Tagen, PostgreSQL kündigte die Veröffentlichung von Korrekturupdates an für alle unterstützten Zweige von PostgreSQL (Versionen 17.3, 16.7, 15.11, 14.16 und 13.19). Diese Aktualisierungen, die mehr als 70 Fehler beheben und vor allem die als CVE-2025-1094 identifizierte Sicherheitslücke beseitigen, im Zusammenhang mit einem Angriff, von dem BeyondTrust und das US-Finanzministerium Ende Dezember betroffen waren.

Verletzlichkeit wurde bei der Analyse eines anderen Remote-Fehlers erkannt (CVE-2024-12356) in den Diensten BeyondTrust PRA (Privileged Remote Access) und BeyondTrust RS (Remote Support) und wurde durch das Vorhandensein einer bisher unbekannten Sicherheitslücke (0-Day) in der libpq-Bibliothek verschärft.

Zur Sicherheitslücke, von der BeyondTrust betroffen war

Es wird erwähnt, dass der Fehler in PostgreSQL stammt aus libpq, die Bibliothek, die Stellt die API zur Interaktion mit PostgreSQL aus in C geschriebenen Programmen bereit, das auch die Grundlage für Bindungen in C++, Perl, PHP und Python ist.

La Die Schwachstelle liegt in der unsachgemäßen Handhabung der Unicode-Zeichenvalidierung. in wichtigen Fluchtfunktionen. Diese Funktionen sind wichtig, um Sonderzeichen in SQL-Abfragen zu neutralisieren und Code-Injections zu verhindern. Das Fehlen einer geeigneten Validierung führt jedoch dazu, dass bestimmte ungültige UTF-8-Multibyte-Sequenzen die Anführungszeichennormalisierung umgehen.

Angriffsmethode

Dieser Fehler ermöglicht SQL-Ersetzung in Anwendungen die diese Funktionen zur Verarbeitung von Abfragen verwenden, insbesondere wenn die Abfragen über das Befehlszeilenprogramm psql übermittelt werden. Diese Sicherheitsanfälligkeit kann beispielsweise ausgenutzt werden, um über die Befehlszeilensubstitution „!“ beliebige Befehle auf dem Server auszuführen, wie anhand eines Beispiels gezeigt wird, bei dem das Dienstprogramm „id“ aufgerufen wurde.

Der Exploit basiert auf der Verwendung eines ungültigen UTF-8-Zeichens, das aus den Bytes 0xC0 und 0x27 besteht. Byte 0x27 entspricht einem einfachen Anführungszeichen in ASCII, das normalerweise maskiert wird, um SQL-Injection-Probleme zu vermeiden. In Kombination mit 0xC0 wird die Sequenz jedoch als einzelnes Unicode-Zeichen interpretiert, wobei das einfache Anführungszeichen nicht maskiert wird.

Auswirkungen des Angriffs

Als Folge dieser Schwachstelle Angreifern gelang es, einen Zugangsschlüssel zur API zu erbeuten Wird verwendet, um Remote-Support über BeyondTrust SaaS-Dienste bereitzustellen. Mit diesem Schlüssel, konnte Passwörter zurücksetzen und die Infrastruktur des US-Finanzministeriums kompromittieren., Zugriff auf vertrauliche Dokumente und Mitarbeiterarbeitsplätze. Der Angriff deckte schwerwiegende Mängel in der Sicherheitskette auf und verdeutlichte, wie wichtig robuste Eingabevalidierungsmechanismen in kritischen Bibliotheken wie libpq sind.

Aktualisierungen und Korrekturmaßnahmen

Ante-este-Panorama, Das PostgreSQL-Team hat Updates implementierts, die diese Sicherheitslücke und eine Reihe weiterer Fehler beheben. Die Lösung liegt in der Verbesserung der Zeichenvalidierung in den Escape-Funktionen, Dadurch wird sichergestellt, dass jede UTF-8-Sequenz korrekt verarbeitet wird und dass ein einfaches Anführungszeichen nicht falsch interpretiert wird.

Darüber hinaus behebt dieses Update, wie bereits erwähnt, mehr als 70 Fehler, die in den letzten Monaten gemeldet wurden:

  • Mögliche Wiederverwendung veralteter Ergebnisse in Fensteraggregaten behoben, die zu falschen Ergebnissen führen konnte.
  • Verschiedene Race-Condition-Fixes für Vacuum, die im schlimmsten Fall zur Beschädigung eines Systemkatalogs führen könnten.
  • Verschiedene Korrekturen zum Abschneiden von Tabellen und Indizes, um mögliche Beschädigungen zu verhindern.
  • Problemumgehung zum Trennen einer Partition, deren eigene Fremdschlüsseleinschränkung auf eine partitionierte Tabelle verweist.
  • Feste FFn (z. B. FF1) to_timestamp-Formatcodes, bei denen ein ganzzahliger Formatcode vor FFn alle verfügbaren Ziffern verbrauchen würde.
  • Korrekturen für SQL/JSON und XMLTABLE(), um bei Bedarf doppelte Anführungszeichen um bestimmte Einträge zu setzen.
  • Fügen Sie die LDAP-Schemeoption in pg_hba_file_rules() ein.
  • Verschiedene Korrekturen für UNION, einschließlich der Nichtzusammenführung von Spalten mit nicht unterstützten Sortierungen.
  • Mehrere Korrekturen, die die Verfügbarkeit oder Geschwindigkeit beim Herstellen einer Verbindung mit PostgreSQL beeinträchtigen könnten.
  • Behebt mehrere Speicherlecks in der Logikdecodierungsausgabe.
  • Behebt mehrere Speicherlecks in PL/Python.
  • Ein pg_restore-Speicherverlust mit zstd-komprimierten Daten wurde behoben.
  • pg_basebackup wurde behoben, um unter Windows pg_wal.tar-Dateien, die größer als 2 GB sind, ordnungsgemäß zu verarbeiten.
  • Absturz in PageInspect in Fällen behoben, in denen die Funktionsdefinition brin_page_items() nicht auf die neueste Version aktualisiert wurde.
  • Behebt einen Race Condition beim Versuch, eine Remote-Postgres_FDW-Abfrage abzubrechen.

Wenn Sie daran interessiert sind, mehr darüber zu erfahren, können Sie die Details im folgenden Link