Skip to main content

Eclipse Keypont gose CVE-2026-89312

| EUVDEUVD-2026-108632 MEDIUM
Uncaught Exception (CWE-248)
2026-10-23 eclipse
6.9
CVSS 4.0 · Vendor: eclipse
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Submit crafted JWE with wrong-sized IV
  2. Delivery
    Decryptor forwards nonce to AesGcmCryptor.Open unchecked
  3. Exploit
    Go GCM Open panics on bad nonce length
  4. Execution
    Decrypting goroutine crashes
  5. Impact
    Failed 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Eclipse KeyPont - GOSE 0.7.3 ≤0.13.0-rc1
Eclipse KeyPont - GOSE 0 <1.0.0-rc4

Affected Packages

euvd eclipse_keypont_gose fix: 1.0.0-rc4

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

Vendor (eclipse) PRIMARY 6.9 MEDIUM
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
vuln.today AI 5.3 MEDIUM

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).

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (eclipse).

CVSS VectorVendor: eclipse

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Oct 23, 2026 - 09:16 EUVD

DescriptionCVE.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

EPSS Score
0.3%
Top 84% exploitable
Prevalence
Low
niche Go JOSE library; advisory found no public downstream dependents
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact· derived
Medium

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy