Skip to main content

Eclipse KeyPont gose CVE-2026-89320

| EUVDEUVD-2026-108654 HIGH
Improper Validation of Integrity Check Value (CWE-354)
2026-10-23 eclipse
8.8
CVSS 4.0 · Vendor: eclipse
View

Attack ChainAIDerived

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

  1. Access
    Observe one valid AES-CBC-HMAC JWE
  2. Delivery
    Harvest its constant HMAC_K("") tag
  3. Exploit
    Forge arbitrary ciphertext, IV, header
  4. Execution
    Reattach tag, pass VerifyCompact
  5. Impact
    Tamper recovered plaintext (bit-flip/padding oracle)

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Integrity verification
Exploitation Conditions

Exploitation is limited to JWEs using the AES-CBC-with-HMAC direct path - JweDirectEncryptorBlock / JweDirectDecryptorBlock routed through JweHmacVerifierImpl and HmacShaCryptor; AEAD/GCM modes (NewJweDirectEncryptorAead / NewJweDirectDecryptorAeadImpl) do NOT use this cryptor and are unaffected. The affected software is github.com/ThalesGroup/gose versions >=v0.9.0 through v0.13.0-rc1 (the vulnerable code was never published under github.com/eclipse-keypont/gose). The practical precondition is that the attacker must have observed at least one legitimately produced JWE under the target key to obtain the constant HMAC_K("") tag; no key knowledge, authentication, or user interaction is required (PR:N/UI:N). The chief limiting factor is deployment mode: environments using only the GCM/AEAD path are not exploitable, and the only complete fix requires changing the module import path (go get -u will not remediate), with avoidance of the CBC-HMAC path as the sole in-release workaround.

Impact

The signals point to a genuinely serious integrity flaw that nonetheless has a bounded real-world footprint. The input CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) and score of 8.8 describe a network-reachable, unauthenticated issue - consistent with the description, since VerifyCompact processes attacker-supplied compact JWEs with no key or credential knowledge required (PR:N). The impact profile VC:L/VI:H matches the mechanism: integrity is fully broken (the HMAC tag is the constant HMAC_K("") for every message under a key) while confidentiality is only partially affected via downstream padding-oracle/bit-flipping manipulation rather than a direct disclosure. The vuln.today Decision label is this_week, indicating prompt remediation rather than drop-everything emergency. KEV is NOT listed, so there is no confirmed active exploitation; no EPSS score is provided, so exploitation probability cannot be quantified from the input. A reproducer is present in the GHSA advisory (a unit test proving Hash(A)Hash(B)Hash(nil)), demonstrating the flaw, but it is not packaged as a working end-to-end network exploit. One material caveat to the AC:L rating: practical forgery requires the attacker to have first observed at least one legitimately produced JWE under the target key to learn the constant tag - a low but non-zero precondition. The net picture is a high-severity, low-prevalence issue: a real and urgent priority for the specific projects that use gose's AES-CBC-HMAC JWE path, but not a widespread internet-scale emergency given the library's niche adoption and the GCM path being unaffected.

Exploit ScenarioDerived

An attacker who has observed a single valid AES-CBC-HMAC JWE issued under a given key learns that its authentication tag is the message-independent constant HMAC_K(""). They then craft an arbitrary ciphertext, IV, and protected header, attach that same tag, and submit it; JweHmacVerifierImpl.VerifyCompact accepts it because both sides reduce to HMAC_K(""), allowing chosen-ciphertext tampering (bit-flipping) and padding-oracle-style manipulation of the recovered plaintext. A public PoC reference exists in the GHSA advisory as a reproducer test; it is not verified as working end-to-end exploit code.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 23, 2026

The AES-CBC-with-HMAC JWE path in Eclipse KeyPont gose (published as github.com/ThalesGroup/gose v0.9.0 through v0.13.0-rc1) provides no ciphertext integrity at all: HmacShaCryptor.Hash returned the MAC of the empty message for every input, so the authentication tag is constant per key and independent of the message. An unauthenticated remote attacker who has observed a single legitimately produced JWE under the target key can replay that tag onto arbitrary attacker-chosen header, IV and ciphertext and pass verification, enabling bit-flipping manipulation of the recovered plaintext and padding-oracle-style attacks; confidentiality alone is not broken. Only the CBC-HMAC direct encryption/decryption blocks are affected, AEAD/GCM modes do not use this cryptor, and the evaluator rates it AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N with no public exploit identified at time of analysis.

RemediationAI

Vendor-released patch: migrate to github.com/eclipse-keypont/gose v1.0.0-rc1 or later (upstream fixed in commit 97f9348; the advisory's upgrade example uses v1.0.0-rc3). Because the module path changed six weeks after the fix, there is no patched release on github.com/ThalesGroup/gose, which ends at the still-vulnerable v0.13.0-rc1; go get -u therefore will not remediate and the go.mod require line and all import paths must be rewritten (#!/diff: - github.com/ThalesGroup/gose v0.13.0-rc1, + github.com/eclipse-keypont/gose v1.0.0-rc3). Where migration cannot happen immediately, the only in-release workaround is to stop using the direct AES-CBC-HMAC path (NewJweDirectEncryptorBlock and NewJweDirectDecryptorBlock) and switch to the unaffected AEAD/GCM path (NewJweDirectEncryptorAead / NewJweDirectDecryptorAeadImpl) - a trade-off that changes the JWE algorithm and requires the peer to accept it, and any existing tokens must be re-issued, not merely re-verified. Any data already protected by an affected release must be treated as unauthenticated and re-encrypted under a patched version to obtain a real integrity guarantee. Advisory: https://github.com/eclipse-keypont/gose/security/advisories/GHSA-h6w5-722x-2h3m

Affected VersionsENISA

Eclipse KeyPont - GOSE 0.9.0 ≤0.13.0-rc1
Eclipse KeyPont - GOSE 0 <1.0.0-rc1

Affected Packages

euvd eclipse_keypont_gose fix: 1.0.0-rc1

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 implements JWE compact serialization (RFC 7516) using AES-CBC followed by HMAC. The HMAC primitive is HmacShaCryptor, a thin wrapper around Go's standard hash.Hash. Its Hash method called h.hash.Sum(input), but Go's hash.Hash.Sum(b) appends the digest of the currently written state to b and does not hash b; because the code never called Write(input) and never called Reset, the digest was always that of the empty input, and slicing the result at len(input) simply recovered that constant. The consequence is a per-key constant tag HMAC_K(""). This is CWE-354 (improper validation of integrity check value): the comparison in JweHmacVerifierImpl compares two values that are the same constant on both the honest and forged path, so integrity verification is a no-op. The HMAC gates CBC decryption, so once it is bypassed the CBC layer is exposed to raw attacker-chosen ciphertext, which is malleable and can be bit-flipped to manipulate the decrypted plaintext; the advisory notes CryptBlocks also panics on non-block-aligned lengths. The flaw was introduced with AES-CBC-then-HMAC support in commit b7b140e (2024-08-02) and first shipped in v0.9.0; it was fixed in commit 97f9348 by calling Reset, Write(input) and Sum(nil). AEAD/GCM code paths (NewJweDirectEncryptorAead / NewJweDirectDecryptorAeadImpl) never route through HmacShaCryptor and are unaffected.

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

Network-reachable JWE verification needs no key or auth (PR:N) and only one observed tag (AC:L); integrity is fully forgeable (I:H) with limited plaintext exposure via padding oracle (C:L).

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:H/VA:N/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
Low
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 23, 2026 - 10:01 EUVD
CVE Published
Oct 23, 2026 - 08:56 cve.org
HIGH 8.8

DescriptionCVE.org

HmacShaCryptor.Hash never hashed its input. For any input it returned HMAC_K("") - the MAC of the empty message under the key. Every AES-CBC-HMAC JWE produced or verified by gose therefore carried an authentication tag that is constant per key and independent of the message, removing ciphertext integrity entirely.

Technical POC Analysis

CWE-354 (Improper Validation of Integrity Check Value), as classified in the report.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Eclipse KeyPont gose versions v0.9.0 through v0.13.0-rc1 (published as github.com/ThalesGroup/gose) contain a critical integrity flaw in their AES-CBC-with-HMAC JWE implementation, allowing an unauthenticated remote attacker to tamper with encrypted data. This undermines trust in any system using these versions for data protection, potentially leading to unauthorized modifications and data corruption. Leadership should prioritize remediation to prevent integrity breaches that could impact compliance and customer trust.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include disabling CBC-HMAC JWE mode if feasible, migrating to AEAD/GCM modes, implementing strict validation of JWE headers and ciphertexts, and monitoring for tampering attempts; consider using an alternative JWE library for critical data.

Threat Intelligence Overview

EPSS Score
0.2%
Top 93% exploitable
Prevalence
Low
niche Go JOSE library (gose), limited and specialized adoption
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 HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
High

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
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