CVE-2026-71883: Bouncy Castle Java LTS native AES cipher key disclosure on array aliasing

CVE-2026-71883 · Severity: info · Published 2026-10-03

Bouncy Castle for Java LTS, a widely-used cryptography library, contains a bug in its native implementations of AES encryption that causes encryption-in-place operations to overwrite ciphertext with the raw encryption key. Applications that encrypt data directly into their own key array instead of a separate output buffer will accidentally expose the encryption key in place of the encrypted message, potentially transmitting or storing sensitive key material.

Technologies: Bouncycastle Bouncy Castle For Java Lts. Vendors: Bouncycastle.

Quick answers

Is CVE-2026-71883 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-71883 being exploited in the wild.
How severe is CVE-2026-71883?
Informational severity, published 3 October 2026.
Which products and versions are affected?
Bouncycastle Bouncy Castle For Java Lts before 2.73.13 (affected from 2.73.4).
Is there a fix for CVE-2026-71883?
Yes: fixed in Bouncy Castle for Java LTS 2.73.13. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-71883 attacked?
It is attacked with local access, in a software library.
Am I affected by CVE-2026-71883?
Check whether you run Bouncycastle Bouncy Castle For Java Lts at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • Fixed in: Bouncy Castle for Java LTS 2.73.13

Technical details

The native packet ciphers for AES-CBC, CCM, CFB, CTR, GCM and GCM-SIV in Bouncy Castle Java LTS (versions 2.73.4 through 2.73.12) use JNI to perform encryption but incorrectly release input arrays (including keys and IVs) in read-write mode, allowing stale copies to overwrite the output buffer. When an application passes the same Java array as both input and output—such as encrypting directly into a KeyParameter.getKey() array—the output buffer is committed first, then the unchanged key bytes are committed over the ciphertext. The pure-Java implementations and streaming native modes are unaffected, as are regular Bouncy Castle distributions without native code.

Affected products

  • Bouncycastle Bouncy Castle for Java LTS before 2.73.13 (affected from 2.73.4)

Timeline

  • 2026-10-03: disclosed

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.