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.
Published: 2026-10-29
Score: 7.1 High
EPSS: n/a
KEV: No
Impact: Authorization bypass and information exposure
Action: Immediate Patch
AI Analysis

Impact

A tampered Disclosure whose digest no longer matches the issuer‑signed "_sd" array is silently dropped during verification, yet the issuer signature remains valid. The library still reports success and returns a reduced claim set. This behavior violates the SD‑JWT RFC requirements for rejecting unreferenced or invalid Disclosures and allows an attacker to modify or remove claims without detection. The result can be the loss of critical authorization information or the exposure of sensitive data that was previously hidden.

Affected Systems

The vulnerability affects the Openwallet Foundation’s JavaScript libraries @sd-jwt/decode and @sd-jwt/core up to and including version 0.19.0. Any installation of these packages that has not been upgraded to version 0.20.0 or later is potentially exposed.

Risk and Exploitability

The CVSS score of 7.1 indicates a moderate to high severity. The EPSS score is not available, but the issue is listed as not in the CISA KEV catalog, suggesting no publicly known widespread exploitation yet. A malicious holder can exploit the silent drop through the SDJwtInstance.verify() flow, while an on‑path attacker can tamper with a Disclosure when the relying party does not enforce key binding. If a relying party defaults to granting access when a claim is missing, the silent claim reduction can alter authorization decisions without generating an error.

Generated by OpenCVE AI on October 29, 2026 at 17:45 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the library to @sd-jwt/core version 0.20.0 or higher, which contains the fix for the silent‑drop issue.
  • If upgrading the standalone @sd-jwt/decode package is not feasible, modify your application to enforce key binding and validate that every disclosed claim is present in the returned claim set before making authorization decisions.
  • As a temporary measure, implement an additional verification step that checks the integrity of the claim set (e.g., confirm the number or specific content of claims) to detect any unintended reduction caused by a silent drop.

Generated by OpenCVE AI on October 29, 2026 at 17:45 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 29 Oct 2026 16:30:00 +0000

Type Values Removed Values Added
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.
Title SD JWT JS: Tampered disclosures silently dropped instead of rejected
Weaknesses CWE-176
CWE-754
References
Metrics cvssV4_0

{'score': 7.1, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-29T16:27:40.825Z

Reserved: 2026-07-13T22:04:59.678Z

Link: CVE-2026-62374

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-29T17:18:10.143

Modified: 2026-10-29T17:18:10.143

Link: CVE-2026-62374

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-29T18:00:17Z

Weaknesses
  • CWE-176

    Improper Handling of Unicode Encoding

  • CWE-754

    Improper Check for Unusual or Exceptional Conditions