CVE-2026-17566
pgAdmin 4: RCE durch Backslash-Escape-Diskrepanz in der Import/Export-Daten-Abfrageabsicherung (unvollständige Verteidigung, verwandte Lücke zu CVE-2025-13780)
- Veröffentlicht
- 31.07.2026
- Aktualisiert
- 01.08.2026
- CNA zuweisen
- PostgreSQL
- Beweise beobachtet
- 04.08.2026
Primäres CVSS
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XNiedrig · nächste 30 Tage
- Perzentil
- 45,0 %
- Modelldatum
- 21.09.2026
EPSS ist eine statistische Schätzung, keine Gewissheit oder ein Maß für die Auswirkung. Kombinieren Sie es mit CVSS, KEV-Status, Belichtung und Ihrer Umgebung.
Zusammenfassung
pgAdmin 4's Import/Export Data tool baut eine psql \copy (...) -Kommandozeile auf, indem es eine vom Benutzer bereitgestellte SQL-Abfrage in eine Jinja-Vorlage interpoliert und die gerenderte Zeile über --command an psql übergibt. Um zu verhindern, dass ein Angreifer aus dem (...) -Wrapper ausbricht, validierte create_import_export_job() (Route POST /import_export/job/<sid>, nur durch die gewöhnliche, häufig erteilte Berechtigung tools_import_export_data geschützt) die Abfrage mit einem handgeschriebenen Klammergleichgewichts-Prüfer, _is_query_parens_balanced(). Dieser Prüfer behandelte stets einen Backslash vor einem einfachen Anführungszeichen (\') als Escape des Anführungszeichens, d. h. als ob standard_conforming_strings deaktiviert wäre. PostgreSQL hat standard_conforming_strings seit 9.1 (2010) standardmäßig aktiviert, dem Standard auf jeder PostgreSQL-Version, die pgAdmin 4 derzeit unterstützt (13-18); unter diesem Standard behandelt psqls eigener \copy-Tokenizer \ als gewöhnliches Zeichen, sodass ein direkt darauf folgendes einfaches Anführungszeichen das String-Literal schließt. Eine Abfrage wie SELECT 'a\') TO PROGRAM 'echo pwned' x' wurde daher von pgAdmins Prüfer als „ausgeglichen" akzeptiert (der glaubte, die ) befände sich noch innerhalb des Strings), während psql, ausgeführt über die tatsächlich gerenderte Kommandozeile, den String an dieser Stelle schließt und die folgende ) als Ende der umschließenden \copy (...)-Unterabfrage behandelt, wodurch eine vom Angreifer gewählte TO PROGRAM '<command>'-Klausel offengelegt wird, die psql über popen() ausführt – unabhängig von einem späteren Syntaxfehler in derselben Zeile. Dies ist dieselbe Fehlerklasse wie CVE-2025-12762/CVE-2025-13780 (RCE über psql-Metabefehl/COPY-Injection während der Wiederherstellung im PLAIN-Format), erreicht über eine unabhängig geschriebene Verteidigung in einem anderen Modul (Import/Export Data statt Restore), die ihren eigenen, anderen Logikfehler hatte (invertierte Backslash-Escape-Semantik statt eines durch BOM ausgehebelten Regex-Ankers). Der Fix lehnt jeden Backslash innerhalb eines in einfache Anführungszeichen gesetzten Strings in der Abfrage vollständig ab, anstatt eine der beiden möglichen psql-Interpretationen zu wählen. Dies ist bewusst konservativ: Da die korrekte Interpretation von \ von der standard_conforming_strings-Einstellung des Zielservers abhängt, die der Prüfer zum Validierungszeitpunkt nicht zuverlässig kennen kann, ist die Verweigerung der Abfrage sicherer als eine Vermutung. Dieses Problem betrifft pgAdmin 4: von der Einführung von _is_query_parens_balanced() vor 9.18.
Verantwortungsvoller Umgang
Verwenden Sie Schwachstelleninformationen nur auf Systemen, die Sie besitzen oder zu deren Testen Sie berechtigt sind. Kitploit verlinkt auf öffentliche Forschungsmetadaten und speichert keinen Exploit-Code oder bösartige Payloads.