{"id":51228,"date":"2026-09-05T02:24:17","date_gmt":"2026-09-05T00:24:17","guid":{"rendered":"https:\/\/overcentral.com\/de\/?p=51228"},"modified":"2026-09-05T02:24:17","modified_gmt":"2026-09-05T00:24:17","slug":"postgresql-sicherheitsluecke-logische-dekodierung-51228","status":"publish","type":"post","link":"https:\/\/overcentral.com\/de\/postgresql-sicherheitsluecke-logische-dekodierung-51228\/","title":{"rendered":"PostgreSQL schlie\u00dft 12 Jahre alte Sicherheitsl\u00fccke in logischer Dekodierung"},"content":{"rendered":"<p><a href=\"https:\/\/www.postgresql.org\/support\/security\/\" target=\"_blank\" rel=\"noopener noreferrer\" data-iacss-external=\"1\">PostgreSQL<\/a> hat ein Sicherheitsupdate ver\u00f6ffentlicht, das eine seit zw\u00f6lf Jahren bestehende Schwachstelle in der logischen Dekodierung schlie\u00dft. Die als CVE\u20112026\u20116471 mit einem CVSS\u2011Score von 7,2 eingestufte L\u00fccke erlaubt es einem Kontoinhaber mit dem REPLICATION\u2011Attribut, beliebigen Code auf dem Betriebssystem des Datenbankservers auszuf\u00fchren. Betroffen sind alle Versionen vor PostgreSQL\u202f18.6, 17.11, 16.15, 15.19 und 14.24 \u2013 die Sicherheitsl\u00fccke existiert seit der Einf\u00fchrung der logischen Dekodierung in PostgreSQL\u202f9.4 im Jahr 2014.<\/p>\n<h2>Schwachstelle in der logischen Dekodierung: REPLICATION\u2011Benutzer k\u00f6nnen Plugin\u2011Pfade manipulieren<\/h2>\n<p>Die Schwachstelle basiert darauf, dass die logische Dekodierung einen vom Benutzer bereitgestellten Plugin\u2011Namen aus dem <strong>CREATE_REPLICATION_SLOT<\/strong>\u2011Befehl direkt an die Funktion \u00fcbergibt, die die Bibliothek l\u00e4dt. Die bestehende Pfadeinschr\u00e4nkung von PostgreSQL, die Nicht\u2011Superuser auf ein einziges, vom Administrator kontrolliertes Verzeichnis begrenzt, wird beim Replikationspfad nicht angewendet. Der Parser des Replikationsprotokolls akzeptiert nahezu jedes Zeichen innerhalb eines doppelt\u2011angef\u00fchrten Plugin\u2011Namens, einschlie\u00dflich Pfadtrennern und <em>..\/<\/em>\u2011Traversierung. Ein vollst\u00e4ndiger Dateisystempfad gelangt daher ungepr\u00fcft zum Lader.<\/p>\n<p>Die Sicherheitsforscher Vladimir Tokarev und Yu Kunpeng entdeckten die L\u00fccke und ver\u00f6ffentlichten am 1. September eine detaillierte Analyse unter dem Namen <strong>PostGREShell<\/strong>. F\u00fcr die Ausnutzung ist ein Konto mit dem REPLICATION\u2011Attribut erforderlich \u2013 ein Recht, das Backup\u2011Tools, Standby\u2011Server, Change\u2011Data\u2011Capture\u2011Pipelines (CDC) und \u00dcberwachungssysteme routinem\u00e4\u00dfig besitzen. Zudem muss der Server mit <strong>wal_level = logical<\/strong> laufen.<\/p>\n<h2>Betriebssystemabh\u00e4ngige Angriffspfade<\/h2>\n<p>Auf Windows l\u00f6st der Server den Pfad \u00fcber Server Message Block (SMB) auf und l\u00e4dt die Bibliothek von einer Maschine, die der Angreifer kontrolliert \u2013 ohne dass eine Datei auf dem Ziel geschrieben werden muss. Unter Linux und macOS erfordert derselbe Effekt, dass Network File System (NFS) per Automount eingebunden ist. In allen anderen F\u00e4llen ben\u00f6tigt der Angreifer eine vorhandene M\u00f6glichkeit, eine Datei auf die Platte des Servers zu schreiben. Der geladene Code l\u00e4uft im Datenbank\u2011Backend\u2011Prozess mit den Rechten des Betriebssystem\u2011Benutzers <strong>postgres<\/strong>.<\/p>\n<p>Der von Cyera Research entwickelte Test\u2011Plugin schrieb anschlie\u00dfend direkt in die Rollenkatalog\u2011Tabelle, um das REPLICATION\u2011Konto zu einem PostgreSQL\u2011Superuser zu machen. Zus\u00e4tzlich installierte der Exploit drei Persistenzmechanismen, die einen Server\u2011Neustart \u00fcberleben.<\/p>\n<h2>Der Fix: Whitelist f\u00fcr Output\u2011Plugins<\/h2>\n<p>Das am 13. August ausgelieferte Update f\u00fchrt den Server\u2011Parameter <strong>output_plugin_libraries<\/strong> ein. Dieser listet explizit auf, welche Bibliotheken als logische Dekodierungs\u2011Output\u2011Plugins geladen werden d\u00fcrfen. Voreingestellt ist <em>&#8218;pgoutput, test_decoding&#8216;<\/em>. Installationen, die andere Output\u2011Plugins wie <strong>wal2json<\/strong> oder <strong>decoderbufs<\/strong> verwenden, werden nach dem Update die logische Dekodierung verweigern, bis ein Administrator die entsprechende Bibliothek zur Liste hinzuf\u00fcgt und die Konfiguration neu l\u00e4dt.<\/p>\n<p>Jacob Champion, der den Fix beisteuerte, erl\u00e4uterte im Commit, dass eine nachtr\u00e4gliche Anwendung der standardm\u00e4\u00dfigen LOAD\u2011Einschr\u00e4nkungen auf den Replikationspfad dazu gef\u00fchrt h\u00e4tte, dass alle Drittanbieter\u2011Plugins im <strong>$libdir\/plugins<\/strong>\u2011Verzeichnis installiert werden m\u00fcssten. Die Whitelist\u2011L\u00f6sung vermeidet diesen Bruch mit bestehenden Konfigurationen. Fehlgeschlagene Ladeversuche erscheinen im Server\u2011Log als <em>ERROR: library &#8222;&#8230;&#8220; may not be used as an output plugin<\/em>, zusammen mit einem Hinweis auf den Parameter.<\/p>\n<h2>Ma\u00dfnahmen f\u00fcr Administratoren<\/h2>\n<p>Um die Aktualisierung vorzubereiten und durchzuf\u00fchren, empfiehlt das PostgreSQL\u2011Projekt vier Schritte:<\/p>\n<ol>\n<li>Vor dem Update mit <strong>SELECT DISTINCT plugin FROM pg_replication_slots WHERE plugin IS NOT NULL;<\/strong> ermitteln, welche Output\u2011Plugins in den vorhandenen Replikations\u2011Slots verwendet werden \u2013 der Befehl zeigt nur Plugins, die tats\u00e4chlich erfolgreich genutzt wurden.<\/li>\n<li>Auf eine der Versionen 18.6, 17.11, 16.15, 15.19 oder 14.24 aktualisieren \u2013 oder auf das entsprechende Distributionspaket.<\/li>\n<li>Nach dem Update jedes nicht\u2011standardm\u00e4\u00dfige Plugin zu <strong>output_plugin_libraries<\/strong> hinzuf\u00fcgen und die Konfiguration mit <strong>pg_ctl reload<\/strong> oder <strong>SELECT pg_reload_conf()<\/strong> neu laden. Ein Neustart ist nicht erforderlich.<\/li>\n<li>Bei einer Migration mit <strong>pg_upgrade &#8211;check<\/strong> ab Version 17 muss der neue Cluster den Parameter bereits vor dem Pr\u00fcflauf setzen, da der Check fehlschl\u00e4gt, wenn die Liste die Plugins des alten Clusters nicht erlaubt.<\/li>\n<\/ol>\n<p>Die korrigierten Pakete sind \u00fcber Amazon RDS, Debian, SUSE und Ubuntu verf\u00fcgbar. Ubuntu lieferte den Fix in USN\u20118653\u20111 am 20. August aus, erw\u00e4hnte den neuen Parameter jedoch nicht und wies lediglich auf einen Neustart nach dem Update hin. Debian warnte in seinem Advisory, dass der Fix zus\u00e4tzliche Konfigurations\u00e4nderungen erfordert, falls Erweiterungen wie wal2json oder decoderbufs eingesetzt werden. Das wal2json\u2011Projekt hat seine Dokumentation aktualisiert und verweist auf die CVE sowie die Notwendigkeit, das Plugin in <strong>output_plugin_libraries<\/strong> einzutragen.<\/p>\n<h2>Noch offene L\u00fccken und Risiken<\/h2>\n<p>Eine L\u00fccke in der aktuellen Fix\u2011Version ist noch offen: Der Befehl <strong>pg_createsubscriber<\/strong> erstellt Replikations\u2011Slots mit dem Plugin <em>pgoutput<\/em>, ohne den neuen Parameter zu \u00fcberpr\u00fcfen. Hayato Kuroda von Fujitsu wies im pgsql\u2011hackers\u2011Mailverteiler darauf hin, dass der Trockenlauf (&#8211;dry\u2011run) erfolgreich sein kann, w\u00e4hrend die eigentliche Umwandlung fehlschl\u00e4gt \u2013 ein f\u00fcr Administratoren \u00fcberraschendes Verhalten. Ein Patch f\u00fcr dieses Problem befand sich am 4. September noch in der \u00dcberpr\u00fcfung und war noch nicht \u00fcbernommen.<\/p>\n<p>CVE\u20112026\u20116471 war zum 4. September nicht im KEV\u2011Katalog der US\u2011Beh\u00f6rde <a href=\"https:\/\/overcentral.com\/de\/cisa-angriffe-gitea-citrix-netscaler-50137\/\" title=\"CISA best\u00e4tigt Angriffe auf Gitea und Citrix\" data-iacss-internal=\"1\">CISA<\/a> gelistet. Ebenfalls wurde bis zu diesem Datum kein \u00f6ffentlicher Proof\u2011of\u2011Concept\u2011Code in \u00f6ffentlichen Repositories gefunden. Bis das Update eingespielt werden kann, empfehlen die Forscher, das REPLICATION\u2011Attribut auf unbedingt notwendige Konten zu beschr\u00e4nken, die Replikationseintr\u00e4ge in der Datei <strong>pg_hba.conf<\/strong> auf bekannte Adressen zu begrenzen, ausgehenden SMB\u2011 (Port\u202f445) und NFS\u2011Datenverkehr (Port\u202f2049) von Datenbankservern zu blockieren sowie den Autofs\u2011Dienst zu deaktivieren, wo er nicht ben\u00f6tigt wird.<\/p>\n<p>Die zw\u00f6lf Jahre alte Schwachstelle zeigt, wie tief verwurzelte Designentscheidungen in der Replikationsinfrastruktur selbst nach langer Zeit zu kritischen Sicherheitsproblemen f\u00fchren k\u00f6nnen. Der gew\u00e4hlte Ansatz \u2013 eine explizite Whitelist statt einer nachtr\u00e4glichen Pfadrestriktion \u2013 gew\u00e4hrleistet Abw\u00e4rtskompatibilit\u00e4t, verlangt aber von den Betreibern ein aktives Konfigurationsmanagement. F\u00fcr Unternehmen, die auf Change Data Capture oder skalierte Backup\u2011L\u00f6sungen angewiesen sind, bleibt die Umstellung eine zeitkritische Aufgabe, bevor erste Exploits in freier Wildbahn auftauchen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PostgreSQL hat ein Sicherheitsupdate ver\u00f6ffentlicht, das eine seit zw\u00f6lf Jahren bestehende Schwachstelle in der logischen Dekodierung schlie\u00dft. Die als CVE\u20112026\u20116471 mit einem CVSS\u2011Score von 7,2 eingestufte L\u00fccke erlaubt es einem Kontoinhaber mit dem REPLICATION\u2011Attribut, beliebigen Code auf dem Betriebssystem des Datenbankservers auszuf\u00fchren. Betroffen sind alle Versionen vor PostgreSQL\u202f18.6, 17.11, 16.15, 15.19 und 14.24 \u2013 die [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":54023,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/cards.overcentral.com\/cards\/de\/51228.png","fifu_image_alt":"PostgreSQL schlie\u00dft 12 Jahre alte Sicherheitsl\u00fccke in logischer Dekodierung","footnotes":""},"categories":[6671],"tags":[],"class_list":["post-51228","post","type-post","status-publish","format-standard","has-post-thumbnail","category-scherheit"],"fifu_image_url":"https:\/\/cards.overcentral.com\/cards\/de\/51228.png","fifu_image_alt":"PostgreSQL schlie\u00dft 12 Jahre alte Sicherheitsl\u00fccke in logischer Dekodierung","_links":{"self":[{"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/posts\/51228","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/comments?post=51228"}],"version-history":[{"count":2,"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/posts\/51228\/revisions"}],"predecessor-version":[{"id":51230,"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/posts\/51228\/revisions\/51230"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/media\/54023"}],"wp:attachment":[{"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/media?parent=51228"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/categories?post=51228"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/tags?post=51228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}