---
id: "CVE-2026-89312"
kind: "vulnerability"
aliases: ["CVE-2026-89312"]
title: "Go AES-GCM cryptor: wrong-sized nonce crashes the decrypting goroutine"
severity: "medium"
cvss: 6.9
epss: 0.00253
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["go", "jwe", "package", "self-hosted"]
not_affected_if: ["auth-not-using-aesgcm", "no-untrusted-jwe"]
published_at: "2026-10-23T09:17:07+00:00"
first_seen_at: "2026-10-23T21:57:32+00:00"
updated_at: "2026-10-25T03:38:37+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-89312", "first_seen_at": "2026-10-23T21:57:32+00:00"}, {"source": "epss", "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-89312", "first_seen_at": "2026-10-24T07:15:51+00:00"}]
---

# Go AES-GCM cryptor: wrong-sized nonce crashes the decrypting goroutine

AesGcmCryptor.Open passes a caller-supplied nonce to the Go AEAD Open call without checking its length. A JWE with a wrong-sized IV makes the standard library panic, which crashes the goroutine that decrypts it.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check whether the project imports the library that defines `AesGcmCryptor` and calls `Open` on JWE input, for example with `go list -m all`
- Confirm whether untrusted tokens or payloads reach that decrypt path

## Timeline

- 2026-10-23T21:57:32+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-89312
- 2026-10-24T07:15:51+00:00 epss https://api.first.org/data/v1/epss?cve=CVE-2026-89312

## From the sources

`AesGcmCryptor.Open` passed a caller-supplied nonce straight to `cipher.AEAD.Open` without checking its length. The Go standard library **panics** rather than returning an error when a GCM nonce is not exactly `NonceSize()` bytes, so a JWE carrying a wrong-sized IV crashes the decrypting goroutine.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
