新たに明らかになった、glob CLIのコマンドインジェクション脆弱性により、JavaScriptエコシステムで最も広く使われているユーティリティの1つが、数え切れないほどのCIパイプラインを気づかれない侵害のリスクにさらしている。
この欠陥により、攻撃者は、glob -cを通じて処理されるファイル名を操作するだけで、任意のコマンドを実行できる。
AISLEの創設者兼チーフサイエンティスト、Stanislav Fort氏は、「この脆弱性により、私たちが日々使うソフトウェアをホストするシステム上で、リモートコード実行が可能になっていた恐れがあります。週に数百万回ダウンロードされる信頼されたツールが攻撃者のコマンド実行に使えるのであれば、サプライチェーンリスクとして捉え始めなければなりません」と述べた。
同氏はさらに、「プルリクエストで提供された1つの悪意あるファイル名だけで、シークレットが侵害されたり、ビルド成果物やリリースパイプラインが気づかれないまま脆弱になったりする可能性がありました。パッチは公開されていますが、この脆弱性は、日常業務の一部として当然のように使っているツールが、攻撃者によって悪用され、私たちが認識していなかった経路へのアクセスに利用され得ることを思い起こさせます」と付け加えた。
glob CLI脆弱性の影響
この欠陥(CVE-2025-64756)はglob 10.2.0から11.0.3までのバージョンに影響し、CLIで-c/–cmdオプションを使うあらゆるワークフローが対象となる。
週に1,000万回を超えるダウンロードを記録するglobは、業界を問わずビルドツール、自動化スクリプト、CI/CDプラットフォームを支えている。
プルリクエスト、展開したアーカイブ、ユーザーアップロードなど、信頼できないファイル名を処理する環境は、露出していた可能性がある。
研究者らは、この欠陥がソフトウェアサプライチェーンと開発者ツールに内在するリスクの高まりを示していると警告している。
glob CLIの欠陥がコマンドインジェクションを可能にする仕組み
この問題の根本原因は、glob CLIが-cオプションを実装した方法にある。
この機能は、globパターンにマッチしたファイルに対してコマンドを実行することを意図していたが、影響を受けるバージョンでは、shell: trueを使って、それらのファイル名を直接システムシェルに渡していた。
これは危険な曖昧さを生んだ。POSIXシェルは、$(…)バッククォート、パイプ、その他のメタ文字を、リテラルテキストではなく実行可能な構文として解釈するからだ。
その結果、悪意のあるファイル名は引数の位置から抜け出し、任意のコマンドを実行できた。
この挙動により、完全なコード実行、認証情報の窃取、サプライチェーンの改ざんが可能になるため、この脆弱性のCVSSスコアは7.5(High)となっている。
脅威アクターにとって、悪用に必要な労力はごくわずかだ。
例えば$(touch injected_poc)のように細工したファイル名1つで、-cフラグを指定してglob CLIを呼び出すあらゆるワークフローを武器化できる。
このリスクは、継続的インテグレーション(CI)環境で特に深刻になる。ジョブがglob -c echo “**/*”のようなコマンドを実行すると、glob CLIはリポジトリ内のファイルを再帰的にマッチさせ、すべてのファイル名をechoコマンドに渡す。
通常であれば、これは単にファイル一覧を表示するだけだ。しかし、globの脆弱なバージョンはシェル経由でコマンドを実行していたため、ファイル名がシェルコマンド文字列に直接挿入された。
ファイル名の1つでもシェルのメタ文字やコマンド置換構文を含んでいれば、シェルはそれをファイル名ではなく実行中のコードとして解釈する。
実際には、$(touch injected_poc)のような悪意あるファイル名が、無害な文字列ではなく命令になる。
CIジョブがglob -c echo “**/*”を呼び出すと、シェルは埋め込まれたペイロードを評価し、touch injected_pocをCIランナーの権限で実行する。
こうした権限には、ソースコード、環境変数、クラウド認証情報、ソフトウェア公開用トークンへのアクセスが含まれることが多い。
無害に見えるファイル一覧表示の手順が、攻撃者の制御するコマンドを気づかれないまま実行する処理に変わり、重大なサプライチェーン脅威となる。
悪意あるファイル名が1つ含まれるリポジトリでCIワークフローを起動するだけでよく、ユーザーの操作はそれ以上必要ない。
サプライチェーンリスクを低減する主な緩和策
この脆弱性への露出を減らし、パイプラインのセキュリティを強化するには、組織は多層的なアプローチを取るべきだ。
- パッチ適用済みのglobへアップグレード(v10.5.0、v11.1.0、またはv12.0.0)し、glob -cの使用を、より安全な–cmd-arg/-gフラグに置き換える。
- コードベース、CIワークフロー、自動化スクリプトを監査し、シェルベースのパターンや安全でないファイル名処理を確認する。また、シェルを暗黙的に起動するコマンドは削除またはリファクタリングする。
- すべてのファイル名を信頼できない入力として扱う。シェルのメタ文字を含むファイルを検証、サニタイズ、または隔離する。特にCIパイプライン、ファイル処理サービス、ユーザーアップロードのワークフローでは徹底する。
- CI/CD環境を分離し、強化する。信頼できないジョブを隔離し、権限を制限するとともに、一時的または用途を厳密に限定した認証情報を使う。
- CIランナー内でのシェル実行を制限する。シェルを使わない実行モードを優先し、すべての自動化ステップに最小権限の設定を適用する。
- 外部へのネットワークアクセスを制限または監視する。不正なファイル作成、認証情報へのアクセス、外部への持ち出し試行など、疑わしい活動を検知または阻止する。
- より広範なサプライチェーン保護策を導入する。成果物への署名、来歴の追跡、スクリプトの定期監査などにより、改ざんを検知し、侵害されたビルドが下流へ拡散するのを防ぐ。
これらの対策は、この脅威や類似するサプライチェーン脅威へのレジリエンス構築に役立つ。
日常的な開発者ツールに潜むリスク
この脆弱性は、一般的な開発ツールで見過ごされがちな設計上の判断が、深刻なセキュリティリスクを招く可能性を浮き彫りにしている。
今回のケースはコーディングミスではなく、ファイル名がどのように扱われるかについての思い込みが問題だった。これは従来のスキャナーでは見逃される可能性のある盲点だ。
組織が自動化とオープンソースツールへの依存を深める中、ビルドユーティリティの欠陥はソフトウェアサプライチェーン全体に急速に広がり得る。
CVE-2025-64756は、意図しない露出を防ぐため、日常的なワークフロー機能であっても慎重なレビューが必要だという実践的な教訓だ。
この課題は、ソフトウェアサプライチェーン全体でツール、ユーザー、自動化ワークフローの相互作用をより適切に制御するため、組織がゼロトラストアプローチへ移行しつつある理由を示している。





