Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCompromise or operate a pooled PostgreSQL backend
-
DeliveryPgBouncer initiates SCRAM auth to backend
-
ExploitBackend returns oversized key-derivation iteration count
-
ExecutionPgBouncer runs uninterruptible derivation in single process
-
ImpactCPU exhausted, pooler stalls for all tenants
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires PgBouncer configured to authenticate to backends via SCRAM, and the attacker must control or compromise a PostgreSQL backend server that the PgBouncer instance pools - the malicious iteration count is supplied by the backend during PgBouncer's own outbound SCRAM authentication, not by a frontend client. Exploitation is limited by this precondition (AC:H): an ordinary external client cannot trigger it, and it applies to frontend builds where the derivation cannot be interrupted. Impact is amplified because PgBouncer's single-process architecture means one affected backend denies service to all pooled databases and clients. No fix beyond upgrading past 1.25.2 mitigates the missing iteration-count upper bound. |
| Impact | This is a genuine but bounded availability risk, not a high-priority mass-exploitation issue. The CVSS 5.9 (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H) correctly captures a pure denial-of-service with no confidentiality or integrity impact. The critical nuance the raw vector understates is the threat model: the 'attacker' is a malicious or compromised PostgreSQL BACKEND that PgBouncer authenticates to via SCRAM - not an ordinary external client. PR:N is technically defensible (no authentication to PgBouncer's frontend is bypassed) but AC:H reflects the real precondition that an adversary must already control a backend database server in the pool. No EPSS score, KEV listing, or public POC was provided, and the sole reference is the vendor changelog - so there is no evidence of active exploitation: no public exploit identified at time of analysis. The severity multiplier is architectural: because PgBouncer serves all pooled databases and clients from a single process and the key-derivation loop cannot be interrupted in frontend builds, one poisoned backend can stall the entire pooler, so the blast radius extends to every unrelated tenant. Verify the exact fixed version against the vendor changelog, which was not directly retrievable during analysis. |
| Exploit ScenarioDerived | An attacker who compromises (or maliciously operates) a PostgreSQL backend that a shared PgBouncer instance pools returns an extremely large SCRAM key-derivation iteration count during PgBouncer's authentication to that backend. PgBouncer performs the uninterruptible derivation in its single process, pinning CPU and blocking connection servicing for every other database and client in the pool. No public exploit code is identified; exploitation requires the high-complexity precondition of controlling a backend server. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 23, 2026
Unbounded CPU consumption in PgBouncer through 1.25.2 allows a malicious or compromised PostgreSQL backend to monopolize the pooler's single process by returning an arbitrarily large SCRAM key-derivation iteration count during PgBouncer's own outbound authentication, denying service to every database and client it pools. The prerequisite is a hostile or compromised backend combined with SCRAM-based backend authentication (CVSS 3.1: AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H? - assessed as A:H, C:N/I:N, 5.9), so an ordinary external client cannot trigger it, and the derivation cannot be interrupted in frontend builds such as PgBouncer. No public exploit code has been identified and there is no confirmed active exploitation; remediation is to upgrade past 1.25.2 per the vendor changelog.
RemediationAI
Upgrade PgBouncer to a release later than 1.25.2 (the affected range is 'through 1.25.2'; consult https://www.pgbouncer.org/changelog.html for the exact patched version for your distribution), since the missing upper bound on the SCRAM iteration count cannot be configured away. Until the upgrade is applied, the effective compensating controls are structural rather than configuration-based: ensure PgBouncer only ever connects to PostgreSQL backends you fully control and trust, and treat any compromise or untrusted control of a pooled backend as sufficient to take the pooler down for all of its clients, since an external frontend client cannot reach this code path. If your deployment can tolerate it, switching backend authentication away from SCRAM to md5 or a locally trusted mechanism (socket/peer authentication where the backend is co-located) removes the vulnerable derivation path, at the cost of weaker backend credential protection and possible conflicts with modern PostgreSQL authentication defaults. Do not rely on request timeouts alone: the assessment notes the derivation cannot be interrupted in frontend builds, so a stalled derivation is not preempted. Prioritize patching poolers that pool backends across trust boundaries or that are shared by multiple tenants.
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
SCRAM (Salted Challenge Response Authentication Mechanism, RFC 5802) has the server send an iteration count in its first message, and the client must perform that many rounds of salted-password derivation (PBKDF2/HMAC-based, as in SCRAM-SHA-256) before responding. PgBouncer acts as a client when it authenticates to PostgreSQL backends using SCRAM, but it never enforced an upper bound on the iteration count supplied by the server. CWE-400 (Uncontrolled Resource Consumption) captures the root cause: a remote, attacker-influenced input controls the amount of computation performed, and because the derivation loop cannot be interrupted in frontend builds such as PgBouncer, the process simply burns CPU until the work completes. The affected CPE is a wildcard for PgBouncer (cpe:2.3:a:n/a:pgbouncer:*:*:*:*:*:*:*:*), consistent with all versioned builds at or below 1.25.2 being in scope. Impact is amplified by PgBouncer's single-process, event-driven architecture: a single stalled derivation blocks the pooler from serving every client and database it multiplexes, so the failure of one backend is not contained to that backend.
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:H/PR:N/UI:N/S:U/C:N/I:N/A:H
AC:H because a backend must be attacker-controlled; PR:N since no PgBouncer-side auth is bypassed; C:N/I:N with A:H as impact is pure availability loss.
Primary rating from Vendor (PostgreSQL).
CVSS VectorVendor: PostgreSQL
DescriptionCVE.org
Missing upper bound on the key derivation iteration count accepted during SCRAM authentication to a backend server in PgBouncer through 1.25.2 allows a malicious or compromised PostgreSQL backend to cause uncontrolled CPU consumption in PgBouncer. The resulting key derivation cannot be interrupted in frontend builds such as PgBouncer. Because PgBouncer serves all clients from a single process, one backend can in this way stop it from serving traffic for every other database and client it is pooling, so the failure of a single backend is not contained.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
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
Authentication bypass in PgBouncer 1.17.0 through 1.26.0 allows an authenticated attacker who knows a valid password for
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
EUVD-2026-85364
GHSA-58j7-v2vx-r29w
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB