{"id":"CVE-2026-54291","summary":"Silent channel-binding authentication downgrade via unsupported certificate algorithms","details":"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.","aliases":["BIT-postgresql-jdbc-driver-2026-54291","GHSA-j92g-9f8w-j867"],"modified":"2026-07-14T18:34:58.477389Z","published":"2026-07-06T18:55:01.675Z","database_specific":{"cwe_ids":["CWE-636","CWE-757"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/54xxx/CVE-2026-54291.json","cna_assigner":"GitHub_M"},"references":[{"type":"WEB","url":"https://github.com/ongres/scram/releases/tag/3.3"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/54xxx/CVE-2026-54291.json"},{"type":"ADVISORY","url":"https://github.com/pgjdbc/pgjdbc/security/advisories/GHSA-j92g-9f8w-j867"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-54291"},{"type":"FIX","url":"https://github.com/pgjdbc/pgjdbc/commit/77df98e4e66c12936ded3478a0954f6f580bad99"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/ongres/scram","events":[{"introduced":"0"},{"fixed":"f6bd6e20e34d4989ee34b06825791657a2cfd4fe"}],"database_specific":{"source":"REFERENCES"}},{"type":"GIT","repo":"https://github.com/pgjdbc/pgjdbc","events":[{"introduced":"a23fa7077f220180e2db365abf3144f84b6033fb"},{"fixed":"77df98e4e66c12936ded3478a0954f6f580bad99"}],"database_specific":{"extracted_events":[{"introduced":"42.7.4"},{"fixed":"42.7.12"}],"source":["AFFECTED_FIELD","CPE_RANGE","REFERENCES"],"cpe":"cpe:2.3:a:postgresql:postgresql_jdbc_driver:*:*:*:*:*:*:*:*"}}],"versions":["3.2","3.1","3.0","2.1","2.0","2.0-beta3","2.0-beta2","2.0-beta1","1.9-beta1","1.0.0-beta.2","REL42.7.11","REL42.7.10","REL42.7.9","REL42.7.8","REL42.7.7-rc1","REL42.7.7","REL42.7.6-rc1","REL42.7.6","REL42.7.5-rc1","REL42.7.5","REL42.7.4-rc1","REL42.7.4"],"database_specific":{"source":"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-54291.json","vanir_signatures_modified":"2026-07-14T18:34:58Z","vanir_signatures":[{"deprecated":false,"digest":{"function_hash":"255324032069075513890916819560084082487","length":808},"id":"CVE-2026-54291-d94ad128","signature_type":"Function","signature_version":"v1","source":"https://github.com/pgjdbc/pgjdbc/commit/77df98e4e66c12936ded3478a0954f6f580bad99","target":{"file":"pgjdbc/src/main/java/org/postgresql/core/v3/ScramAuthenticator.java","function":"initializeScramClient"}},{"deprecated":false,"digest":{"line_hashes":["123880665214516780252918597775136568935","149726826253594934118541644604655274094","286914143497087767352230138395380628590","199966273071929047579202639851243169016","71641125343552755547338499857968937615","333346545399287525245030715603696473484","158406048174994765231920278618545760524"],"threshold":0.9},"id":"CVE-2026-54291-da2f72fc","signature_type":"Line","signature_version":"v1","source":"https://github.com/pgjdbc/pgjdbc/commit/77df98e4e66c12936ded3478a0954f6f580bad99","target":{"file":"pgjdbc/src/main/java/org/postgresql/core/v3/ScramAuthenticator.java"}},{"target":{"file":"pgjdbc/src/main/java/org/postgresql/core/v3/ScramAuthenticator.java","function":"getChannelBindingData"},"deprecated":false,"digest":{"length":1023,"function_hash":"162842916170076529557392742692671005205"},"id":"CVE-2026-54291-e8250569","signature_type":"Function","signature_version":"v1","source":"https://github.com/pgjdbc/pgjdbc/commit/77df98e4e66c12936ded3478a0954f6f580bad99"}]}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:L/SA:N"}]}