PostgreSQL-Schwachstelle ermöglicht Code-Ausführung

CERT-Bund warnt Betreiber einer PostgreSQL-Datenbank vor einer Schwachstelle (CVE-2019-9193), über die Benutzer beliebigen Code ausführen können. Die Sicherheitslücke wird als hoch eingestuft.

Admin-Passwörter schützen mit Windows LAPS. eBook jetzt herunterladen » (Anzeige)

PostgreSQL ist eine frei verfügbare Datenbank für unterschiedliche Betriebssysteme (macOS, Linux, Windows). In den Open Source PostgreSQL Versionen 9.3 – 11.2 ermöglicht eine Schwachstelle (CVE-2019-9193) das Ausführen von beliebigem Programmcode mit Benutzerrechten. Der Eintrag für CVE-2019-9193 beschreibt folgendes:

In PostgreSQL 9.3 through 11.2, the "COPY TO/FROM PROGRAM" function allows superusers and users in the 'pg_read_server_files' group to execute arbitrary code in the context of the database's operating system user. This functionality is enabled by default and can be abused to run arbitrary operating system commands on Windows, Linux, and macOS.

Auf Medium findet sich eine Sicherheitswarnung (Advisory) von Greenwolf Security mit Details.

Seit der Version 9.3 wurde die neue Funktionalität für 'COPY TO/FROM PROGRAM' implementiert. Dies ermöglicht es dem Datenbanksuperuser und jedem Benutzer in der Gruppe 'pg_read_server_files', beliebige Betriebssystembefehle auszuführen.

Dies bedeutet effektiv, dass es keine Trennung der Privilegien zwischen einem Datenbank-Superbenutzer und dem Benutzer, der die Datenbank auf dem Betriebssystem ausführt, gibt.


(Änderung des Befehls, Quelle: Medium)

Dies bedeutet, man kann die Datenbank durch entsprechende Befehle übernehmen. Wer die PostgreSQL Versionen 9.3 bis 11.2 verwendet, sollte diese Funktion aus Sicherheitsgründen deaktivieren. Ein deutschsprachiger Beitrag zum Thema findet sich bei Heise.

Dieser Beitrag wurde unter Sicherheit abgelegt und mit verschlagwortet. Setze ein Lesezeichen auf den Permalink.

3 Antworten zu PostgreSQL-Schwachstelle ermöglicht Code-Ausführung

  1. Kuni sagt:

    Habe mich gestern abend schon über die Schlagzeile bei Heise geärgert, da zu diesem Zeitpunkt die PostgreSQL-Entwickler bereits eine erschlagende Antwort veröffentlicht hatten (https://blog.hagander.net/when-a-vulnerability-is-not-a-vulnerability-244/) – wie ich gerade sehe, hat Heise inzwischen wenigstens den Artikel ergänzt.

    In Kurzform: es handelt sich nicht um einen Bug, sondern PostgreSQL verhält sich genau so wie erwartet und auch sauber dokumentiert (endlich mal ein Fall wo wirklich "It's not a bug, it's a feature" gilt).

    Ja, ein Datenbanknutzer kann Programme mit den Rechten des Betriebssystemnutzers ausführen, unter dem der PostgreSQL-Server läuft. Dies gilt allerdings nur für den Datenbankadministrator "postgres" (der Superuser unter PostgreSQL) und für Datenbanknutzer, denen der Datenbankadministrator dieses Recht explizit eingeräumt hat (was definitiv nicht aus Versehen passiert).

    Es besteht also nur eine Sicherheitslücke, wenn der Datenbankadministrator Mist baut, oder aber schlecht konfigurierte Software statt eines (normalen) Datenbanknutzers den Account des Datenbankadministrators nutzt (das Äquivalent auf Betriebssystemebene wäre, alle Programme als root auszuführen). In diesem Fall sind aber sowieso alle Tore offen oder wie Magnus Hagander in dem Link oben schreibt:

    "While COPY FROM PROGRAM has made it a bit easier, it is by no means the only way to execute commands as the server user, if superuser permissions have been granted. Given that the superuser can read and write arbitrary files on the server (as the postgres user), it can fairly easily be escalated into running commands even without COPY FROM PROGRAM."

    Zusammengefasst ist das Ganze ein Sturm im Wasserglas und mir ist ein Rätsel, wie das Ding eine CVE-Nummer bekommen konnte…

    • Günter Born sagt:

      Ich schlage schlicht vor, sich abzuregen. Natürlich ist das Ding dokumentiert – aber welcher PostgresSQL-Benutzer liest ständig die Dokumentation mit. Also schleichen sich die Dinge ein und irgendwann gibt es das große Erwachen.

      Da halte ich es für pragmatischer, wenn es Artikel gibt, die auf das Problem hinweisen. So gibt es zumindest die Chance, dass der eine oder andere Nutzer das mitbekommt. Dann gibt es zwei Möglichkeiten: a) das hab ich doch gewusst, also abgehakt und wieder hinlegen, oder b) ok, gut, dass ich das lese, muss ich mal nachschauen und ggf. reagieren.

      Dass es Leute gibt, die sich dann aufregen und sich über Begrifflichkeiten echauffieren, nehme ich als Kollateralschaden hin. Nichts für ungut ;-)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Bitte beachtet die Regeln zum Kommentieren im Blog (Erstkommentare und Verlinktes landet in der Moderation, gebe ich alle paar Stunden frei, SEO-Posts/SPAM lösche ich rigoros. Kommentare abseits des Themas bitte unter Diskussion. Kommentare, die gegen die Regeln verstoßen, werden rigoros gelöscht.

Du findest den Blog gut, hast aber Werbung geblockt? Du kannst diesen Blog auch durch eine Spende unterstützen.