概要
node-forge(npm パッケージ名: forge)は JavaScript で 実装 された TLS、暗号、PKI ツールキット であり、ブラウザ 環境 および Node.js 環境 の 両方 で 広く 利用 されて います。この ライブラリ の バージョン 1.4.0 より 前 に おいて、BigInteger.modInverse() メソッド に 深刻 な サービス拒否(DoS)脆弱性 が 存在 します。
この 脆弱性 は CWE-835(Loop with Unreachable Exit Condition、無限ループ)に 分類 されます。modInverse() 関数 が ゼロ 値 を 引数 として 受け取った 場合、内部 で 使用 されて いる 拡張ユークリッド互除法(Extended Euclidean Algorithm)の 終了 条件 に 到達 する こと が できず、無限ループ に 陥ります。
攻撃者 が 意図的 に ゼロ 値 を 含む 入力 を 送信 する こと で、対象 の サーバー または アプリケーション の CPU 使用率 が 100% に 達し、サービス が 応答 不能 に なります。この 攻撃 は ネットワーク 経由 で リモート から 実行 可能 であり、認証 や 特別 な 権限 は 不要 です。攻撃 の 複雑性 も 低い ため、容易 に 悪用 される 可能性 が あります。
node-forge は npm レジストリ で 週間 数百万 ダウンロード を 記録 する 人気 パッケージ であり、多数 の Web アプリケーション や サーバーサイド アプリケーション が この ライブラリ に 依存 して います。そのため 影響 範囲 は 非常 に 広い と 考えられます。
暗号演算 を 行う ライブラリ に おける 入力値 の バリデーション 不備 は、可用性 に 対する 重大 な 脅威 と なります。特に TLS ハンドシェイク や 証明書 検証 など の クリティカル な 処理 で この ライブラリ を 使用 して いる 場合、サービス 全体 の 停止 に つながる リスク が あります。
該当 バージョン を 使用 して いる プロジェクト で は、速やか に v1.4.0 以降 へ の アップデート を 実施 する こと が 強く 推奨 されます。アップデート が 即座 に 困難 な 場合 は、modInverse() に 渡す 値 が ゼロ で ない こと を 事前 に 検証 する 入力 チェック を 実装 する こと で、暫定的 な 回避 が 可能 です。
CVSSベクトル
| 項目 | 値 |
|---|---|
| CVSSスコア | 7.5 |
| 深刻度 | High |
| 攻撃元 | ネットワーク |
| 攻撃条件の複雑さ | 低 |
| 必要な権限 | 不要 |
| ユーザー操作 | 不要 |
| CWE | CWE-835 (Loop with Unreachable Exit Condition) |
影響を受けるソフトウェア
| 製品 | ベンダー | 影響バージョン |
|---|---|---|
| node-forge (forge) | Digital Bazaar | v1.4.0 より前 の 全バージョン |
修正バージョンと回避策
- 修正バージョン: node-forge v1.4.0 以降 へ アップデート する こと で 修正 されます
- 暫定回避策:
modInverse()に 渡す 引数 が ゼロ で ない こと を 呼び出し 前 に 検証 する バリデーション を 追加 する - 依存関係 の 確認:
npm ls forgeまたはnpm auditで プロジェクト 内 の node-forge バージョン を 確認 し、間接 依存 も 含めて 更新 する
関連リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
