CVE-2026-65632 Details
Description
The jose library accepts ECDSA (ES256, ES256K, ES384, and ES512) JWS signatures of a non-canonical length. When verifying an ECDSA signature, jose_jwk_kty_ec:verify/4 in src/jwk/jose_jwk_kty_ec.erl splits the raw signature in half by its actual byte length (split_binary(Signature, byte_size(Signature) div 2)) instead of enforcing the fixed length required by RFC 7518 §3.4, and then decodes each half with crypto:bytes_to_integer/1, which ignores leading zero bytes. As a result, an attacker who holds one valid token can prepend leading zero bytes to each of the R and S halves to produce longer signatures that still split evenly and decode to the same (r, s) pair, so many distinct signature byte strings all verify against the same key (signature malleability). This does not allow forging new payloads or impersonating a signer, because the underlying (r, s) values are unchanged. It does defeat any security control that assumes a valid token or its signature is unique, such as token-revocation-by-hash, replay or idempotency caches, and deduplication logic. This issue affects jose: from 1.0.0 before 1.11.13.
A vulnerability in the jose library's handling of ECDSA JWS signatures (ES256, ES256K, ES384, and ES512) has been identified. The issue arises because the library does not properly validate the length of these signatures, allowing for non-canonical representations to be accepted during verification. Specifically, the verification function splits the signature based on its actual byte length, rather than adhering to the fixed length specified by RFC 7518. This flaw enables an attacker to prepend leading zero bytes to the R and S components of a signature, creating multiple distinct signature byte strings that all decode to the same underlying values. While this does not allow for forging new payloads or impersonating a signer, it undermines security mechanisms that rely on the uniqueness of tokens and signatures, such as token revocation, replay caches, and deduplication processes. The vulnerability affects jose versions 1.0.0 prior to 1.11.13.
Users can upgrade to jose version 1.11.13 or later, where this vulnerability has been fixed. If an upgrade is not possible, it is recommended to manually check the signature length before verification and to avoid relying on the uniqueness of signatures for security decisions.
Metrics
CVSS 4.0 Severity and Vector Strings:
CVSS 3.x Severity and Vector Strings:
No data available for CVSS Version 2.0 on this CVE.
Volerion
Assessed Oct 26, 2026CISA-ADP
Assessed Nov 2, 2026References to Advisories, Solutions, and Tools
By selecting these links, you will be leaving this site. These are references gathered from the official CVE record and are not endorsed by Volerion.
| URL | Source(s) | Tag(s) |
|---|---|---|
| https://github.com/potatosalad/erlang-jose/security/advisories/GHSA-44hw-rpw9-mwg4 | CISA-ADP | AdvisoryRemedyVendor |
| https://cna.erlef.org/cves/CVE-2026-65632.html | EEF | Advisory |
| https://github.com/potatosalad/erlang-jose/commit/72ce1866622b9329347dc52a94173ac0317bc9cf | EEF | Source CodeVendor |
| https://github.com/potatosalad/erlang-jose/commit/a7746ecd4950f85a393136e449a91dac62b5c429 | EEF | Source CodeVendor |
| https://github.com/potatosalad/erlang-jose/security/advisories/GHSA-44hw-rpw9-mwg4 | EEF | AdvisoryRemedyVendor |
| https://osv.dev/vulnerability/EEF-CVE-2026-65632 | EEF | AdvisoryBundle |
Weakness Enumeration
| CWE-ID | CWE Name | Source |
|---|---|---|
| CWE-347 | Improper Verification of Cryptographic Signature | EEF |
Affected Products
| Product | Versions |
|---|---|
| potatosalad jose | >= 1.0.0, < 1.11.13 (semver) |
CPE
Remediation
| |
Change History
2 change records found show changes
| Date | Action | Recorded By |
|---|---|---|
| Nov 2, 2026 | CVE Modified | CISA-ADP |
| Oct 26, 2026 | New CVE Received | EEF |
Volerion