CVE-2026-27601: Underscore.jsにおけるサービス拒否(DoS)の脆弱性について

March 4, 2026 ·

概要

JavaScriptのユーティリティライブラリであるUnderscore.jsにおいて、_.flattenおよび_.isEqual関数に深さ制限のない再帰処理が存在する脆弱性(CVE-2026-27601)が報告されています。この脆弱性が悪用された場合、スタックオーバーフローが発生し、結果としてサービス拒否(DoS)状態に陥る可能性があります。

影響を受けるのはUnderscore.jsのバージョン1.13.8未満であり、この問題はバージョン1.13.8で修正されています。

影響範囲

Underscore.jsバージョン1.13.8未満を使用しているウェブアプリケーションやシステムが影響を受ける可能性があります。特に、外部からの信頼できない入力を処理し、それを_.flattenまたは_.isEqual関数に渡すような実装をしている場合に注意が必要です。

想定される影響

  • サービス拒否(DoS): 攻撃者が細工したデータ構造を送信することで、アプリケーションがスタックオーバーフローを起こし、応答不能になる可能性があります。これにより、正規のユーザーがサービスを利用できなくなる事態が想定されます。

攻撃成立条件・悪用状況

この脆弱性の悪用には、以下の特定の条件が満たされる必要があります。

共通条件

  • 信頼できない入力(例: JSON.parseで生成されたデータ)が、深さ制限なしに再帰的なデータ構造を作成できること。
  • 作成されたデータ構造が_.flattenまたは_.isEqual関数に渡されること。

_.flattenの場合

  • リモートクライアントが、すべてのレベルが配列で構成されるデータ構造を準備できること。
  • かつ、_.flatten関数の第2引数として深さ制限が指定されていないこと。

_.isEqualの場合

  • 同じリモートクライアントから送信された2つの異なるデータ構造が、_.isEqual関数を使用して比較されるコードパスが存在すること。
  • 例: クライアントが送信したデータがデータベースに保存され、後で同じクライアントが送信した別のデータ構造と比較される場合、または単一のリクエストのデータが2回パースされ、非同一だが同等のデータ構造が作成されて比較される場合。

現在のところ、この脆弱性の具体的な悪用状況については、この情報からは不明です。

推奨対策

優先度:高(今すぐできる対策)

  • Underscore.jsのアップデート: Underscore.jsをバージョン1.13.8以降にアップデートしてください。このバージョンで脆弱性が修正されています。

優先度:中(中長期的な対策)

  • 入力値の検証とサニタイズ: 外部からの入力データに対して、深さ制限を含む厳格な検証とサニタイズを実装し、不正な再帰的データ構造が生成されないようにしてください。
  • 深さ制限の適用: _.flatten関数を使用する際には、可能な限り第2引数で明示的に深さ制限を指定することを検討してください。

一時的な緩和策

現時点では、Underscore.jsのアップデートが最も効果的な対策であるため、一時的な緩和策として推奨される具体的な方法はありません。可能であれば、速やかにアップデートを実施してください。

確認方法

ご自身のシステムで使用しているUnderscore.jsのバージョンを確認してください。プロジェクトの依存関係ファイル(例: package.json)や、アプリケーションのバンドルファイル内でUnderscore.jsのバージョン情報を確認できます。バージョンが1.13.8未満である場合は、脆弱性の影響を受ける可能性があります。

参考情報

詳細については、以下の情報を参照してください。