Skip to main content

Eclipse KeyPont gose EUVDEUVD-2026-108649

| CVE-2026-89317 MEDIUM
Improper Input Validation (CWE-20)
2026-10-23 eclipse
6.3
CVSS 4.0 · Vendor: eclipse
View

Attack ChainAIDerived

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

  1. Access
    Obtain issuer-signed token bearing crit
  2. Exploit
    Replay to gose-backed verifier in new context
  3. Execution
    Verifier validates signature, ignores crit
  4. Impact
    Issuer-mandated constraint silently bypassed

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
Exploitation Conditions

Requires a trusted issuer to actually emit JWS tokens carrying a non-empty crit header naming a critical extension (e.g. RFC 7797 b64:false detached payload, RFC 7800 cnf proof-of-possession, or an ecosystem-specific must-revoke-check); if issuers never set crit, the flaw has no effect. The adversary must be able to legitimately obtain such a constrained token in one context and present it to a separate service that uses gose as its JWT/JWS verifier (cross-context replay). Exploitation is explicitly NOT available to an unauthenticated attacker lacking the signing key, because crit resides in the signed protected header and cannot be injected or altered without invalidating the signature. Limiting factors: the signature still verifies and claims remain authentic (integrity impact Low only); the deployed gose version must predate eclipse-keypont/gose v1.0.0-rc4; and the issuing ecosystem must rely on crit for a security property.

Impact

Signals diverge in a way that must be read carefully. The CVSS 4.0 vector (AV:N/AC:H/AT:N/PR:N/UI:N, VI:L only, 6.3 Medium) implies a remote, unauthenticated attacker, but the Eclipse/GHSA advisory explicitly contradicts the PR:N reading: the crit member lives inside the signed protected header, so an unauthenticated party cannot inject or alter it without the issuer's signing key. The PR:N is therefore an artifact of the attacker presenting an already-valid token rather than true unauthenticated injection - verify this nuance before treating it as a drive-by remote flaw. No EPSS score and no KEV status were supplied, so there is no probabilistic or confirmed-exploitation signal; exploitation status here is 'no public exploit identified at time of analysis' in the KEV/weaponized sense, though a public PoC reference exists in the advisory (a reproducer with executed output) that is not verified as a distributable working exploit. The vuln.today Decision label is 'this_month', not act_now or emergency, consistent with the limited scope: integrity impact is Low (signature and claims remain authentic - only an issuer-mandated constraint is silently dropped), confidentiality and availability are unaffected, and the realistic attack is cross-context replay requiring specific preconditions. Net: this is a genuine spec-compliance/validation defect worth remediating on a normal patch cycle, not a high-urgency emergency; the headline-friendly PR:N/AV:N should not be mistaken for widespread unauthenticated exploitability.

Exploit ScenarioDerived

A trusted issuer signs a JWS whose protected header carries a non-empty crit naming a mandatory extension - e.g. RFC 7800 cnf requiring proof-of-possession or an ecosystem must-revoke-check. An adversary who can legitimately obtain that token in one context presents it to a service that uses gose as its verifier; gose checks the signature, exp, nbf, aud, kid and alg, never reads Crit, and returns success, silently dropping the constraint the issuer marked mandatory. The advisory includes an RS256-signed reproducer showing such a token being ACCEPTED, but it is not verified as weaponized exploit code.

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

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

Alert me

AnalysisAIv1 – Oct 23, 2026

Eclipse KeyPont gose (formerly github.com/ThalesGroup/gose) fails to enforce the JWS crit header: any token carrying a non-empty crit array should be rejected per RFC 7515 §4.1.11 because gose implements no header extensions, yet affected verifiers accept such tokens and report successful verification. Because crit lives inside the signed protected header, this is not reachable by an unauthenticated attacker without the signing key; the realistic risk is cross-context replay, where a trusted issuer constrains a token's use with a critical extension (RFC 7797 b64:false, RFC 7800 cnf, or an ecosystem must-revoke-check) and a gose-backed verifier silently drops that mandatory constraint. Signatures and claims remain authentic, so integrity impact is limited; no public exploit code is identified at time of analysis and the issue is not in CISA KEV. Fixed in eclipse-keypont/gose v1.0.0-rc4 (commit be2277b, merged as 692c25c); the legacy ThalesGroup module path ends at v0.13.0-rc1 and remains vulnerable.

RemediationAI

Upgrade to github.com/eclipse-keypont/gose v1.0.0-rc4 or later, which is the first release containing the fix (commit be2277b, merged as 692c25c); the advisory at https://github.com/eclipse-keypont/gose/security/advisories/GHSA-445r-fpvv-hgwc documents the change. Consumers still on github.com/ThalesGroup/gose must change the module path rather than bump the version, since that path terminates at v0.13.0-rc1 and carries a //Deprecated: directive, so go get -u will not remediate; apply the diff from github.com/ThalesGroup/gose v0.13.0-rc1 to github.com/eclipse-keypont/gose v1.0.0-rc4. Be aware of the deliberate behaviour change: any existing consumer that sends crit will now receive ErrCritHeaderNotSupported instead of a successful verification, which is the RFC-specified outcome but a compatibility break for anyone relying on the previous permissiveness. Where upgrading is not immediately possible, the advisory's stated workaround is to inspect the decoded protected header before calling Verify and reject any token whose crit member is present and non-empty; this must be applied at every call site, including those using the jose layer directly, since the upstream check was deliberately placed in jose.Jwt.Verify to cover all entry points. The separate gap in jose.JweProtectedHeader (no Crit field, RFC 7516 §4.1.13) is tracked separately and is not remediated by this upgrade.

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

gose is a Go JOSE/JWT library. jose.JwsHeader declares Crit []string and the field is populated during JSON unmarshalling of the JWS protected header, but the value is never consulted by JwtVerifierImpl.Verify in jwt_verifier.go, which only checks nbf, exp, audience, kid, alg and the signature. RFC 7515 §4.1.11 makes any listed critical extension parameter that the recipient does not understand and support a reason to declare the JWS invalid; gose supports zero extensions, so every non-empty crit should fail and none did. The root cause is CWE-20 (improper input validation), with the advisory additionally classifying it as CWE-347 (improper verification of cryptographic signature) and CWE-1288 (improper validation of consistency within input). The upstream fix adds if len(jwt.Header.Crit) > 0 { return ErrCritHeaderNotSupported } inside jose.Jwt.Verify, which Jwt.Unmarshal calls, so the rejection applies to every entry point including direct use of the jose layer and cannot be bypassed by choosing a lower-level API. Because gose understands no extensions, the additional RFC checks for empty arrays, duplicates, or registered parameter names are subsumed by rejecting any non-empty crit. A related but separate gap: jose.JweProtectedHeader has no Crit field at all, so the RFC 7516 §4.1.13 equivalent is unrepresentable and is not addressed by this fix. Exploitation prerequisites are narrow: a trusted issuer must actually emit tokens with a non-empty crit naming a security-relevant constraint, and an adversary must legitimately obtain such a token in one context and replay it to a gose-backed verifier in another; without the signing key crit cannot be injected or altered, and the assessment records integrity impact only (VC:N/VI:L/VA:N in the published vector; assessed CVSS:3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N). The trigger is only exercising the accepted-but-unenforced header path; no memory-safety or injection mechanism is involved.

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.3 MEDIUM
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 3.7 LOW

Token is presented to the verifier over the network (AV:N) with no verifier-side privileges (PR:N), but exploitation needs an issuer-signed crit-bearing token replayed cross-context (AC:H); only a mandated constraint is dropped, so I:L, C/A:N.

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

Primary rating from Vendor (eclipse).

CVSS VectorVendor: eclipse

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

Lifecycle Timeline

1
Patch available
Oct 23, 2026 - 10:01 EUVD

DescriptionCVE.org

gose parsed the JWS crit header into JwsHeader.Crit and then never read it. RFC 7515 §4.1.11 requires a recipient to reject a JWS whose listed critical extension parameters it does not understand. gose implements no header extensions, so every token carrying a non-empty crit should have been rejected - and none were.

Threat Intelligence Overview

EPSS Score
0.1%
Top 96% exploitable
Prevalence
Low
niche Go JOSE/JWT library (Eclipse KeyPont / ex-Thales), limited production footprint
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

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.1%
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
No
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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