脆弱性・CVE速報深刻度: 中

minimatch と glob に Medium の DoS 2 件(CVE-2026-118764・118773): 悪意あるパターンで CPU・メモリが増え、glob は中断後も走査が続く。minimatch 11.0.1、glob 14.0.2 で修正

目次(5)

CVE-2026-118764

CVE-2026-118773

Node.js で広く使われるパターン照合ライブラリ minimatch と、ファイル検索ライブラリ glob に、サービス停止(可用性)につながる脆弱性が 2026 年 10 月 30 日(UTC)に公開されました。どちらも GitHub Advisory では Medium です(CVSS v3 は未設定、v4 は 6.9 と 6.3)。CISA の KEV には載っていません。EPSS は CVE-2026-118764 が 0.29%、CVE-2026-118773 が 0.35% です(10/30 時点)。

2 件の内容

CVE対象内容修正版
CVE-2026-118764minimatch 11.0.1 未満(勧告の範囲)外から渡されたパターンの前処理で配列が増え続け、続く 2 乗時間の比較で CPU とメモリを大量に使う11.0.1(10/27 公開)
CVE-2026-118773glob 9.0.0〜14.0.1signal/AbortSignal.timeout() で中断しても、裏でディレクトリの読み込みが続く14.0.2(10/27 公開)

CVE-2026-118764: minimatch のパターン増幅

  • 勧告によると、optimizationLevel が 2 以上のとき、前処理(firstPhasePreProcess())が **/../ を含むパターンから複製を作って同じ配列に追加し続けます。追加された分も繰り返し処理され、次の段階で全組み合わせの比較(2 乗時間)が走ります。
  • 攻撃者がパターンを指定できる使い方(検索条件や ignore ルールを利用者が入力できるサービスなど)で、CPU とメモリを使い切らせることができます。勧告は 10.2.6 で確認したと書いています。
  • 勧告の影響範囲は「11.0.1 未満」とだけあり、どの版から影響するかは書かれていません。11.0.1 以降への更新が確実です。
  • 同じパッケージには 2 月に公開された別の ReDoS 系(CVE-2026-26996・27903・27904、High)があります。この記事の対象ではありませんが、古い系列を使っている場合は併せて確認してください。

CVE-2026-118773: glob の中断が効かない

  • glob()/globStream() の内部で、中断された場合の分岐が cb() を呼ぶだけで return していません。そのため、リクエストがすでに拒否された後も、再帰的なディレクトリ読み込みが続きます。
  • 勧告の再現(glob 13.0.6、Linux、Node.js 22)では、中断後にさらに 1,360 回のディレクトリ読み込みが起きました。return cb() に直した版では 0 回です。
  • 影響は可用性のみで、機密性・完全性への影響は確認されていません。タイムアウトを走査の予算として使い、攻撃者がパターンやディレクトリ構成に影響できる場合に、タイムアウトした要求が重なって処理能力を食います。
  • 勧告は v9.0.0 から v13.0.6 まで同じ書き方だったと述べています。v14 系の 14.0.0・14.0.1 も範囲に入ります。

対応

  1. minimatch は 11.0.1 以降(npm の最新は 11.0.3)、glob は 14.0.2 以降(最新は 14.0.3)に更新します。
  2. 依存先が古い系列に固定している場合(glob の legacy-v10 10.5.0 など)は、この修正が入っているか各リポジトリで確認が必要です。勧告に旧系列の修正版は載っていません。
  3. すぐ更新できない場合は、外部から渡されるパターンの長さと種類を制限し、**/../ を含むパターンを拒否します。glob の走査はタイムアウトに頼らず、対象ディレクトリと深さを絞ります。

未確認の点

  • NVD の記載は確認できていません(公開直後)。
  • minimatch の影響が始まる版、旧系列への修正の有無は勧告に書かれていません。
  • 悪用の報告は見つかっていません(KEV 掲載なし、EPSS は低い水準)。

この記事について

出典

この記事を共有