CVE-2026-65628
Received Received - Intake

Denial of Service in jose JWK Shared Secret Derivation

Vulnerability report for CVE-2026-65628, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-10-26

Last updated on: 2026-10-26

Assigner: EEF

Description

jose_jwk:shared_secret/2 (exposed in Elixir as JOSE.JWK.shared_secret/2) derives an ECDH shared secret from two JWKs. Its first function clause only matches when both JWKs carry the same key type (kty) module, and its fallback clause re-invokes itself as shared_secret(from(YourJWK), from(MyJWK)). Because from/1 returns an already-parsed jose_jwk record unchanged, passing two JWKs whose key types differ (for example an EC key and an RSA key) makes the fallback clause re-enter with identical arguments, producing an unbounded tail-recursive loop that never returns and never crashes. An application that derives a shared secret from an externally supplied peer public key without first checking that the peer key's type and curve match its own key can be driven into this loop by an attacker-controlled JWK, pinning an Erlang scheduler at 100% CPU. Repeated requests exhaust the available schedulers, resulting in a denial of service. This issue affects jose: from 1.5.0 before 1.11.13.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-10-26
Last Modified
2026-10-26
Generated
2026-10-26
AI Q&A
2026-10-26
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 2 associated CPEs
Vendor Product Version / Range
potatosalad jose 1.5.0
potatosalad jose 7b80b9f55b9898e1a6901ce136061b241b021d7c

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-674 The product does not properly control the amount of recursion that takes place, consuming excessive resources, such as allocated memory or the program stack.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability is an infinite recursion flaw in the jose_jwk:shared_secret/2 function of the erlang-jose library. When two JWKs with mismatched key types (e.g., EC and RSA) are passed, the function enters an unbounded tail-recursive loop instead of failing. This consumes 100% CPU on an Erlang scheduler without crashing, causing a denial-of-service.

Detection Guidance

To detect this vulnerability, monitor for processes consuming 100% CPU indefinitely when handling JWK operations. Check for repeated requests involving ECDH key derivation with mismatched key types. Use Erlang VM tools like observer:start() to inspect scheduler usage and detect hanging processes.

Impact Analysis

An attacker can exploit this by sending a maliciously crafted JWK to trigger the infinite loop. This pins an Erlang scheduler at 100% CPU, exhausting system resources with repeated requests and causing a denial-of-service. The attack requires only the ability to submit a peer public key to a key derivation endpoint.

Mitigation Strategies

Upgrade the jose library to version 1.11.13 or later. Validate key types and curves before calling shared_secret/2. Implement timeouts for untrusted input processing. Monitor for suspicious JWK submissions that may trigger the recursion.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-65628. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart