What’s Vulnerable › Vulnerabilities
CVE-2026-71892: CMS key-transport recipient key-size validation never runs for RFC 9709 HKDF-derived keys
- Severity: medium (CVSS 6.9 v4.0)
- Exploited in the wild: not listed in CISA KEV
- EPSS: 0.2% probability of exploitation in the next 30 days
- Public exploit or detection template: none known
- Published: 2026-10-03 · updated 2026-10-06
- Weakness: CWE-697
Description
In Bouncy Castle for Java before 1.86, the opt-in key-size validation on CMS key-transport recipients, org.bouncycastle.cms.jcajce.JceKeyTransRecipient.setKeySizeValidation(true), never ran for a message using RFC 9709 content-encryption key derivation (id-alg-cek-hkdf-sha256). The branch that should have selected the actual content-encryption algorithm carried in the key derivation AlgorithmIdentifier's parameters compared the encrypted-key byte array against the id-alg-cek-hkdf-sha256 object identifier, a comparison between a byte array and an ASN1ObjectIdentifier that is false for every possible input, so the check fell through to a key-size lookup on the outer wrapper OID. That OID identifies a key-derivation construction rather than a cipher and has no registered key size, so the size comparison was skipped entirely. A key-transport EnvelopedData or AuthEnvelopedData whose transported, HKDF-derived content-encryption key did not match the key size of the advertised content-encryption algorithm was therefore accepted even with validation explicitly enabled, silently defeating the only mechanism the API offers for enforcing recovered key size. The recipient now dispatches on the content-encryption AlgorithmIdentifier's algorithm OID, so validation checks the recovered key against the inner content-encryption algorithm. Messages with a matching key size, non-HKDF messages, and recipients that do not enable validation are unaffected. This issue also affects Bouncy Castle for Java FIPS (BC-FJA) before bcpkix-fips 2.0.13 (2.0.X series) and 2.1.13 (2.1.X series).
Affected products
- Legion of the Bouncy Castle Inc. BC-FJA: from 2.0.7 before 2.0.13; from 2.1.0 before 2.1.13 — fixed in 2.0.13, 2.1.13
- Legion of the Bouncy Castle Inc. BC-JAVA: from 1.78 before 1.86 — fixed in 1.86
How to fix
Upgrade to a fixed version: Legion of the Bouncy Castle Inc. BC-FJA 2.0.13, 2.1.13; Legion of the Bouncy Castle Inc. BC-JAVA 1.86. Check the vendor advisory for mitigations.
References
- https://github.com/bcgit/bc-java/commit/be0a7d925c818ef2f338bcec55178b9b6336dfc3
- https://github.com/bcgit/bc-java/wiki/CVE%E2%80%902026%E2%80%9071892
Get alerted when CVE-2026-71892 or the next vulnerability affects your stack