CVE-2026-54291
Medium · 5.9CVSS
5.9
EPSS
0.2%
Published
Jul 6, 2026
CISA due date
—
Cloudanix analysis
Some Java applications may think their database connections are protected against interception when, in certain cases, that protection can be silently weakened.
- Exploitation
- Adjacent Network
- Attacker needs
- None
- Complexity
- High
- Impact
- Data Tampering
- Component
- Library
- Class
- Cryptographic Weakness
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The flaw affects pgJDBC versions 42.7.4 through 42.7.11 when applications configure PostgreSQL connections with channelBinding=require. Under specific TLS certificate conditions, the driver can accept a downgrade from SCRAM-SHA-256-PLUS, which provides channel binding, to ordinary SCRAM-SHA-256, which does not. This removes the intended cryptographic binding between the TLS session and the database authentication exchange. An attacker who can intercept and manipulate the TLS connection may therefore bypass the protection designed to prevent man-in-the-middle credential relay or session manipulation. The issue is fixed in pgJDBC 42.7.12.
Why it matters to the business
Applications may believe they are enforcing stronger PostgreSQL authentication protections while actually accepting weaker authentication during a network interception scenario. The most likely business risk is compromise or manipulation of database connections in environments where an attacker can position themselves between the application and PostgreSQL, such as hostile networks, compromised routing paths, misconfigured proxies, or malicious infrastructure. Although exploitation requires a privileged network position and specific certificate behavior, the affected driver is widely used in Java applications, so organizations should treat this as an important dependency update for systems relying on channel binding for database connection integrity.
How an attack unfolds
An attacker first obtains a position where they can intercept or influence TLS traffic between a Java application using pgJDBC and a PostgreSQL server. The application must be using an affected pgJDBC release and must be configured with channelBinding=require, expecting SCRAM-SHA-256-PLUS channel binding to prevent man-in-the-middle attacks. The attacker presents or causes use of a TLS certificate whose signature algorithm does not produce a tls-server-end-point channel-binding hash. Due to behavior in the bundled SCRAM client, an empty channel-binding value is returned instead of causing authentication failure. pgJDBC then incorrectly relies on the server advertising a PLUS mechanism rather than verifying that channel binding is actually negotiated and non-empty. As a result, the connection can proceed using SCRAM-SHA-256 without channel binding, silently removing the intended MITM protection. From there, the attacker may relay, tamper with, or observe authentication-related traffic depending on their network position and the surrounding TLS and certificate trust conditions.
How to fix it
Upgrade pgJDBC to version 42.7.12 or later wherever the PostgreSQL JDBC Driver is used. Review direct and transitive Java dependencies for org.postgresql:postgresql versions 42.7.4 through 42.7.11, including dependencies packaged inside application fat JARs, containers, build artifacts, and vendor-provided applications. If immediate upgrade is not possible, reduce exposure by preventing untrusted network paths between applications and PostgreSQL, enforcing strict server certificate validation, avoiding TLS interception on database connections, restricting database connectivity to trusted private networks, and monitoring for unexpected certificate or authentication mechanism changes. Do not rely on channelBinding=require as a complete mitigation until the driver is updated, because this vulnerability specifically undermines that setting in affected versions.
How to confirm the fix worked
Confirm that all deployed Java applications and packaged artifacts use pgJDBC 42.7.12 or later. Validate dependency manifests such as Maven pom.xml, Gradle lockfiles, SBOMs, container image inventories, and runtime classpaths for org.postgresql:postgresql. Test representative database connections with channelBinding=require and verify that connections fail closed when channel binding cannot be established. Where feasible, inspect driver debug output or controlled test traces to confirm SCRAM-SHA-256-PLUS is negotiated with valid channel binding rather than falling back to SCRAM-SHA-256. Also verify that PostgreSQL connections use trusted TLS certificates and are not traversing unauthorized TLS interception points.
Typical attack path
- Identify a Java application using pgJDBC 42.7.4 through 42.7.11 to connect to PostgreSQL.
- Confirm or infer that the application uses SCRAM authentication with channelBinding=require.
- Gain a man-in-the-middle position between the application and the PostgreSQL server, such as through compromised network infrastructure, malicious proxying, DNS/routing manipulation, or control of an intermediate TLS termination path.
- Trigger a TLS certificate condition where the certificate signature algorithm has no usable tls-server-end-point channel-binding hash.
- Cause the pgJDBC authentication flow to proceed despite an empty channel-binding value.
- Downgrade the effective authentication protection from SCRAM-SHA-256-PLUS to SCRAM-SHA-256 without channel binding.
- Use the resulting loss of MITM protection to relay or interfere with the database authentication/session according to the attacker’s network capabilities.
How to detect it
There is unlikely to be a clear, product-specific exploitation artifact because the issue is a silent authentication downgrade in a client library. Investigations should focus on exposure plus network and authentication anomalies. Review application dependency inventories for pgJDBC 42.7.4 through 42.7.11 and application configuration for channelBinding=require. Examine application logs, JDBC debug logs, PostgreSQL connection logs, TLS inspection logs, proxy logs, DNS logs, and network packet captures around sensitive database connection windows. Look for unexpected use of SCRAM-SHA-256 where SCRAM-SHA-256-PLUS was expected, certificate chains or signature algorithms that changed unexpectedly, database connections routed through unusual hosts, TLS interception appliances, new proxies, or source addresses inconsistent with normal application-to-database paths. If packet capture or TLS metadata is available, compare historical and current certificate fingerprints, issuers, subject names, and negotiated authentication behavior. Treat evidence of unexplained certificate changes, routing changes, or authentication mechanism downgrade on affected pgJDBC versions as suspicious and investigate associated database activity for unauthorized reads, writes, or session anomalies.
- org.postgresql:postgresql:42.7.4
- org.postgresql:postgresql:42.7.5
- org.postgresql:postgresql:42.7.6
- org.postgresql:postgresql:42.7.7
- org.postgresql:postgresql:42.7.8
- org.postgresql:postgresql:42.7.9
- org.postgresql:postgresql:42.7.10
- org.postgresql:postgresql:42.7.11
- postgresql-42.7.4.jar
- postgresql-42.7.5.jar
- postgresql-42.7.6.jar
- postgresql-42.7.7.jar
- postgresql-42.7.8.jar
- postgresql-42.7.9.jar
- postgresql-42.7.10.jar
- postgresql-42.7.11.jar
- channelBinding=require
- SCRAM-SHA-256-PLUS
- SCRAM-SHA-256
- com.ongres.scram
What your security team should do
- Prioritize upgrading org.postgresql:postgresql to 42.7.12 or later in applications that connect to PostgreSQL using SCRAM authentication and channelBinding=require.
- Search software inventories, SBOMs, build systems, container images, and application packages for pgJDBC versions 42.7.4 through 42.7.11.
- Identify high-value applications where a database connection compromise could alter sensitive data, financial records, identity data, audit logs, or operational workflows, and remediate those first.
- Review network paths between application tiers and PostgreSQL servers for unauthorized proxies, TLS interception devices, DNS manipulation risk, or routing exposure.
- Enable or review PostgreSQL, application, and network telemetry for unexpected authentication mechanism changes, unusual TLS certificate attributes, and connection attempts from unexpected intermediaries.
- If using dependency management, pin or constrain pgJDBC to 42.7.12 or later and rebuild affected artifacts rather than only updating source repositories.
- Because this is not currently listed in CISA KEV and has low EPSS, balance urgency with exposure: prioritize internet-adjacent, shared-network, or high-trust database paths over isolated internal-only deployments.
The record
pgjdbc is an open source postgresql JDBC Driver. In releases 42.7.4 through 42.7.11, channelBinding=require connections can be silently downgraded from SCRAM-SHA-256-PLUS with channel binding to plain SCRAM-SHA-256 without it, losing the man-in-the-middle protection the setting is meant to guarantee. An attacker who can intercept the TLS connection can trigger the downgrade with a certificate whose signature algorithm has no tls-server-end-point channel-binding hash, because the bundled com.ongres.scram:scram-client returns an empty byte array instead of failing and pgJDBC ScramAuthenticator checks only that the server advertised a PLUS mechanism, without rejecting the empty binding or checking that the negotiated mechanism uses channel binding. This issue is fixed in version 42.7.12.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-88831 BusyBox httpd IP deny rules with invalid CIDR prefix lengths fail open, leaving a parsed… CWE-636
- CVE-2026-81379 Not failing securely ('failing open') in Visual Studio Code allows an unauthorized… CWE-636
- CVE-2026-85649 (Holloway) Chew, Kean Ho's Actualizer v1.2.0 and earlier contains a fail-open password… CWE-636
- CVE-2026-18329 Description NGINX JavaScript (njs) and QuickJS (qjs) engines have a vulnerability when a… CWE-636
- CVE-2026-82744 Not Failing Securely (Failing Open) vulnerability in ash-project ash skips an Ash.Reactor… CWE-636
- CVE-2026-46482 ### Impact The registration component does not validate the text-based _Security… CWE-636
- CVE-2026-70452 rsync 3.1.0 before 3.5.0 contains an access control bypass vulnerability that allows… CWE-636
- CVE-2026-53913 Improper Authentication, Missing Authentication for Critical Function, Not Failing… CWE-636