Dev News Daily ENDE

PgBouncer 1.26.0 schliesst drei DoS-Luecken, erreichbar vor dem Login

PgBouncer 1.26.0 erschien am 23. September 2026 und behebt drei CVEs. Alle drei sind Denial of Service, und interessant ist, wer sie erreichen kann:

  • CVE-2026-19888 — ein Absturz, von nicht authentifizierten Clients ausloesbar, verursacht durch eine SCRAM-client-final-message ohne Nonce.
  • CVE-2026-6668 — eine Endlosschleife, ebenfalls ohne Authentifizierung, verursacht durch einen Integer-Ueberlauf in der Logik zum Wachstum des Paketpuffers.
  • CVE-2026-6669 — unbegrenzte Arbeit waehrend des Logins, ausloesbar durch einen boesartigen PostgreSQL-Server, verursacht durch eine unbegrenzte SCRAM-Iterationszahl.

Dieselbe Version bringt Aenderungen ohne Bezug zu den CVEs: search_path und default_transaction_read_only werden nun standardmaessig verfolgt, es gibt die Einstellung pool_idle_timeout, query_wait_timeout laesst sich je Benutzer und Datenbank setzen, ein meson-Build kommt hinzu — und der veraltete Online-Restart (-R) faellt weg.

PgBouncer 1.26.0 schliesst drei DoS-Luecken, erreichbar vor dem Login
PgBouncer 1.26.0 schliesst drei DoS-Luecken, erreichbar vor dem Login — Dev News Daily

Was daran bemerkenswert ist

Zwei der drei liegen vor der Authentifizierung, und das entscheidet, wo PgBouncer stehen darf. Ein Connection-Pooler steht ueblicherweise genau dort, wo ein nicht authentifizierter Client ihn ansprechen kann — das ist seine Aufgabe, vorne zu stehen. «DoS durch nicht authentifizierte Clients» ist hier also kein eingeschraenktes Risiko, sondern der Normalfall.

Die dritte verdient laengeres Nachdenken. CVE-2026-6669 loest der PostgreSQL-Server aus, nicht der Client — eine unbegrenzte SCRAM-Iterationszahl, die beim Login zurueckkommt. Das dreht die uebliche Vertrauensrichtung um: Der Pooler wird gegen das gehaertet, was von vorne kommt, waehrend die Datenbank dahinter als freundlich gilt. Eine nuetzliche Erinnerung daran, dass ein Proxy zwei Seiten hat und auf beiden ein Protokoll parsen muss.

Und der Wegfall von -R ist die Zeile, die man im Betrieb lesen muss. Der Online-Restart war der Mechanismus, Sockets an einen neuen Prozess zu uebergeben, ohne Client-Verbindungen zu verlieren; er ist weg, nicht weiter veraltet. Wessen Deploy-Skript darauf baut, braucht vor diesem Upgrade einen anderen Plan — was 1.26.0 trotz Punktversion zu einer Version macht, fuer die man das Changelog liest.