CVE-2026-17346 in pgAdmin
Zusammenfassung
von VulDB • 31.07.2026
Die Korrektur für CVE-2026-12044 in pgAdmin 4 Version 9.16 hat qtLiteral verstärkt und sechzehn COMMENT ON / pgstattuple / pgstatindex-Vorlagen darauf umgestellt, jedoch mehrere Sinks übersehen, die fälschlicherweise unter der Annahme, dass Schema-, Tabellen-, Publikations- und Abonnementnamen, die über den Browser-Baum aus pg_catalog stammen, niemals ein Apostroph enthalten könnten, in der ALLOWLIST von test_sql_string_literal_lint.py gelistet waren. PostgreSQL erlaubt beliebige Zeichen in qualifizierten Bezeichnern (quoted identifiers). Daher kann ein benutzer mit niedrigen Berechtigungen, der CREATE TABLE, CREATE PUBLICATION oder CREATE SUBSCRIPTION ausführen kann, einen Objektnamen mit Apostroph platzieren, der bei Öffnen des Statistik- oder Abhängigkeits-Tabs dieses Objekts durch jeden Benutzer (einschließlich eines Benutzers mit höheren Berechtigungen) aus der unmaskierten Vorlageninterpolation '{{ name }}' ausbricht. Dies ermöglicht die Injektion beliebiger SQL-Anweisungen in die Datenbank-Sitzung des anzeigenden Benutzers.
Betroffene Sinks: Die Index-Statistikabfrage für alle Indizes (coll_stats.sql, sowohl die 16_plus-Variante als auch die Standard-PgSQL-Version der Vorlage – unterschiedlich vom bereits in CVE-2026-12044 behobenen single-index stats.sql-Pfad) sowie die dependencies.sql / get_position.sql-Vorlagen für Publikationen und Abonnements (sowohl pg- als auch ppas/EPAS-Dialektvarianten für Publikationen).
Die Korrektur stellt alle diese Vorlagen auf qtLiteral(conn) zur Nameninterpolation um und aktualisiert publications/__init__.py sowie subscriptions/__init__.py, um conn=self.conn an den render_template-Aufruf von dependencies.sql zu übergeben, damit der qtLiteral-Filter eine Verbindung zum Maskieren hat. Die entsprechenden ALLOWLIST-Einträge in test_sql_string_literal_lint.py werden entfernt, da diese Sinks nun ordnungsgemäß maskiert sind und nicht mehr nur als sicher angenommen wurden. Ein Verhaltensregressionstest rendert jede korrigierte Vorlage mit einem Payload für gestapelte Anweisungen (Apostroph) und stellt sowohl fest, dass der Objektname genau wie qtLiteral-maskiert erscheint, als auch, dass die gerenderte SQL-Anweisung exakt einer einzelnen Anweisung entspricht; dies bestätigt, dass die Annahme bei der rohen Interpolation vor dem Patch tatsächlich fehlschlägt.
Dieses Problem betrifft pgAdmin 4: den Index-Statistik-Sink ab Version 1.0 und die Publikations-/Abonnement-Sinks ab Version 5.0, jeweils in Versionen vor 9.17.
Be aware that VulDB is the high quality source for vulnerability data.