Stabsstelle Informationssicherheit der
Universität Stuttgart (RUS-CERT)
https://cert.uni-stuttgart.de
logo
Meldung Nr: RUS-CERT-912

[Generic/PostgreSQL] Pufferüberlauf bei der Verarbeitung von Datumsangaben
(2002-08-05 12:43:14.663151+00)

Quelle: http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/utils/adt/date.c#rev1.70

Die Routine, die in SQL-Abfragen Datums- und Zeitangaben verarbeitet, weist eine Pufferüberlaufschwachstelle auf.

Betroffene Systeme

Frühere Versionen sind vermutlich ebenfalls betroffen.

Einfallstor
Einlieferung von Datums- oder Zeitangaben an die PostgreSQL-Datenbank

Auswirkung
Es wird zumindest der PostgreSQL-Serverprozeß beendet (Denial of Service, DoS).

Typ der Verwundbarkeit
buffer overflow bug

Gefahrenpotential
niedrig bis mittel (abhängig davon, ob die Anwendung, die PostgreSQL nutzt, Verbindungen automatisch wieder aufbaut, wenn sie wegfallen)
(Hinweise zur Einstufung des Gefahrenpotentials.)

Beschreibung
In den Routinen, die Datums- und Zeitangaben, die in Form von Zeichenketten vorliegen, in die interne PostgreSQL-Darstellung umsetzen, wurden Pufferüberlauffehler entdeckt. Diese Routinen werden z.B. automatisch von PostgreSQL aufgerufen, sobald ein Datumsfeld in einer Relation per SQL geändert wird.

Für die Ausnutzung dieser Schwachstelle ist es nicht erforderlich, beliebige SQL-Kommandos an den PostgreSQL-Server schicken zu können. Es reicht, wenn eine Zeichenkette übermittelt wird, die implizit oder explizit vom Server in eine Datums- oder Zeitangabe konvertiert wird. Da der Pufferüberlauf während der syntaktischen Analyse der Zeichenkette vorkommt, ist die Schwachstelle eventuell nicht ausnutzbar, um beliebigen Code mit den Rechten des PostgreSQL-Serverprozesses auszuführen. Ein Angreifer kann jedoch auf jeden Fall den Serverprozeß zum Absturz bringen und damit möglicherweise eine Anwendung empfindlich stören, wenn sie die ausgefallene Verbindung nicht automatisch ersetzt (Denial of Service).

Feststellen der Verwundbarkeit
Folgender SQL-Befehl bringt den PostgreSQL-Serverprozeß zum Absturz, falls er für die beschriebene Schwachstelle anfällig ist:

SELECT '00000 ... ein paar hundert Nullen ... 000000'::datetime;

Workaround
Generell sollten Anwendungen, die Datenbanken nutzen und mit Daten aus nicht vertrauenswürdigen Quellen versorgen, die Daten selbst analysieren und in einer Standardform an die Datenbank weiterreichen, da die Konvertierungsroutinen der meisten Datenbanken aufgrund vergangener Erfahrungen wenig Anlaß geben, sie als sicher einzustufen. Dadurch ergibt sich auch der zusätzliche Vorteil, daß auch bei einem Datenbankwechsel noch dieselben Formate wie bisher erkannt werden.

Gegenmaßnahmen
Eine Reihe von Patches für die CVS-Version von PostgreSQL existiern. Momentan ist nicht bekannt, ob er auf die aktuellen 7.2-Versionen zurückportiert wird.

Weitere Information zu diesem Thema
Die folgenden Patches scheinen dieses Problem für die CVS-Version zu beheben:

Eventuell sind diese Patches aber nicht vollständig; sie enthalten definitiv auch andere; nicht direkt relevante Änderungen.

(fw)

Weitere Artikel zu diesem Thema:

Hinweis
Die in diesem Text enthaltene Information wurde für die Mitglieder der Universität Stuttgart recherchiert und zusammengestellt. Die Universität Stuttgart übernimmt keinerlei Haftung für die Inhalte. Dieser Artikel darf ausschließlich in unveränderter Form und nur zusammen mit diesem Hinweis sowie dem folgenden Copyrightverweis veröffentlicht werden. Eine Veröffentlichung unter diesen Bedingungen an anderer Stelle ist ausdrücklich gestattet.

Copyright © 2022 RUS-CERT, Universität Stuttgart, https://cert.uni-stuttgart.de/


https://cert.uni-stuttgart.de/ticker/article.php?mid=912