CVE-2026-71892: CMS key-transport recipient key-size validation never runs for RFC 9709 HKDF-derived keys

Published Oct 3, 2026
·
Updated

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 Software

2 affected components
Bouncy Castle Bouncy Castle for Java<1.86
Bouncy Castle Bouncy Castle for Java FIPS<2.0.13, <2.1.13

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade Bouncy Castle for Java to a version that resolves this vulnerability.

    Fixed in 1.86
  2. Upgrade

    Upgrade bcpkix-fips to a version that resolves this vulnerability.

    Fixed in 2.0.13
  3. Upgrade

    Upgrade bcpkix-fips to a version that resolves this vulnerability.

    Fixed in 2.1.13

Event History

Oct 3, 2026
CVE Published
via MITRE·08:30 AM
Data Sourced
via MITRE·08:30 AM
DescriptionWeakness

Frequently Asked Questions

1

Which deployments are exposed to this issue?

Deployments using Bouncy Castle for Java before 1.86 are affected when they process CMS key-transport EnvelopedData or AuthEnvelopedData using RFC 9709 HKDF-derived content-encryption keys. The issue applies only when the application has opted in to recipient key-size validation with JceKeyTransRecipient.setKeySizeValidation(true).

2

What must an attacker provide to bypass the intended validation?

An attacker needs to supply a key-transport CMS message using id-alg-cek-hkdf-sha256 in which the transported, HKDF-derived content-encryption key has a size that does not match the advertised content-encryption algorithm. The affected code accepts that mismatch instead of enforcing the recovered key size.

3

Does enabling key-size validation mitigate this issue in affected versions?

No. For the affected HKDF-derived key path, validation is silently skipped even when setKeySizeValidation(true) is explicitly enabled.

4

How can I determine whether my application is affected?

Check whether it uses a Bouncy Castle for Java version earlier than 1.86, enables JceKeyTransRecipient key-size validation, and accepts CMS key-transport EnvelopedData or AuthEnvelopedData using id-alg-cek-hkdf-sha256. If all of those conditions apply, the intended key-size check did not run.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203