概要
node-forge(npm パッケージ名: forge)は JavaScript で 実装 された 暗号ライブラリ であり、RSA 署名 の 生成 と 検証、TLS 通信、X.509 証明書 の 処理 など を 提供 して います。この ライブラリ の バージョン 1.4.0 より 前 に おいて、RSASSA PKCS#1 v1.5 署名 検証 の 実装 に 重大 な 脆弱性 が 存在 します。
この 脆弱性 は CWE-20(Improper Input Validation、不適切 な 入力 検証)および CWE-347(Improper Verification of Cryptographic Signature、暗号署名 の 不適切 な 検証)に 分類 されます。
具体的 に は、RSASSA PKCS#1 v1.5 署名 検証 の 処理 に おいて、パディング の 解析 が 不十分 である ため、Bleichenbacher 型 の 署名偽造攻撃 が 成立 します。Bleichenbacher 攻撃 は 2006年 に Daniel Bleichenbacher 氏 に よって 発見 された 古典的 な 攻撃 手法 です が、実装 の 不備 に よって 現在 でも 再発 する こと が あります。
この 攻撃 に より、攻撃者 は 秘密鍵 を 持た ない まま、正当 な 署名 として 受理 される 偽造 署名 を 生成 する こと が 可能 に なります。これ に より、認証 の バイパス、データ の 改ざん、中間者攻撃 など が 実現 される 危険性 が あります。
PKCS#1 v1.5 署名 方式 は RFC 2313 の セクション 8 で 定義 されて おり、署名 検証 時 に は パディング の 構造 を 厳密 に チェック する 必要 が あります。node-forge の 実装 で は この チェック が 不十分 で あった ため、パディング 内 に 余分 な データ を 挿入 した 偽造 署名 が 検証 を 通過 して しまいます。
この 脆弱性 は 特に JWT(JSON Web Token)の 署名 検証 や X.509 証明書チェーン の 検証 に node-forge を 使用 して いる アプリケーション に 深刻 な 影響 を 与えます。攻撃者 は 偽造 した トークン や 証明書 を 使って 認証 を 突破 し、システム に 不正 アクセス する こと が 可能 です。
該当 バージョン を 使用 して いる 場合 は、直ちに v1.4.0 以降 へ の アップデート を 実施 して ください。
CVSSベクトル
| 項目 | 値 |
|---|---|
| CVSSスコア | 7.5 |
| 深刻度 | High |
| 攻撃元 | ネットワーク |
| 攻撃条件の複雑さ | 低 |
| 必要な権限 | 不要 |
| ユーザー操作 | 不要 |
| CWE | CWE-20 (不適切な入力検証), CWE-347 (暗号署名の不適切な検証) |
影響を受けるソフトウェア
| 製品 | ベンダー | 影響バージョン |
|---|---|---|
| node-forge (forge) | Digital Bazaar | v1.4.0 より前 の 全バージョン |
修正バージョンと回避策
- 修正バージョン: node-forge v1.4.0 以降 へ アップデート する こと で、PKCS#1 v1.5 パディング の 厳密 な 検証 が 実装 されます
- 暫定回避策: RSASSA-PSS(PKCS#1 v2.1)など の より 安全 な 署名 方式 へ の 移行 を 検討 する。PKCS#1 v1.5 署名 に 依存 する 機能 の 利用 を 最小限 に 制限 する
- 依存関係 の 確認:
npm ls forgeまたはnpm auditで プロジェクト 内 の node-forge バージョン を 確認 し、間接 依存 も 含めて 更新 する
関連リンク
- NVD
- GitHub Security Advisory (GHSA-ppp5-5v6c-4jwp)
- RFC 2313 Section 8 - PKCS#1 署名方式
- node-forge GitHub リポジトリ
データソース: NVD (NIST), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
