CVE-2026-53938: OpenIDC cjose heap buffer overflow in AES Key Wrap decryption

CVE-2026-53938 · Severity: high · CVSS 8.2 · Published 2026-09-09

cjose is a cryptography library used to process and decrypt digitally signed and encrypted tokens (JWEs) commonly used for authentication and secure data exchange. A vulnerability in the AES Key Wrap decryption feature allows an unauthenticated attacker to send a malformed token that triggers a heap memory corruption, causing the application to crash or potentially allowing further compromise of the system.

Vendors: Openidc.

Quick answers

Is CVE-2026-53938 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-53938 being exploited in the wild.
How severe is CVE-2026-53938?
High severity, with a CVSS score of 8.2, published 9 September 2026.
Which products and versions are affected?
Openidc Cjose <= 0.6.2.4.
Is there a fix for CVE-2026-53938?
A patch was published on 2026-06-02: Version 0.6.2.5 released with fix Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-53938 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-53938?
Check whether you run Openidc Cjose 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.

Technical details

The vulnerability is a heap buffer overflow in cjose's JWE decryption path for AES Key Wrap algorithms (A128KW, A192KW, A256KW). The root cause is insufficient validation of the attacker-supplied encrypted_key (JWE Encrypted Key) length before unwrapping it into a fixed-size Content Encryption Key (CEK) buffer. When AES_unwrap_key() is called, it writes raw_len - 8 bytes into a buffer sized for cek_len bytes, causing an out-of-bounds heap write when raw_len &gt; cek_len + 8. The vulnerability is reachable pre-authentication via cjose_jwe_import() and cjose_jwe_decrypt(), which parse fully attacker-controlled JWE input. A remote unauthenticated attacker can exploit this with a crafted JWE to trigger denial of service (crash) or potential heap corruption leading to further memory exploitation depending on allocator state. The fix adds a length check to ensure raw_len == cek_len + 8 before calling AES_unwrap_key(). Patched in version 0.6.2.5.

Affected products

  • OpenIDC cjose <= 0.6.2.4

Timeline

  • 2026-09-09: disclosed
  • 2026-06-02: patched: Version 0.6.2.5 released with fix

References

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