CVE-2026-89318: gose JweRsaKeyEncryptionDecryptorImpl panic on invalid IV length

CVE-2026-89318 · Severity: info · Published 2026-10-23

The gose library, which handles JWE (JSON Web Encryption) decryption for Go applications, crashes when processing a malicious JWE message with an incorrectly sized initialization vector. An attacker who knows the recipient's public key can craft such a message to crash the application's decryption process, causing a denial of service without needing authentication or a valid prior message.

Technologies: Eclipse KeyPont Gose. Vendors: Eclipse KeyPont.

Quick answers

Is CVE-2026-89318 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-89318 being exploited in the wild.
How severe is CVE-2026-89318?
Informational severity, published 23 October 2026.
Which products and versions are affected?
Eclipse KeyPont Gose 0.8.0 through 1.0.0-rc3; Thales Group Gose 0.8.0 through 0.13.0-rc1.
Is there a fix for CVE-2026-89318?
Yes: fixed in eclipse-keypont/gose v1.0.0-rc4 and later. Until then: Validate that the decoded initialization vector is exactly 12 bytes before passing a JWE to JweRsaKeyEncryptionDecryptorImpl.Decrypt. Additionally, recover panics at the request boundary to limit the blast radius; however, this does not address the underlying defect.</anigation> <parameter name="timeline">[ { "kind": "disclosed", "at": "2026-09-01", "note": "Advisory published by Nicolas-Peiffer" }, { "kind": "advisory", "at": "2026-10-23", "note": "CVE-2026-89318 published" } ] Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-89318 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-89318?
Check whether you run Eclipse KeyPont Gose or Thales Group Gose 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: eclipse-keypont/gose v1.0.0-rc4 and later

Validate that the decoded initialization vector is exactly 12 bytes before passing a JWE to JweRsaKeyEncryptionDecryptorImpl.Decrypt. Additionally, recover panics at the request boundary to limit the blast radius; however, this does not address the underlying defect.</anigation> <parameter name="timeline">[ { "kind": "disclosed", "at": "2026-09-01", "note": "Advisory published by Nicolas-Peiffer" }, { "kind": "advisory", "at": "2026-10-23", "note": "CVE-2026-89318 published" } ]

Technical details

The JweRsaKeyEncryptionDecryptorImpl.Decrypt function passes the JWE's initialization vector directly to Go's cipher.AEAD.Open without validating its length. The Go standard library panics rather than returning an error when a GCM nonce is not exactly NonceSize() bytes (12 bytes), causing the decrypting goroutine to crash. The panic occurs after the content-encryption key is unwrapped but before authentication tag verification, allowing any holder of the recipient's public JWK to trigger it.

Affected products

  • Eclipse KeyPont gose 0.8.0 through 1.0.0-rc3
  • Thales Group gose 0.8.0 through 0.13.0-rc1

References

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