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).
{
"cna_assigner": "bcorg",
"cwe_ids": [
"CWE-697"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/71xxx/CVE-2026-71892.json",
"unresolved_ranges": [
{
"extracted_events": [
{
"range": [
{
"introduced": "2.0.7"
},
{
"fixed": "2.0.13"
},
{
"introduced": "2.1.0"
},
{
"fixed": "2.1.13"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
}
]
}
]
}{
"extracted_events": [
{
"range": [
{
"introduced": "1.78"
},
{
"fixed": "1.86"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
},
{
"range": [
{
"fixed": "be0a7d925c818ef2f338bcec55178b9b6336dfc3"
}
],
"source": "REFERENCES_COMMIT"
}
]
}
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-71892.json"
[
{
"deprecated": false,
"digest": {
"line_hashes": [
"233053073865261256262707398897418640123",
"239266541323147591071643525384677377037",
"83919457564507238264954193023659474809"
],
"threshold": 0.9
},
"id": "CVE-2026-71892-6ac7d28c",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/bcgit/bc-java/commit/be0a7d925c818ef2f338bcec55178b9b6336dfc3",
"target": {
"file": "pkix/src/test/java/org/bouncycastle/cms/test/NewEnvelopedDataTest.java"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"315010033409212118055574421304138842911",
"122908921083836284355962816996253024005",
"187012734992806815947249353482734482351",
"166204105133335646495802624534614245298"
],
"threshold": 0.9
},
"id": "CVE-2026-71892-bb0d3748",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/bcgit/bc-java/commit/be0a7d925c818ef2f338bcec55178b9b6336dfc3",
"target": {
"file": "pkix/src/main/java/org/bouncycastle/cms/jcajce/JceKeyTransRecipient.java"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "56121212132460458868786810564832878139",
"length": 2854
},
"id": "CVE-2026-71892-bea51009",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/bcgit/bc-java/commit/be0a7d925c818ef2f338bcec55178b9b6336dfc3",
"target": {
"file": "pkix/src/main/java/org/bouncycastle/cms/jcajce/JceKeyTransRecipient.java",
"function": "extractSecretKey"
}
}
]
"2026-10-22T16:39:14Z"