Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain recipient public JWK, kid and oaepHash
-
DeliveryWrap arbitrary CEK and craft JWE with wrong-sized IV
-
ExploitSubmit compact JWE to Decrypt endpoint
-
ExecutionReach stdlib GCM.Open and trigger nonce-length panic
-
ImpactCrash decrypting goroutine or 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 only that the attacker possess the recipient's RSA public key, its kid, and the deployment's oaepHash - all of which are public parameters normally published in a JWKS; no secret, no prior valid message, and no authentication are needed, which is why the vector is effectively unauthenticated (PR:N). The specific trigger is a compact JWE whose base64url-decoded initialization-vector segment is any length other than 12 bytes, reaching cipher.AEAD.Open before the authentication tag is checked. The product must be at an affected version (>= v0.8.0 on eclipse-keypont/gose below v1.0.0-rc4, or any ThalesGroup/gose through v0.13.0-rc1) and must call JweRsaKeyEncryptionDecryptorImpl.Decrypt on externally supplied JWEs. The decisive limiting factor is the caller's panic posture: handlers running under net/http recover per request so impact is a single failed request, whereas a worker or daemon goroutine without its own recover() suffers process termination - this determines whether the flaw is a nuisance or a service outage. |
| Impact | This is a genuine but bounded-severity denial-of-service issue, and the signals are internally consistent rather than conflicting. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) correctly reflects that a remote actor needs only network reachability and no authentication secret - producing a valid EncryptedKey requires only the recipient's public JWK, kid, and oaepHash, all of which are public JOSE parameters. The only impact metric set is VA:L (availability, low); VC/VI/SC/SI/SA are all N, matching the advisory's statement that the panic fires before tag verification and plaintext production, so confidentiality and integrity are untouched. The 6.9 Medium score is therefore driven purely by a single-impact DoS, not a critical compromise. The vuln.today decision label is 'this_month' - not act_now or emergency - so this is a patch-in-routine-cycle item, not a drop-everything event. No KEV listing and no EPSS score are present in the input, so there is no evidence of active exploitation or a quantified exploitation probability; absence of these is not itself a risk signal. Crucially, real-world impact is caller-dependent: under net/http (which recovers per request) a single request fails, whereas a worker or daemon goroutine without its own recover() terminates the process. The advisory deliberately scored the milder case (A:L). Net: a real, cheaply-triggered, unauthenticated DoS in deployments that do not recover panics, but with a capped impact ceiling. |
| Exploit ScenarioDerived | A service exposes a JWE-decryption endpoint using eclipse-keypont/gose and publishes its recipient public key in a JWKS. An attacker RSA-OAEP-wraps an arbitrary 32-byte CEK under that public key and submits a compact JWE whose initialization-vector segment decodes to a non-12-byte value; aead.Open then hits the Go stdlib GCM nonce-length check and panics. A confirmed, executed reproducer exists in the public GHSA advisory (panics on IV lengths 0 and 7, clean auth failure at 12 bytes), so publicly available exploit code exists; if the handler runs in a goroutine without recover(), the process terminates. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
Eclipse KeyPont GoSE's JWE decryptor panics instead of returning an error when a compact JWE carries an incorrectly sized initialization vector, giving a denial of service to anyone holding the recipient's public key. The flaw affects github.com/eclipse-keypont/gose releases from v0.8.0 up to but excluding v1.0.0-rc4, and the deprecated github.com/ThalesGroup/gose module through v0.13.0-rc1. A public PoC reference and a working reproducer are documented in the upstream advisory; it is not confirmed as actively exploited (no KEV entry), and the practical impact ranges from a single failed HTTP request to full process termination depending on the caller's panic recovery posture.
RemediationAI
Vendor-released patch: upgrade to github.com/eclipse-keypont/gose v1.0.0-rc4 or later, which adds the nonce-length and authentication-tag-overhead checks before cipher.AEAD.Open. Consumers still on github.com/ThalesGroup/gose must change the module path, not just the version - that module line stops at v0.13.0-rc1, remains vulnerable, and carries a // Deprecated: directive, so 'go get -u' will not remediate; the import and go.mod entry must be rewritten from github.com/ThalesGroup/gose v0.13.0-rc1 to github.com/eclipse-keypont/gose v1.0.0-rc4. Where upgrading is not immediately possible, the advisory's stated workaround is to validate that the decoded initialization vector is exactly 12 bytes before handing a JWE to JweRsaKeyEncryptionDecryptorImpl.Decrypt; recovering panics at the request boundary limits the blast radius but does not address the underlying defect. Detail and the diff are at https://github.com/eclipse-keypont/gose/security/advisories/GHSA-265w-83cm-777q.
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
GoSE ("Go Security Essentials") is an Eclipse KeyPont Go library implementing JOSE/JWE handling, and the defect sits in JweRsaKeyEncryptionDecryptorImpl.Decrypt, which unwraps a content-encryption key with RSA-OAEP and then decrypts the payload with AES-GCM. The Go standard library's crypto/cipher GCM implementation panics rather than returning an error when the supplied nonce is not exactly NonceSize() (12) bytes, and the library passed jwe.InitializationVector straight from a base64url-decoded JWE segment into cipher.AEAD.Open without a length check. That is CWE-248 (Unrecoverable Exception from an Uncontrolled Input): an attacker-chosen IV length of any value other than 12 drives the code into an unrecoverable panic. Because the panic occurs after RSA-OAEP unwrapping of an attacker-supplied CEK but before authentication-tag verification, the attacker only needs the recipient's public JWK, its kid, and the deployment's oaepHash - all normally public - so no secret or prior valid message is required and the vector is effectively unauthenticated (PR:N). The trigger is a compact JWE whose decoded IV segment is any length other than 12 bytes; confidentiality and integrity are unaffected because the panic precedes tag verification and plaintext production. The upstream fix adds explicit NonceSize() and Overhead() checks (commit e4ab198, merged as 692c25c) returning ErrInvalidNonce / ErrInvalidAuthenticationTag instead of reaching the stdlib sink.
Know when Go 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
Unauthenticated network trigger using only the public key gives AV:N/AC:L/PR:N/UI:N; only availability is affected and only partially (caller may recover), so C:N/I:N/A:L.
Primary rating from Vendor (eclipse).
CVSS VectorVendor: eclipse
Lifecycle Timeline
1DescriptionCVE.org
JweRsaKeyEncryptionDecryptorImpl.Decrypt passed the JWE's initialization vector 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.
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
The net/http package in Go through 1.6 does not attempt to address RFC 3875 section 4.1.18 namespace conflicts and there
Critical certificate validation bypass in Go crypto/tls during session resumption. If ClientCAs or RootCAs fields are mu
net/url in Go before 1.11.13 and 1.12.x before 1.12.8 mishandles malformed hosts in URLs, leading to an authorization by
Casdoor through 4.4.0 exposes its instance-wide built-in JWT signing private key unmasked through the /api/get-certs and
Host header injection in Nezha 2.2.3's OAuth2 redirect endpoint (/api/v1/oauth2/{provider}) allows an unauthenticated re
Session cross-wiring in SUSE NeuVector before 5.6.1 allows an unauthenticated remote attacker to obtain another user's a
Unauthenticated path traversal in Uber Kraken through 0.1.29 allows remote attackers to read files outside the configure
The "go get" implementation in Go 1.9.4, when the -insecure command-line option is used, does not validate the import pa
Denial of service in Temporal Server allows an authenticated caller holding at least namespace read permission to crash
Account takeover in Klever-Go's KleverUpdateAccountPermission built-in (all versions prior to 1.7.20) allows an attacker
Maliciously crafted on-chain account names processed by Klever-Go prior to 1.7.20 are spliced into Elasticsearch _bulk r
EUVD-2026-108650
NVD
CVE.org
EPSS
GitHub
Exploit-DB