概要
fast-xml-parser は npm で 広く 利用 されて いる JavaScript 向け の XML パーサー ライブラリ です。バージョン 4.0.0-beta.3 から 5.5.5 まで の 範囲 に おいて、XML エンティティ 展開 に 関する 制限 の バイパス 脆弱性(CWE-776: XML エンティティ 展開 の 不適切 な 制限)が 存在 します。この 脆弱性 の CVSS スコア は 7.5 で あり、High と 評価 されて います。
fast-xml-parser は maxTotalExpansions と maxExpandedLength と いう 設定 オプション を 提供 し、XML エンティティ の 過剰 な 展開 に よる サービス 拒否(DoS)攻撃 を 防止 して います。しかし、replaceEntitiesValue() 関数 の 実装 に おいて、これら の 制限 は DOCTYPE で 定義 された カスタム エンティティ に のみ 適用 されて おり、数値 文字 参照(&#NNN; 形式)および 標準 XML エンティティ(& < > ' ")に は 一切 カウント が 行われて いません。
この 実装 の 不備 に より、攻撃者 は 大量 の 数値 文字 参照 を 含む XML ドキュメント を 送信 する こと で、エンティティ 展開 制限 を 完全 に 回避 できます。例えば、100 万 個 の 数値 エンティティ 参照 を 含む XML を パース させる と、約 147MB の メモリ 割り当て が 発生 し、サーバー の メモリ を 枯渇 させる サービス 拒否 攻撃 が 成立 します。この 攻撃 は 特別 な 権限 や 認証 を 必要 と せず、XML 入力 を 受け付ける すべて の エンドポイント が 攻撃 対象 と なり得ます。
fast-xml-parser は npm で 週間 数百万 ダウンロード を 記録 する 人気 パッケージ で あり、多数 の プロジェクト が 依存 して いる ため、影響 範囲 は 広い と 考えられます。XML を 外部 入力 として 受け付ける アプリケーション で は、速やか な 対応 が 必要 です。
CVSS ベクトル
| 項目 | 値 |
|---|---|
| CVSS スコア | 7.5 |
| 深刻度 | High |
| CWE | CWE-776(XML エンティティ 展開 の 不適切 な 制限) |
| 攻撃元 | ネットワーク |
| 攻撃 条件 | 低 |
影響 を 受ける ソフトウェア
| 製品 | 影響 バージョン | 修正 バージョン |
|---|---|---|
| fast-xml-parser | 4.0.0-beta.3 〜 5.5.5 | 5.5.6 |
修正 バージョン と 回避策
fast-xml-parser バージョン 5.5.6 に アップデート する こと で、数値 文字 参照 および 標準 XML エンティティ の 展開 も maxTotalExpansions と maxExpandedLength の カウント 対象 に 含まれる よう に 修正 されます。すぐ に アップデート できない 場合 は、XML 入力 の サイズ を Web アプリケーション ファイアウォール(WAF)や リバース プロキシ の レベル で 制限 する こと が 暫定 的 な 対策 です。受信 する XML の 最大 サイズ を 制限 し、数値 文字 参照 の 大量 使用 を 検知 する ルール を 追加 する こと を 検討 して ください。また、Node.js プロセス の メモリ 使用量 に 上限 を 設定 する こと も、DoS の 影響 を 軽減 する 手段 と なります。
関連 リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説 は Claude API に より 自動生成 されています。正確性 に ついては 原文 を ご確認 ください。
