Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSubmit crafted JWK to app key loader
-
Exploitkty=EC paired with non-EC alg (RS256/PS256/RSA-OAEP)
-
ExecutionLoadPublicKey hits unchecked *ECDSAOptions assertion
-
Impactinterface conversion fails and process panics (DoS)
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 consuming application to pass an externally supplied (attacker-influenced) JWK document directly to the exported LoadPublicKey or LoadPrivateKey - for example a caller-built JWKS loader. The triggering input is a JWK declaring "kty":"EC" together with a non-EC "alg" (RS256, RS384, PS256, RSA-OAEP, or RSA-OAEP-256), which jose.UnmarshalJwk accepts because it selects the Go type from kty alone and the publicKeyAlgs gate is kty-blind. LIMITING FACTORS: the vulnerability is NOT reachable through gose's own JWKS-to-verification path (NewVerificationKey gates EC on alg ∈ {ES256,ES384,ES512}); it needs the non-default integration described above, which is why attack complexity is rated High. No authentication is required on the vulnerable path (CVSS PR:N), and impact is limited to availability (process panic). Documented workarounds: do not forward external JWKs directly to LoadPublicKey/LoadPrivateKey - route through NewVerificationKey, or validate that kty and alg agree (an EC key must carry ES256/ES384/ES512) before loading. |
| Impact | This is a medium-severity denial-of-service issue (vendor CVSS 4.0 base 6.3), and the signals consistently point to bounded, conditional risk rather than an urgent threat. The CVSS 4.0 vector (AV:N/AC:H/AT:N/PR:N/UI:N) scores availability only (VA:L) with no confidentiality or integrity impact (VC:N/VI:N) - matching CWE-248 (uncaught panic). AC:H is the pivotal metric: the advisory is explicit that no in-tree gose code path routes network-fetched JWK bytes to the sink, because gose's own JWKS-to-verification wiring goes through NewVerificationKey, whose EC branch gates on alg ∈ {ES256,ES384,ES512} and is immune; exploitation requires a consuming application that forwards an externally supplied JWK directly to the exported LoadPublicKey (or LoadPrivateKey). No EPSS score and no KEV listing are provided in the input, and there is no 'confirmed active exploitation' signal. The vuln.today Decision label is 'this_month' (not act_now/emergency), consistent with a real-but-non-emergency defect. The GHSA advisory contains an executed reproducer demonstrating three distinct panic variants (RS256, PS256, RSA-OAEP) with an ES256 control. Net: a genuine library defect worth patching on a routine cycle, but its real-world priority is gated by whether a downstream application actually exposes LoadPublicKey/LoadPrivateKey to attacker-controlled JWK input; against gose's documented verification path it is not reachable. |
| Exploit ScenarioDerived | An application that uses gose and feeds externally supplied JWK documents (for example a caller-built JWKS loader) directly into the exported LoadPublicKey function receives a JWK of {"kty":"EC","alg":"RS256"} - well-formed per RFC 7517 §4.4. The kty-blind algorithm gate accepts it, the unchecked *ECDSAOptions type assertion fails, and the Go process panics, denying service. A working reproducer covering RS256/PS256/RSA-OAEP panic variants is published in the GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
Denial of service in Eclipse KeyPont gose occurs when a JWK declares kty EC with a non-EC alg and is passed directly to the exported LoadPublicKey or LoadPrivateKey loader; an unchecked ECDSAOptions type assertion panics the process. Affected releases are github.com/eclipse-keypont/gose before 1.0.0-rc4 and the deprecated github.com/ThalesGroup/gose path through 0.13.0-rc1, while gose's own NewVerificationKey/JWKS path gates EC algorithms and is not vulnerable. Exploitation is conditional on a consuming application forwarding externally supplied JWKs to those loaders; no CISA KEV listing or verified public exploit code is indicated, the advisory includes a reproducer, and the vendor rates the issue CVSS 4.0 6.3 with high attack complexity and availability-only impact.
RemediationAI
Upgrade to github.com/eclipse-keypont/gose v1.0.0-rc4 or later; this is the vendor-released patched version. Consumers still on github.com/ThalesGroup/gose must change the module path, not only the version, because that path ends at v0.13.0-rc1 and remains vulnerable while carrying a deprecation directive from v0.12.2 onward; go get -u will not remediate it. If upgrading cannot be done immediately, do not pass externally supplied JWK documents directly to LoadPublicKey or LoadPrivateKey. Route verification through NewVerificationKey, which already gates EC algorithms to ES256, ES384 and ES512, or validate that kty and alg agree before loading, ensuring an EC key carries ES256, ES384 or ES512. The advisory with the fix details is at https://github.com/eclipse-keypont/gose/security/advisories/GHSA-fv39-8484-f4wr.
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 affected code is the Go JOSE/JWK handling in Eclipse KeyPont gose. RFC 7517 permits a JWK to carry a kty value and an alg value that do not match, and jose.UnmarshalJwk selects the concrete Go type from kty alone without cross-validating it against alg. In LoadPublicKey's *jose.PublicEcKey branch, the code evaluates algToOptsMap[v.Alg()].(*ECDSAOptions).curve; because the publicKeyAlgs gate accepts RS, PS, ES and RSA-OAEP algorithms regardless of key type, a JWK with kty EC and alg RS256, PS256 or RSA-OAEP reaches the assertion. algToOptsMap maps RS* to crypto.Hash, PS* to *rsa.PSSOptions, and has no RSA-OAEP entry, so the assertion fails and the process panics with a distinct interface-conversion error for each variant. This is CWE-248, an uncaught exception/panic caused by an unchecked type assertion. The advisory states the flaw was fixed in commit 4c6a481, merged as 692c25c, by routing curve lookup through a checked ecdsaCurveForAlg helper; the same unchecked assertion class also existed in LoadPrivateKey. gose's in-tree JWKS-to-verification path uses NewVerificationKey, whose EC branch gates on alg being ES256, ES384 or ES512 before any assertion, so that path is immune. The CPE identifies Eclipse Foundation Eclipse KeyPont gose as the affected product.
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:H/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
AC:H because the sink is only reachable when an application forwards an externally supplied JWK to LoadPublicKey (not gose's gated path); PR:N as no auth is needed; impact is availability-only (A:L), no C/I.
Primary rating from Vendor (eclipse).
CVSS VectorVendor: eclipse
Lifecycle Timeline
1DescriptionCVE.org
LoadPublicKey resolved an EC key's curve with an unchecked type assertion, algToOptsMap[alg].(*ECDSAOptions). A JWK declaring "kty":"EC" together with a non-EC "alg" - which RFC 7517 §4.4 permits - reaches that assertion and panics.
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
Denial of service in the Eclipse Keypont gose Go JWE library (published historically as github.com/ThalesGroup/gose) whe
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
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-108648
NVD
CVE.org
EPSS
GitHub
Exploit-DB