Cline、Windows上で偽のrg.exe・git.exe・powershell.exeが正規プログラムの代わりに実行される脆弱性を修正v4.1.19
日刊AIニュース10月17日(土)号:前日のAIのニュース17本を短くまとめました(約8分)›
AIコーディングエージェントCline(VS Code拡張・JetBrains版)は2026年9月17日公開のv4.1.19で、Windows上の脆弱性を修正した。リリースノートによると、rg.exe・git.exe・powershell.exeという名前のファイルを含むリポジトリを開くと、パスを付けないプログラム名がPATHより先にワークスペースのディレクトリから解決され、そのファイルがワークスペースのインデックス時にユーザーの権限で実行されていた。

AIコーディングエージェント「Cline」(VS Code拡張・JetBrainsプラグイン)を開発するCline Bot Inc.は、2026年9月17日07:51(UTC、日本時間同日16:51)公開のv4.1.19で、Windows上で起きていた脆弱性を修正した。公式リリースノート(GitHub)によると、rg.exe・git.exe・powershell.exeという名前のファイルを含むリポジトリを開くと、Clineがパスを付けないプログラム名で起動したときにPATHより先にワークスペースのディレクトリが探され、正規のプログラムの代わりにそのファイルがユーザーの権限で実行されていた。リリースノートは実行のタイミングを「ワークスペースがインデックスされた時点」と書いており、ファイルを仕込んだリポジトリを開かせるだけで成立しうる経路だったことになる。本記事の内容は、2026年9月25日(日本時間)時点のリリースページ、修正のプルリクエスト(PR #14171)、Microsoftの関数リファレンスの記述に基づく。
3行まとめ
- Clineは2026年9月17日公開のv4.1.19で、Windows上の不具合を修正した。リリースノートによると、リポジトリに
rg.exe・git.exe・powershell.exeという名前のファイルがあると、パスを付けないプログラム名がPATHより先にワークスペースのディレクトリから解決され、そのファイルが正規のプログラムの代わりにユーザーの権限で実行されていた。- リリースノートはこの状態を「仕込まれた実行ファイルが、ワークスペースがインデックスされた時点であなたの権限で実行された(a planted executable ran with your privileges as soon as the workspace was indexed)」と説明し、修正PR #14171は、それが承認より前(before any approval)に起きると書いている。
- 修正は、Windowsの
NoDefaultCurrentDirectoryInExePathという環境変数をClineが起動時に設定するもので、リリースノートによるとVS Code拡張とJetBrains版の両方に入った。Clineが起動したコマンドプロンプトの中では、カレントディレクトリのプログラムを動かすのにPowerShellと同じく.\が必要になる。
何が起きたか──事実関係
| 項目 | 内容 |
|---|---|
| 修正バージョン | v4.1.19 |
| 公開日時 | 2026年9月17日 07:51 UTC(日本時間 同日16:51)。修正PR #14171のマージは同日00:30 UTC |
| 影響を受けた環境 | Windows上のVS Code拡張と、JetBrains版のcline-coreプロセス(PR #14171の説明。どちらもClineの中核部分をNode.jsで動かしている) |
| CLI・デスクトップアプリ | PR #14171によると、Bun 1.3.13上で動いており、Bunの子プロセス起動はPATHしか探さない。Bun 1.4で同じ探索が入るのに備え、同じ設定を先に入れた |
| リリースノートが名指ししたファイル名 | rg.exe(ripgrep)・git.exe・powershell.exe |
| 原因 | パスを付けないプログラム名が、PATHより先にワークスペースのディレクトリを通じて解決されていた(リリースノート) |
| 修正内容 | WindowsのNoDefaultCurrentDirectoryInExePathを起動時に設定する(リリースノート) |
| 利用者側の変化 | Clineが起動する子プロセスもこの設定を引き継ぐため、Clineが起動したコマンドプロンプトでは、カレントディレクトリのプログラムに.\が必要(リリースノート)。VS Codeの統合ターミナルは影響を受けない(PR #14171) |
| CVE・GHSA | 2026年9月25日(日本時間)時点で見つからなかった(確認の方法は後述) |
Clineはこの件をリリースノートの「Fixed」欄の1項目として載せており、その本文に「security」「vulnerability」という語は出てこない。一方、修正PR #14171の冒頭には「セキュリティ用のチャンネルに上がった、Windowsのバイナリ・プランティング(実行ファイルの仕込み)の報告への対応(Follow-up to the Windows binary-planting report in the security channel.)」とある。本記事はこの経路を脆弱性として扱っている。
なぜ「開くだけ」で危険なのか
Microsoftの関数リファレンス(NeedCurrentDirectoryForExePathW)は、パスを付けない実行ファイル名を探すときにカレントディレクトリを探索先に含めるかどうかが、NoDefaultCurrentDirectoryInExePathという環境変数で決まると説明している(見るのは変数の値ではなく、有るか無いか)。例として挙げられているcmd.exeは、この関数がTRUEを返せば.;%PATH%(カレントディレクトリ、次にPATH)で、FALSEなら%PATH%だけで実行ファイルを探す。
修正PR #14171の説明によると、Windows上のNode.jsでchild_process.spawn("rg", ...)のようにパスを付けない名前で子プロセスを起動すると、Node.jsが使うlibuvは、PATHより先に子プロセスの作業ディレクトリを探す。libuvはこの手順を上の関数で判定しており、起動元のプロセスにNoDefaultCurrentDirectoryInExePathが定義されていないかぎり、作業ディレクトリが探される。
PRは続けて、Clineの中核部分がユーザーのワークスペースを作業ディレクトリにして起動しているプログラムを挙げている。rg(ファイルのインデックス作成と検索)、git(simple-git経由のワークスペース情報の取得とチェックポイント)、powershell/pwsh(シェルの実行とプロセス起動の確認)、taskkill.exe、フックの起動、MCPサーバーだ。そのうえで次のように書く。
"So a repository containing an
rg.exegets that file executed with the user's privileges as soon as the workspace is indexed, before any approval."(そのため、
rg.exeを含むリポジトリでは、ワークスペースがインデックスされた時点で、承認の前に、そのファイルがユーザーの権限で実行される)
リリースノートの説明も同じ趣旨だ。
"Bare program names were resolved through the workspace directory before PATH, so a planted executable ran with your privileges as soon as the workspace was indexed."
(パスを付けないプログラム名は、PATHより先にワークスペースのディレクトリを通じて解決されていた。そのため、仕込まれた実行ファイルは、ワークスペースがインデックスされた時点であなたの権限で実行された)
二つの説明を合わせると、リポジトリのうちClineが作業ディレクトリにするフォルダ(ワークスペースのディレクトリ)にrg.exeなどの名前の実行ファイルを入れておけば、Windowsの利用者がそれをClineの入ったVS CodeやJetBrains IDEで開いた時点で、利用者が何かを承認する前に、そのファイルが利用者のアカウントの権限で動きうる経路だった。
修正について、PRは「Microsoftが文書化している切り替え(Microsoft's documented switch)」を使ったと書いている。Windows上でprocess.envにNoDefaultCurrentDirectoryInExePathを設定する関数を共通ライブラリ(@cline/shared)に追加し、Clineの中核部分を動かすプロセスの起動時に1回呼ぶ。呼び出し先は、CLI、デスクトップアプリのサイドカー、VS Code拡張、JetBrains向けのcline-coreの4か所だ。変数は子プロセスにもそのまま引き継がれるので、リリースノートは、Clineが起動したコマンドプロンプトの中ではカレントディレクトリにあるプログラムにPowerShellと同じく.\が必要になる、と注記している。PRは、VS Codeの統合ターミナルは拡張機能のホストではなくptyホストから起動されるため、ターミナルのプロファイルは影響を受けないとしている。また、VS Codeでは拡張機能のホストを他の拡張機能と共有しているため、同じホストで動く他の拡張機能のプログラム起動にもこの設定が及ぶ、とも書いている。
いつからの問題か、CVEは付くのか
いつのバージョンからこの状態だったかは、リリースノートにもPR #14171の説明にも書かれていない。リリースノートにはv4.1.18...v4.1.19の比較リンクがあるだけで、本記事の確認範囲では特定できなかった。
CVE番号とGitHubのセキュリティアドバイザリ(GHSA)は、2026年9月25日(日本時間)時点では見つからなかった。当サイトが同日にNVDのAPI(services.nvd.nist.gov)を「cline windows」「NoDefaultCurrentDirectoryInExePath」「cline rg.exe」の3通りのキーワードで検索した結果はいずれも0件で、「cline」を2026年8月1日〜9月25日公開分に絞った検索も0件だった。Clineリポジトリで公開されているセキュリティアドバイザリ(Security Advisories)は3件で、2026年2月のnpmへのCLI不正公開と、クロスオリジンWebSocketハイジャック2件(CVE-2026-44211・CVE-2026-59723)であり、この件を扱ったものは無い。Clineのブログ(cline.bot/blog のアーカイブ)にも、この件を扱った記事は見当たらなかった。
実際に悪用された事例の記載は、リリースノートにもPRにも無い。PRにあるのは、セキュリティ用のチャンネルに上がった報告への対応だという一文だけだ。
他のOSについては、リリースノートは「On Windows」と書くのみで、PRも一貫してWindowsの問題として扱っている。追加された関数はWindows以外では何もしない(PRのテストの説明では「no-op elsewhere」)。
リリースノートとPR #14171で書かれている範囲の違い
利用者向けのリリースノートに書かれているのは、3つのファイル名、PATHより先にワークスペースが探されていたこと、インデックス時点での実行、VS Code拡張とJetBrains版への修正、コマンドプロンプトでの.\までだ。libuvの探索順、起動していたプログラムの一覧(taskkill.exe・フック・MCPサーバーを含む)、CLIとデスクトップアプリが対象外だったこと、統合ターミナルと他の拡張機能への影響は、PR #14171の説明文にだけある。記事中の英文の引用は、2026年9月25日(日本時間)にリリースページ・PRページ・Microsoftのリファレンスの本文と一字一句照合した。リリース日時は、リリースページのreleased thisに付いたタイムスタンプ(2026-09-17T07:51:57Z)を用いている。
出典・参照資料
大きいニュースはYouTubeでも解説しています。Xでは新着記事をお知らせしています。
コメント
まだコメントはありません。最初のコメントを書いてみませんか?
AIについて聞きたいことはありますか?
質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。
質問箱を見る →