Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with known auth_file password
-
DeliverySend second StartupMessage to non-existent database
-
ExploitSwitch target identity mid-SCRAM handshake
-
ExecutionVerify SCRAM proof against original user's keys
-
ImpactObtain session as admin or backend superuser
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication mechanism validation
MITRE ATT&CK
2 techniques across 2 tactics: Defense Evasion, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires that PgBouncer (version 1.17.0-1.26.0) is configured to use SCRAM authentication with an auth_file, and that the attacker already knows the valid password of at least one user listed in that auth_file (PR:L). The core trigger is PgBouncer's failure to reject a second StartupMessage sent during the SCRAM exchange against a non-existent database, which switches the authenticating identity while still verifying against the first user's keys. Limiting factors: the target victim users must authenticate via SCRAM; the attacker must hold one legitimate auth_file credential; and benefit is greatest where high-value targets (PgBouncer admin users or backend superusers) are reachable through the same pooler. It does not grant access to users not authenticating via SCRAM. |
| Impact | This is a genuine high-priority issue for any environment running PgBouncer as a PostgreSQL connection pooler. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N) describes a network-reachable, low-complexity attack requiring only low privileges - specifically, knowledge of the password of ANY single user listed in auth_file - to pivot into logging in as any SCRAM-authenticated user, including PgBouncer admin users and backend superusers. The full C:H/I:H/A:H impact (yielding effective superuser on the backend database) makes the 8.8 base score credible rather than inflated. Tempering the raw score: exploitation is not fully unauthenticated - the attacker must already possess valid credentials for one auth_file user (PR:L), so this is primarily a privilege-escalation / lateral-movement primitive for an insider or an attacker who has already harvested one credential, not a pure remote-unauthenticated takeover. No EPSS score, no CISA KEV listing, and no public POC were provided in the input, so there is no current evidence of active or widespread exploitation; the risk is driven by the severity of the outcome and the low bar for an already-credentialed attacker rather than by observed in-the-wild activity. No signals are directly conflicting, but the absence of exploitation telemetry (EPSS/KEV) means prioritization should rest on whether PgBouncer is internet-exposed or multi-tenant in your environment. |
| Exploit ScenarioDerived | An attacker (or malicious tenant) who holds the password of a single low-privilege user listed in PgBouncer's auth_file connects over the network and begins a SCRAM authentication handshake. Mid-exchange they send a second StartupMessage naming a non-existent database, which silently switches the identity being logged in as to a higher-privileged target (e.g., a PgBouncer admin or backend superuser) while PgBouncer still validates the SCRAM proof against the original, known user's keys. The handshake completes and the attacker obtains a session as the privileged target. No public exploit code was identified in the provided data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
Authentication bypass in PgBouncer 1.17.0 through 1.26.0 allows an authenticated attacker who knows a valid password for at least one user in auth_file to impersonate another user that authenticates via SCRAM, including PgBouncer admin users and backend superusers, by sending a second StartupMessage during the SCRAM exchange against a non-existent database. The issue is rated CVSS 8.8 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) and stems from improper authentication (CWE-287). No public exploit identified at time of analysis, and the flaw does not grant access to users not authenticating via SCRAM.
RemediationAI
Patch status: Patch available per vendor advisory; the exact fixed version is not specified in the supplied data, so consult https://www.pgbouncer.org/changelog.html and upgrade to the first release after 1.26.0. If immediate upgrade is not possible, reduce exposure by restricting network access to the PgBouncer port to trusted application hosts, avoiding shared credentials in auth_file, and separating PgBouncer admin users or backend superuser access from general application pools. A temporary compensating control is to avoid SCRAM for auth_file users where feasible, but this trades away SCRAM's password-protection properties and should be time-bound. Rotate any auth_file passwords that may have been exposed, and monitor for anomalous SCRAM authentication attempts or second StartupMessage behavior; these measures do not fully eliminate the bypass because the core flaw is fixed only by upgrading.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
PgBouncer is a lightweight connection pooler for PostgreSQL that accepts client connections and authenticates them using an auth_file or other configured methods, including SCRAM-SHA-256 exchanges. The vulnerability arises because PgBouncer fails to reject a second StartupMessage during an in-progress SCRAM authentication when the requested database does not exist; the protocol state then switches the effective username while still validating the SCRAM proof against the first user's stored keys. This is an authentication logic flaw (CWE-287), not a memory-safety issue. Affected versions are 1.17.0 through 1.26.0; the CPE entry cpe:2.3:a:n/a:pgbouncer:*:*:*:*:*:*:*:* indicates broad PgBouncer coverage in the feed. The CVSS vector PR:L reflects that a valid credential for some auth_file user is required before impersonation.
Know when Pgbouncer gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Network-reachable with a single known auth_file credential (PR:L) and no user interaction; low complexity to resend a StartupMessage, yielding superuser-level C/I/A on the backend.
Primary rating from Vendor (PostgreSQL).
CVSS VectorVendor: PostgreSQL
Lifecycle Timeline
2DescriptionCVE.org
Improper authentication in PgBouncer 1.17.0 through 1.26.0 allows a remote attacker who knows the password of a user listed in auth_file to log in as any other user that authenticates using SCRAM, including PgBouncer admin users and backend superusers. A second StartupMessage sent during SCRAM authentication against a non-existent database is not rejected and switches the user being logged in as, while the SCRAM exchange is still verified against the keys of the first user.
Articles & Coverage 1
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
PgBouncer before 1.5.5 allows remote attackers to cause a denial of service (NULL pointer dereference and crash) by send
Stack-based buffer overflow in PgBouncer before 1.25.2 lets a malicious or impersonated PostgreSQL backend corrupt the p
A flaw was found in c-ares library, where a missing input validation check of host names returned by DNS (Domain Name Se
PgBouncer 1.6.x before 1.6.1, when configured with auth_user, allows remote attackers to gain login access as auth_user
Password can be used past expiry in PgBouncer due to auth_query not taking into account Postgres its VALID UNTIL value,
When PgBouncer is configured to use "cert" authentication, a man-in-the-middle attacker can inject arbitrary SQL queries
Unauthenticated remote attackers can render PgBouncer 1.20.0 through 1.26.0 unresponsive by sending a single crafted Sta
A crafted oversized input to the PgBouncer connection pooler (versions through 1.25.2) triggers an integer overflow in p
Unauthenticated remote attackers can crash PgBouncer through 1.25.2 by sending a malformed SCRAM client-final-message th
Untrusted search path in auth_query connection handler in PgBouncer before 1.25.1 allows an unauthenticated attacker to
Remote denial-of-service in PgBouncer versions before 1.25.2 allows unauthenticated attackers to crash the connection po
Denial of service in PgBouncer before 1.25.2 lets a malicious or malfunctioning PostgreSQL backend crash the connection
EUVD-2026-101500
GHSA-qcxp-3cx5-3f3g
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB