【GitHubから突然メール】globの脆弱性ってなに?

GitHubから突然、globの脆弱性メールが届いたけど…これ何?
「globってそもそも何をしているライブラリ?」

この記事でわかることは下記のとおり。

この記事でわかること
  • GitHubから届いた「globの脆弱性警告」の正体がわかる
  • どのglobバージョンが危険で、どれが安全かが明確になる
  • 具体的な修正手順がわかる

この記事では、下記の情報をもとに「globの脆弱性と対処法」を解説します。

結論から言うと、今回のglob脆弱性は「npmパッケージのglob」が対象で、適切にアップデートすれば解決します

UNIXコマンドのglob自体が危険という話ではありません。

この記事を読めば、 「この警告は無視していいのか?」「どこをどう直せばいいのか?」と悩むことはなくなります。

依存関係にglobが含まれていても、安全な状態に自信をもってアップデートできるようになるでしょう。

目次

GitHubからの脆弱性報告

ある日、GitHubから以下のようなメールが届きました。

翻訳すると下記のようになります。

あなたの GitHub アカウント内の 1 つのリポジトリが、glob で見つかったセキュリティ脆弱性の影響を受けている可能性があります。

glob CLI:-c--cmd オプションでコマンドインジェクション、マッチしたファイル名を shell: true で実行してしまう脆弱性

globとは?

簡単に言うと 、globとは「ファイル名をパターン(ワイルドカード)でまとめて扱う仕組み/ツール」です。

*.js**/*.md のようなパターンで ファイルやディレクトリを一括で探す仕組みです。

npmの glob パッケージは何をするもの?

Node.js 向けにこの glob の仕組みを JavaScriptから使えるようにした定番ライブラリが存在します。

npmでインストールしたあと、以下のようにimportすれば使えるでしょう。

JavaScript
import { glob } from "glob";

今回の問題は、このNode.js向けのglobパッケージにコマンドインジェクションの脆弱性が見つかったというものです。

どんな問題?

問題の詳細は下記のURLから。

GitHub
CVE-2025-64756 - GitHub Advisory Database glob CLI: Command injection via -c/--cmd executes matches with shell:true
あわせて読みたい

要約すると、globでコマンドインジェクション[1]が発生する問題です。

コマンドインジェクションとは、外部からの入力を介して不正にOSコマンドが実行されてしまう脆弱性です。

今回の問題では、本来は“データ”として扱うはずのファイル名などの文字列が、プログラムの想定を超えて“コマンドとして実行”されてしまいます。

具体的には以下のようなコマンドが問題視されています。

問題となるコマンド

glob -c "echo" "**/*.js"

  • -c / --cmd
    • マッチしたファイル名を引数にして 外部コマンドを実行する

ファイル名がそのまま shell に渡される実装だったため、今回の「コマンドインジェクション」脆弱性が発生しました。

問題が起きるglobのバージョン

今回問題があるバージョンは、

問題があるバージョン
  • 10.2.0以上で、 10.5.0未満
  • 11.0.0以上で、 11.1.0未満

です。安全なバージョンは、

安全なバージョン
  • 10.5.0 以上
  • 11.1.0 以上

となります。

globのバージョン確認

npm ls globでバージョンがわかります。

PowerShell
> npm ls glob  
vscode-markdown-clip@1.0.7 C:\Users\user\github\vscode-markdown-clip
└─┬ @vscode/test-cli@0.0.12
  ├─┬ c8@10.1.3
  │ └─┬ test-exclude@7.0.1
  │   └── glob@10.3.0 deduped
  ├── glob@10.3.0
  └─┬ mocha@11.7.5
    └── glob@10.3.0 deduped

このようにglobが問題あるバージョンの範囲内でした。そのため、バージョン修正が必要となります。

問題解決方法~バージョン修正~

脆弱性問題を解決するために、globのバージョンを修正しましょう。

バージョンを修正するには2つのステップが必要です。

  1. ncu -uでpackage.json更新
  2. npm installでインストール

ncuでpackage.jsonを更新

npm-check-updatesを使うと、package.jsonのバージョン更新ができる。

PowerShell
npm install -g npm-check-updates

ncu単体だとアップデート情報の確認のみなので、オプション-uをつけることで、package.json が更新される。
ただし、インストールは一切しない

PowerShell
> ncu -u
Upgrading C:\Users\user\github\vscode-markdown-clip\package.json
[====================] 10/10 100%

 @types/mocha           ^10.0.6  →  ^10.0.10
 @types/node               18.x  →      25.x
 @types/vscode          ^1.95.0  →  ^1.107.0
 @vscode/test-cli        ^0.0.4  →   ^0.0.12
 @vscode/test-electron   ^2.3.8  →    ^2.5.2
 copy-paste              ^1.5.3  →    ^2.2.0
 eslint                 ^8.56.0  →   ^9.39.2
 markdown-it-attrs       ^4.2.0  →    ^4.3.1
 typescript              ^5.3.3  →    ^5.9.3

npm install でパッケージを更新

あとは、npm install を実行すると更新されています。

npm ls globで確認してみましょう。

PowerShell
> npm ls glob
vscode-markdown-clip@1.0.7 C:\Users\user\github\vscode-markdown-clip
└─┬ @vscode/test-cli@0.0.12
  ├─┬ c8@10.1.3
  │ └─┬ test-exclude@7.0.1
  │   └── glob@10.5.0 deduped
  ├── glob@10.5.0
  └─┬ mocha@11.7.5
    └── glob@10.5.0 deduped

無事globが安全なバージョンに更新されました。

よくある質問

GitHubから届いた「globの脆弱性警告メール」とは何ですか?

GitHubが、リポジトリ内で使用されている npm パッケージ「glob」に既知のセキュリティ脆弱性が含まれている可能性を検知し、通知してくれる警告メールです。今回の警告は、glob の CLI オプションによりコマンドインジェクションが発生する恐れがある点に関するものです。

出展: https://github.com/advisories/GHSA-5j98-mcp5-4vw2/

globとは何ですか?

glob とは、*.js**/*.md のようなワイルドカードを使って、複数のファイルやディレクトリをまとめて扱うための仕組み・ツールです。主にファイル検索や一括処理で利用されます。

出展: https://github.com/isaacs/node-glob

今回問題になっている glob は UNIX コマンドの glob ですか?

いいえ、今回の脆弱性は Node.js 向けの npm パッケージ「glob」に関する問題です。UNIX シェルに組み込まれている glob 機能そのものが問題になっているわけではありません。

出展: https://github.com/advisories/GHSA-5j98-mcp5-4vw2/

コマンドインジェクションとは何ですか?

本来はデータとして扱うべき入力値が、そのまま OS コマンドとして解釈・実行されてしまう脆弱性です。攻撃者が意図しないコマンドを実行させることで、情報漏えいやシステム侵害につながる恐れがあります。

出展: https://group.gmo/security/cybersecurity/cyberattack/blog/os-command-injection/

脆弱性の影響を受ける glob のバージョンはどれですか?

影響を受けるのは、10.2.0以上〜10.5.0未満、および 11.0.0以上〜11.1.0未満のバージョンです。これらの範囲に該当する場合、修正が必要です。

出展: https://github.com/advisories/GHSA-5j98-mcp5-4vw2/

安全な glob のバージョンはどれですか?

修正済みで安全とされているのは、10.5.0以上、または 11.1.0以上のバージョンです。いずれかにアップデートすることで脆弱性は解消されます。

出展: https://github.com/advisories/GHSA-5j98-mcp5-4vw2/

プロジェクトで使われている glob のバージョンはどうやって確認しますか?

npm ls glob コマンドを実行することで、プロジェクト内で依存している glob のバージョンを確認できます。直接依存・間接依存のどちらも確認可能です。

出展: https://docs.npmjs.com/cli/v10/commands/npm-ls

globの脆弱性への対応方法は何ですか?

npm-check-updates (ncu) を使って package.json の依存関係を更新し、その後 npm install を実行して glob を安全なバージョンへアップデートします。これにより脆弱性の影響を回避できます。


出展: https://www.npmjs.com/package/npm-check-updates

まとめ

この記事では、glob(npmパッケージ)の脆弱性とその対応方法についてまとめました。

記事のまとめ
  • GitHubから「glob にコマンドインジェクションの脆弱性がある」という警告メールが届いた
  • globとは、ファイル名をワイルドカードでまとめて扱う仕組み・ツールである
  • 今回問題になっているのは Node.js 向けの npm パッケージ「glob」である
  • -c / --cmd オプションにより、マッチしたファイル名が shell: true で実行されてしまう実装だった
  • その結果、ファイル名を通じて OS コマンドインジェクションが発生する可能性があった
  • 脆弱性の影響を受けるバージョンは
    • 10.2.0以上〜10.5.0未満
    • 11.0.0以上〜11.1.0未満
  • 安全なバージョンは
    • 10.5.0以上
    • 11.1.0以上
  • npm ls glob で、プロジェクト内で使われている glob のバージョンを確認できる
  • 修正方法は、npm-check-updates (ncu) を使って package.json を更新し、その後 npm install を実行する
  • 実際に更新後、glob が安全なバージョンへ切り替わったことを確認できた

今回の記事では、GitHubからの脆弱性通知をきっかけに、globとは何か、どのような問題があったのか、影響を受けるバージョン範囲、そして具体的な解決手順までを順を追って解説しました。

問題のあるglobには、-c / --cmd オプションを使った場合、マッチしたファイル名を shell: true の状態で外部コマンドとして実行してしまう実装が含まれていました。

そのため本来は単なる文字列として扱われるべきファイル名が、意図せず OS コマンドとして解釈・実行されてしまいます。

結果として ファイル名を経由したOSコマンドインジェクションが発生する可能性がありました。

これが、今回の脆弱性の概要です。


  1. OSコマンドインジェクションとは?仕組みや被害事例、効果的な対策を解説|総合ネットセキュリティサービス|GMOセキュリティ24 ↩︎

よろしければハートマークを押してくださると幸いです!
大変励みになります😄
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次