Key details

  1. Release: PgBouncer 1.26.1, October 14, 2026.
  2. CVE-2026-107350: SCRAM authentication bypass requiring knowledge of one SCRAM user's password; cross-user login may include backend superusers.
  3. CVE-2026-107349: unauthenticated startup options infinite-loop DoS under specified ignore_startup_parameters configuration.
  4. CVE-2026-107348: unauthenticated packet-buffer growth DoS when max_packet_size exceeds default.
  5. ignore_startup_parameters now takes precedence over tracked parameters; search_path compatibility restored.
  6. No independently confirmed widespread exploitation identified at research time.

What builders should take away

  1. Identify the exact PgBouncer version in every application-to-PostgreSQL path; patch the pooler to 1.26.1.
  2. Treat one compromised low-privilege SCRAM credential as potentially more dangerous on affected poolers, because the vulnerability crosses user identity boundaries.
  3. Review public or untrusted client access to PgBouncer and configuration-specific DoS conditions.
  4. Test startup options, especially search_path, after upgrading.

What changed

On 14 October 2026, PgBouncer maintainers released version 1.26.1 with fixes for CVE-2026-107350, CVE-2026-107349 and CVE-2026-107348. The most consequential issue is a SCRAM authentication state-machine error: if a client knows the password of one SCRAM user, it can under specific circumstances present a second StartupMessage during authentication to a nonexistent database and be accepted as another SCRAM user, potentially including PgBouncer administrators and backend PostgreSQL superusers. The other two bugs can make PgBouncer loop indefinitely on malformed client startup data without authentication. The release also changes how ignored startup parameters take precedence.

Why it matters

PgBouncer is often placed directly between applications and PostgreSQL to pool connections. Its authentication boundary is therefore more sensitive than an ordinary application dependency: an incorrect identity handoff can compromise database role isolation, while an unauthenticated infinite loop can exhaust service capacity. Operators of multi-tenant apps, SaaS backends and shared PostgreSQL clusters should check the PgBouncer binary actually running in front of each database and upgrade rather than relying on the backend's own patch status.

A known SCRAM password could become a different identity

CVE-2026-107350 does not mean any unauthenticated visitor can immediately become a database superuser. The documented prerequisite is knowledge of at least one SCRAM user's password. A second StartupMessage arriving during SCRAM authentication to a nonexistent database could then cause PgBouncer to authenticate that client as a different SCRAM user, including administrators and backend superusers. The distinction matters for assessing exposure: pooled environments with multiple database roles or credentials of differing privilege levels face an identity-boundary failure.

Two denial-of-service paths need no login

CVE-2026-107349 is an infinite loop when the startup options parameter contains an empty option name and ignore_startup_parameters is nonempty without listing options. CVE-2026-107348 is another infinite loop in packet-buffer growth caused by an integer overflow; this one requires max_packet_size to be configured above its default. Both can be triggered by unauthenticated clients, but the configuration preconditions differ. Administrators should not assume every installation has the same exposure to both issues.

The security release also changes parameter precedence

In 1.26.1, ignore_startup_parameters takes precedence over tracked parameters. Setting ignore_startup_parameters = search_path again ignores search_path, matching PgBouncer 1.25 behaviour. That compatibility detail matters for teams relying on startup-session settings and can change how a connection pool handles application-supplied search paths. Test relevant client configuration after the security update.

Patch the connection pooler, not just PostgreSQL

The release and PostgreSQL project's news notice both recommend 1.26.1. Operators should inventory self-hosted and provider-managed PgBouncer instances, determine whether any are externally reachable, test connection/authentication flows, and update the pooler. This is a different product and advisory from the Pgpool-II security release already covered by BTN; the two should not be confused. The official notice does not establish widespread exploitation, so exploit prevalence should not be inferred.

What to watch next

  • Downstream package and managed-service rollout of 1.26.1.
  • Vendor or maintainer clarification of affected configurations and exploitability.
  • Any credible reports of active exploitation or additional authentication regressions.

Still unclear

  • The official announcement does not quantify deployments exposed or report exploitation in the wild.
  • The two DoS vulnerabilities have different configuration preconditions; not every instance necessarily meets them.
  • Some managed-service operators may roll out fixes on a different timetable.

Sources

Direct reading behind this dossier.

2 sources

Discussion

Discussion is reader-contributed. Comments are not part of the BTN dossier or its editorial evidence.

0 visible comments

Join the discussion

Keep comments useful and relevant. Reader contributions may be moderated and are not BTN editorial evidence.

Sign in to comment