CVE-2026-62374 Details
Description
SD JWT JS is a JavaScript implementation of the Selective Disclosure JWT (SD-JWT) specification. In version 0.19.0 and earlier, `@sd-jwt/decode`, also used by `@sd-jwt/core`, silently drops a tampered Disclosure whose digest no longer matches the Issuer-signed `_sd` array and returns a reduced claim set, reporting success while the Issuer signature remains valid. Both a tampered Disclosure that remains valid JSON and a Disclosure containing invalid UTF-8 bytes reach this silent-drop behavior. In the latter case, the `TextDecoder / Buffer` decoding path substitutes U+FFFD replacement characters, recovering syntactically valid disclosure data instead of rejecting the malformed input. This violates RFC 9901 section 7.1 step 5, which requires rejection of unreferenced Disclosures, and section 7.1 step 3 / section 4.2.1, which require rejection of invalid Disclosures. A malicious holder can exploit this omission primitive, including through `SDJwtInstance.verify()` when key binding is required. An on-path attacker can also tamper with a Disclosure when the relying party does not enforce key binding; enforced key binding rejects on-path tampering because it invalidates the KB-JWT `sd_hash` binding. If the relying party defaults to allowing access when a constraining age, role, or restriction claim is absent, the silent claim reduction can change an authorization decision without an error. This issue is fixed in `@sd-jwt/core` version 0.20.0; no patched version of the standalone `@sd-jwt/decode` package is identified.
A vulnerability exists in the SD JWT JS library, specifically in the selective disclosure JWT (SD-JWT) implementation, versions 0.19.0 and earlier. The issue arises in the `@sd-jwt/decode` package, which is also utilized by `@sd-jwt/core`. When a disclosure is tampered with, causing its digest to mismatch the issuer-signed `_sd` array, the decoder fails to reject the presentation. Instead, it silently drops the unmatched disclosure, returns a reduced claim set, and reports success, all while the issuer's signature remains valid. This behavior violates several steps of the SD-JWT specification, allowing a malicious holder to exploit the omission by presenting a tampered disclosure that results in fewer claims being acknowledged by the relying party. The vulnerability can also be exploited by an on-path attacker, depending on the key binding enforcement status.
Users are advised to update to `@sd-jwt/core` version 0.20.0. However, no patched version of the standalone `@sd-jwt/decode` package is currently available.
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 29, 2026CISA-ADP
Assessed Nov 4, 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/openwallet-foundation/sd-jwt-js/security/advisories/GHSA-f9j6-8p6x-r9j6 | CISA-ADP | AdvisoryExploitRemedyVendor |
| https://github.com/openwallet-foundation/sd-jwt-js/security/advisories/GHSA-f9j6-8p6x-r9j6 | [email protected] | AdvisoryExploitRemedyVendor |
Weakness Enumeration
| CWE-ID | CWE Name | Source |
|---|---|---|
| CWE-176 | Improper Handling of Unicode Encoding | [email protected] |
| CWE-754 | Improper Check for Unusual or Exceptional Conditions | [email protected] |
Affected Products
| Product | Versions |
|---|---|
| openwallet-foundation SD JWT JS | <= 0.19.0 (semver) |
CPE
Remediation
| |
| openwallet-foundation SD JWT | All versions |
CPE
Remediation
| |
| openwallet-foundation SD JWT Decode | <= 0.19.0 (semver) |
CPE
Remediation
| |
Change History
2 change records found show changes
| Date | Action | Recorded By |
|---|---|---|
| Nov 4, 2026 | CVE Modified | CISA-ADP |
| Oct 29, 2026 | New CVE Received | [email protected] |
Volerion