PostgreSQL JDBC 42.7.14 behebt zwei CVEs, eine füllt Zeilen mit altem SQL
Das Team des PostgreSQL-JDBC-Treibers hat pgjdbc 42.7.14 als Sicherheitsrelease für zwei CVEs veröffentlicht; das PostgreSQL-Projekt meldete es am 9. Oktober. Beide Advisories liegen im GitHub-Repository von pgjdbc und lohnen die vollständige Lektüre, weil jedes eine Konfiguration beschreibt, die richtig aussieht und normal funktioniert, aber falsch ist.
CVE-2026-107314 (GHSA-rhp9-mr79-r74h, mittel, CVSS 5,9): requireAuth, das alles ausschließt, setzt nichts durch. Schließt die Verbindungseigenschaft requireAuth alle sechs dem Treiber bekannten Methoden aus — etwa requireAuth=!password,!md5,!gss,!sspi,!scram-sha-256,!none — oder enthält gar keine Methode (requireAuth=,), dann galt keine Einschränkung, und der Treiber akzeptierte, was der Server verlangte, auch ein Klartext-Passwort. Ein Angreifer zwischen Anwendung und Server konnte Klartext-Anmeldung anfordern und das Passwort abgreifen. Ursache laut Advisory: AuthMethod.parseRequireAuth liefert null sowohl für „nicht gesetzt“ als auch für „nichts erlaubt“, und checkAuth wertet null als „keine Einschränkung“. Positivlisten (requireAuth=scram-sha-256) und teilweise Ausschlüsse wurden immer korrekt durchgesetzt. Nach dem Update lehnt ein solcher Wert jede Verbindung mit SQLState 08004 ab — eine betroffene Anwendung fällt also absichtlich aus; den Wert durch eine Positivliste der tatsächlich genutzten Methoden ersetzen.

CVE-2026-107315 (GHSA-f64h-wr5q-3qf3): Auffüllen mit früherem Verkehr. Sendet eine Anwendung weniger Bytes als angekündigt, füllen die Versionen 42.7.4 bis 42.7.13 die Lücke nicht mit Nullen, sondern mit Bytes früher auf derselben Verbindung gesendeter Nachrichten — und der Server speichert sie. Darunter können SQL-Text und Parameter früherer, fremder Anweisungen sein, bei gepoolten Verbindungen auch die eines anderen Nutzers. Das Advisory nennt die Einstiegspunkte: PreparedStatement.setObject mit einem ByteStreamWriter, dessen getLength() mehr meldet als er schreibt, CopyIn.writeToCopy, PGCopyOutputStream.write, LargeObject.write und Blob.setBytes mit einer Länge über das Array hinaus. In allen Fällen nahm der Treiber den Aufruf ohne Fehler an. Auch GSS-verschlüsselte Verbindungen sind betroffen. Der Fehler kam mit einer Performance-Änderung zur Pufferwiederverwendung in 42.7.4; 42.7.3 und älter füllten mit Nullen.
Was zu tun ist. Auf 42.7.14 aktualisieren. Dann die Konfiguration nach requireAuth-Werten durchsuchen, die nur aus Ausschlüssen bestehen, und den Code nach ByteStreamWriter, COPY und Large-Object-Schreibvorgängen, bei denen die angekündigte Länge getrennt von den Daten berechnet wird — dort können gespeicherte Zeilen bereits fremde Bytes enthalten. Unabhängig davon gilt der Rat des Advisorys: sslmode=verify-full gegen eine vertrauenswürdige CA verhindert überhaupt erst den untergeschobenen Server.
Quellen: PostgreSQL News, „PostgreSQL JDBC 42.7.14 Security update for multiple CVE's“, 9. Oktober 2026 — https://www.postgresql.org/about/news/2026-10-07-postgresql-jdbc-42714-security-update-for-multiple-cves-3399 ; Advisories — https://github.com/pgjdbc/pgjdbc/security/advisories/GHSA-rhp9-mr79-r74h und https://github.com/pgjdbc/pgjdbc/security/advisories/GHSA-f64h-wr5q-3qf3