Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSubmit crafted JWE with wrong-sized IV
-
DeliveryDecryptor forwards nonce to AesGcmCryptor.Open unchecked
-
ExploitGo GCM Open panics on bad nonce length
-
ExecutionDecrypting goroutine crashes
-
ImpactFailed request or terminated process
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Exception handling completeness
|
| Exploitation Conditions | Exploitation requires a gose-backed decryptor that accepts attacker-submitted JWE tokens (e.g. via JweDirectDecryptorAeadImpl.Decrypt or a direct caller of AesGcmCryptor.Open). The attacker must supply a kid header matching a key already present in the decryptor's keystore (kids are normally public, appearing in every emitted JWE), set alg=dir with an enc matching that key, and encode an initialization vector whose decoded length is anything other than 12 bytes for AES-GCM. No key material, credentials, or prior valid message is needed - the nonce arrives directly from the wire. The principal LIMITING factor on impact (not on triggering) is the caller's panic posture: under net/http the panic is recovered per request and only that request fails, whereas a worker, daemon, or CLI that does not recover has its entire process terminated. A documented workaround is to validate that the decoded IV is exactly 12 bytes before handing the JWE to gose; recovering panics at the request boundary limits blast radius but does not fix the underlying defect, and the vendor states upgrading is the complete remediation. |
| Impact | This is a genuine but bounded denial-of-service issue (CWE-248, uncaught exception). The signals are internally consistent rather than conflicting: the supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes remote, low-complexity, unauthenticated reachability with impact limited to availability of the vulnerable system only (VA:L; VC:N/VI:N/VA mapped low, VI/VC none), which matches the mechanism - the panic fires before any plaintext is produced, so confidentiality and integrity are untouched. The vuln.today decision label is 'this_month', not 'act_now' or 'emergency', consistent with a medium-severity DoS. No CISA KEV listing and no EPSS score were provided, so there is no evidence of active or at-scale exploitation; absence of these is not itself a signal of safety but does argue against emergency treatment. The score of 6.9 is driven almost entirely by easy remote reachability rather than impact depth, so raw severity overstates real-world priority for most deployments. The one caveat that raises risk: the advisory explicitly notes the A:L score assumes a net/http caller that recovers panics per request (effect = failed request); a worker, daemon, or CLI that does not recover will have the whole process terminated, which operators in that category should treat as more serious than the headline score suggests. Verify your own caller's panic-recovery posture before accepting the A:L framing. |
| Exploit ScenarioDerived | An attacker who can submit a JWE to any service that decrypts using gose crafts a compact JWE whose initialization vector decodes to a length other than 12 bytes (e.g. 11 or 32 bytes), sets a kid matching a key in the decryptor's keystore (kids are typically public) and alg=dir with a matching enc. On the decryption path the wrong-sized nonce is forwarded unchecked to Go's crypto/cipher GCM Open, which panics, crashing the decrypting goroutine. A public proof-of-concept reproducer exists in the GHSA advisory and was executed to confirm the panic on nonce lengths 0, 1, 7, 11, 13 and 32; low attack complexity and no required credentials make this trivial to trigger. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
Denial of service in the Eclipse Keypont gose Go JWE library (published historically as github.com/ThalesGroup/gose) where AesGcmCryptor.Open forwards a caller-supplied, wire-derived nonce to crypto/cipher AEAD Open without a length check, causing the Go standard library to panic instead of returning an error. Any party able to submit a compact JWE to a gose-backed decryptor can trigger it without key material or credentials (CVSS 4.0 base 6.9; assessed CVSS 3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L) - they only need a kid matching a key in the decryptor's keystore, alg=dir with a matching enc, and an IV whose decoded length is anything other than 12 bytes. Impact is bounded by the caller's panic posture: under net/http the panic is recovered per request and only that request fails, while a worker, daemon or CLI without recovery has its process terminated; confidentiality and integrity are unaffected because the panic occurs before plaintext is produced. No public exploit code was identified at time of analysis, although the advisory ships a unit-test reproducer that demonstrates the panic; this_month priority, not KEV-listed.
RemediationAI
Vendor-released patch: upgrade to github.com/eclipse-keypont/gose v1.0.0-rc4 or later, which adds the nonce-length guard (ErrInvalidNonce) and authentication-tag length guard (ErrInvalidAuthenticationTag) from commit e4ab198 (merged as 692c25c). Consumers still on github.com/ThalesGroup/gose must change the module path, not merely bump the version - that path terminates at v0.13.0-rc1, remains vulnerable, and is deprecated, so go get -u will not remediate; the required edit is replacing github.com/ThalesGroup/gose v0.13.0-rc1 with github.com/eclipse-keypont/gose v1.0.0-rc4 in go.mod. Per the advisory, upgrading is the complete remediation. The documented workaround is to validate the decoded initialization vector before handing a JWE to gose, rejecting any token whose IV is not exactly 12 bytes for the AES-GCM algorithms; recovering panics at the request boundary limits blast radius but does not address the underlying defect, and the trade-off is that per-request recovery still yields a failed request for each malicious token while non-recovering workers, daemons and CLIs remain exposed to process termination without either measure. Advisory and patch details: https://github.com/eclipse-keypont/gose/security/advisories/GHSA-xx6h-2jgg-93m2
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The defect is an uncaught-exception class bug (CWE-248) in the Go implementation of AES-GCM JWE handling. Go's crypto/cipher GCM mode requires a nonce of exactly NonceSize() bytes (12 for the standard 96-bit IV) and panics with "crypto/cipher: incorrect nonce length given to GCM" rather than returning an error when that invariant is violated. In gose, AesGcmCryptor.Seal has always guarded the nonce length and returns ErrInvalidNonce, but the sibling AesGcmCryptor.Open - the method that actually handles untrusted input - omitted the equivalent check before calling cryptor.aead.Open. The tainted value flows from the attacker-supplied compact JWE: strings.Split on the token, base64.RawURLEncoding.DecodeString of parts[2] in jose/jwe.go produces jweStruct.Iv, which reaches key.Open(jose.KeyOpsDecrypt, jweStruct.Iv, ...) in JweDirectDecryptorAeadImpl.Decrypt and then AesGcmCryptor.Open, with no length validation anywhere between the decode and the AEAD call. RFC 7516 §5.2 step 10 requires the IV to be the correct size for the algorithm and to be rejected otherwise, so the panic is a library defect rather than spec-mandated behaviour. The fix commit e4ab198 (merged as 692c25c) mirrors Seal's guard, returning ErrInvalidNonce for wrong-sized nonces and additionally rejecting wrong-sized authentication tags with ErrInvalidAuthenticationTag - the tag case did not panic but previously produced a silently malformed ciphertextAndTag and an opaque authentication failure. The advisory also notes that JweRsaKeyEncryptionDecryptorImpl.Decrypt calls cipher.AEAD.Open directly and exhibits the same wrong-nonce panic, a related call site not claimed by this advisory.
Know when Eclipse Keypont Gose gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Nonce arrives unauthenticated from the wire so AV:N/AC:L/PR:N/UI:N; panic occurs before plaintext so C:N/I:N; A:L reflects the recovered-request case the advisory scores (higher for non-recovering callers).
Primary rating from Vendor (eclipse).
CVSS VectorVendor: eclipse
Lifecycle Timeline
1DescriptionCVE.org
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.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
More in Eclipse Keypont Gose
View allThe AES-CBC-with-HMAC JWE path in Eclipse KeyPont gose (published as github.com/ThalesGroup/gose v0.9.0 through v0.13.0-
Denial of service in Eclipse KeyPont's `gose` JOSE/JWT Go library: `JwtClaims.MarshalJSON` builds a runtime struct with
CPU exhaustion in the Go JOSE library Eclipse KeyPont gose (formerly github.com/ThalesGroup/gose) allows a hostile JWK/J
Eclipse KeyPont GoSE's JWE decryptor panics instead of returning an error when a compact JWE carries an incorrectly size
Denial of service in Eclipse KeyPont Gose affects the AES-CBC-HMAC direct decryption path (NewJweDirectDecryptorBlock) i
Denial of service in Eclipse KeyPont gose occurs when a JWK declares kty EC with a non-EC alg and is passed directly to
JwksTrustStore.Get in the Eclipse KeyPont gose JOSE library (formerly github.com/ThalesGroup/gose) can return the last k
Eclipse KeyPont gose (formerly github.com/ThalesGroup/gose) fails to enforce the JWS `crit` header: any token carrying a
EUVD-2026-108632
NVD
CVE.org
EPSS
GitHub
VulDB
Exploit-DB