Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2026-62374— SD JWT JS: Tampered disclosures silently dropped instead of rejected

Quick assessment

Affected
openwallet-foundation @sd-jwt/core
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

SD JWT JS 是选择性披露 JWT(SD-JWT)规范的 JavaScript 实现。在 0.19.0 及更早版本中, (也被 使用)会静默丢弃被篡改的披露项(Disclosure):当该披露项的摘要与颁发者签名的 数组不匹配时,库仍会返回一个被缩减的声明集,并报告验证成功,尽管颁发者的签名本身仍然有效。无论是保持有效 JSON 格式的被篡改披露项,还是包含无效 UTF-8 字节的披露项,都会触发这种静默丢弃行为。在后一种情况下, / 解码路径会用 U+FFFD 替换字符(replacement charac

CVSS 7.1 · High

Affected Version Matrix 2

VendorProduct Version RangeStatus
openwallet-foundation @sd-jwt/core <= 0.19.0 affected
openwallet-foundation @sd-jwt/decode <= 0.19.0 affected
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-62374

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
SD JWT JS: Tampered disclosures silently dropped instead of rejected
Source: CVE Program / CVE List V5
Vulnerability 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.
Source: CVE Program / CVE List V5
CVSS Information
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
Source: CVE Program / CVE List V5
Vulnerability Type
对因果或异常条件的不恰当检查
Source: CVE Program / CVE List V5

Affected Products

Vendor Product Affected Versions CPE Subscribe
openwallet-foundation @sd-jwt/core <= 0.19.0 -
openwallet-foundation @sd-jwt/decode <= 0.19.0 -

II. Public POCs for CVE-2026-62374

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-62374

请登录查看更多情报信息。

Other References for CVE-2026-62374 (1)

IV. Related Vulnerabilities