CVE-2026-53712High▾ TwilightOnGres SCRAM silent channel-binding authentication downgrade via unsupported certificate algorithms
▾ Twilight zone — High severity, or a signal on a lesser flaw
impact 41.3 · likelihood 0.1 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
Exploit-prediction probability, daily snapshots since Jul 18.
Disclosure to exploitation, from the record and what we observed since indexing it.
Disclosed via GHSA
0.3%
A flaw in com.ongres.scram:scram-client allows an attacker capable of performing a TLS man-in-the-middle (MITM) attack to silently downgrade a connection from SCRAM-SHA-256-PLUS (with channel binding) to standard SCRAM-SHA-256 (without channel binding), bypassing strict client-side enforcement policies.
This occurs due to a two-part failure in TlsServerEndpoint when a server presents an X.509 certificate using a modern signature algorithm that lacks traditional WITH naming structures (such as Ed25519 or post-quantum algorithms):
NoSuchAlgorithmException, and silently returns an empty byte array via the deprecated getChannelBindingData()` API.This issue only impacts deployments where the downstream application layer explicitly enforces strict channel binding enforcement (e.g., channelBinding=require in pgJDBC).
Drivers operating under a "prefer" or "allow" policy (used by default) are structurally insulated from an unhandled exception since a fallback to standard SCRAM is within their expected configuration.
Update your project configuration to pull in version 3.3 or later of the SCRAM library, which introduces strict exception propagation and explicit policy controls.
If you are interacting with the ScramClient builder API directly (e.g., writing a custom driver or database extension):
TlsServerEndpoint.getChannelBindingData(). Transition immediately to TlsServerEndpoint.getChannelBindingHash(), which correctly propagates NoSuchAlgorithmException up the stack.ChannelBindingPolicy API during client construction. Do not rely on implicit parameter presence to dictate your security boundaries.ScramClient client = ScramClient.builder()
.advertisedMechanisms(serverMechanisms)
.username(user)
.password(pass)
// Explicitly enforce strict boundaries if needed.
.channelBindingPolicy(ChannelBindingPolicy.REQUIRE)
.channelBinding(TlsServerEndpoint.TLS_SERVER_END_POINT, certHash)
.build();
com.ongres.scram:scram-client <= 3.2com.ongres.scram:scram-common <= 3.2Upgrade to a patched release:
com.ongres.scram:scram-client 3.3com.ongres.scram:scram-common 3.3Connected by shared product, vendor, weakness, or advisory.
CVE-2026-54291HighPostgreSQL JDBC Driver: Silent channel-binding authentication downgrade via unsupported certificate algorithms
CVE-2026-78155Critical· 9.9privilege escalation in StackGres operator allows a low-privilege tenant who owns a database to gain administrator privileges
CVE-2026-77560High· 8.1Tinyauth is an authentication and authorization server
CVE-2026-73421NoneNextAuth.js provides authentication for Next.js
CVE-2026-92591Medium· 5.9Craft CMS 5.0.0 through 5.10.12 treats a database connection failure as meaning that Craft is not installed, which makes anonymous installer actions — including install/validate-site — reachable on an installed production site whenever P…
CVE-2026-61595High· 7.7djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance