何が起きたか
SD-JWT のプレゼンテーションで Disclosure を1つ改ざんし、署名済みの _sd 配列のダイジェストと一致しなくなった場合、RFC 9901 では全体を拒否すべきところを、@sd-jwt/decode はその Disclosure を黙って捨て、残りのクレームだけで検証成功を返します。不正な UTF-8 を含む Disclosure も U+FFFD に置き換えて読み込んでしまいます。年齢や権限などの制約クレームが無ければ許可する作りの検証側では、保有者(鍵バインディングを強制していない場合は通信経路上の攻撃者)がそのクレームを消して判定を覆せます。
やること
@sd-jwt/core を 0.20.0 以降に更新してください。すぐ更新できない場合は、制約を表すクレームが存在しないときに許可するのではなく拒否する判定にし、鍵バインディング(KB-JWT)を必須にすることで経路上での改ざんは防げます。
出典
GitHub Advisory Database GHSA-f9j6-8p6x-r9j6github.com英語 ↗sd-jwt-js のセキュリティ勧告github.com英語 ↗NVD CVE-2026-62374nvd.nist.gov英語 ↗上の要約は通り道編集部がまとめたものです。影響範囲と修正版は必ず各出典で確認してください。