世界を動かす技術を、日本語で。

Cursor 0day: 完全な情報開示が唯一の保護手段となる時

2026年7月15日原文(mindgard.ai)

概要

  • Cursor IDEの深刻な脆弱性についての詳細な解説
  • 攻撃手法 は極めて単純で、誰でも容易に悪用可能
  • 報告から7ヶ月以上 経過しても修正されていない現状
  • 利用者・管理者向けの暫定対策 と推奨行動
  • ベンダーの対応不備 と業界全体への問題提起

Cursor IDEにおける「git.exe」実行脆弱性の全貌

  • Cursor はAI支援型開発環境として世界中で広く利用されているIDE
  • プロジェクト読み込み時、 Cursorは複数の場所でgitバイナリを探索
  • ワークスペース直下に 悪意あるgit.exe が存在すると、 自動的に実行 される仕様
  • ユーザー操作や警告なし で任意コードが実行される危険性
  • この挙動は 繰り返し発生 し、1回きりの問題ではない

技術的詳細

  • Cursorは プロジェクトルート内のgit.exe も探索対象に含めている
  • 攻撃者が git.exeに見せかけた実行ファイル を置くだけで、IDE起動時に自動実行
  • 例として、 Windows Calculatorをgit.exeにリネーム しルートへ配置→Cursor起動で自動起動
  • 実証実験では複数回自動実行 され、ユーザーの明示的な操作は不要

影響範囲とリスク

  • 7百万人以上のアクティブユーザー1百万人以上の有料ユーザー を抱える大規模プラットフォーム
  • 企業・個人開発者問わず重大なセキュリティリスク
  • 任意コード実行 が可能なため、情報漏洩やシステム乗っ取りの危険性

利用者・管理者が今すぐ取るべき対策

  • 企業・管理環境の場合

    • AppLockerやWindows App Control でワークスペースディレクトリからのgit.exe実行を禁止
    • パスベースの拒否ルール (例:%USERPROFILE%\source\repos*\filename.exe)推奨
    • 親プロセス限定の制御 はWindows標準機能では難しく、EDRや専用セキュリティ製品利用が必要
  • 個人・一般利用者の場合

    • 信頼できないリポジトリは隔離環境 (VM、Windows Sandbox等)で開く
    • ハッシュベースのブロックリストは非推奨 (攻撃者が容易にバイナリ変更可能なため)

ベンダー対応の問題と経緯

  • 2025年12月15日 にMindgardが脆弱性を初報告
  • 複数回の再報告・フォローアップ にも関わらず、 7ヶ月以上未修正
  • CursorのCISOとのやり取りHackerOne経由での再報告 も進展なし
  • 70回以上の新バージョンリリース にもかかわらず、修正や公式アナウンスなし
  • ベンダーからの説明・進捗報告も皆無 な状況

なぜこの脆弱性が放置されているのか

  • バグバウンティプログラムの機能不全報告件数の爆発的増加 が背景に
  • AIプロダクトの普及で新種の脆弱性が急増 し、従来のトリアージ体制が追いついていない現状
  • Cursor自体の急成長SpaceX買収報道 など、経営優先でセキュリティ軽視の懸念
  • ユーザーの信頼と安全性を担保する責任の欠如

産業界への警鐘:信頼の再定義

  • AI企業はユーザーに前例のないアクセス権限を要求
  • 生産性向上=信頼ではなく、行動で信頼を獲得すべき
  • 脆弱性報告への誠実な対応やユーザーへの情報開示が信頼の要
  • 長期間未修正・無対応の場合、ユーザーは信頼を再考すべき

フルディスクロージャーに踏み切った理由

  • 協調的開示(Coordinated Disclosure)を優先する立場
  • 7ヶ月間、ユーザー保護や修正の兆候なし
  • 沈黙はユーザーの誤った安全認識を助長
  • 利用者がリスクを正しく評価し、対策を講じる機会を確保するため
  • ユーザー安全性を最優先とし、詳細情報を全面公開

まとめ

  • Cursor IDE のgit.exe実行脆弱性は 極めて単純かつ重大
  • ベンダーの対応不備 が利用者全体のリスクを増大
  • 利用者・管理者は自主的な対策 を早急に実施すべき
  • 信頼と安全のための情報公開と業界全体への問題提起

Hackerたちの意見

なんでカーソルがその後何かを実行してるの?これって一体何の黒魔術なの?決定プロセスを知りたいんだけど。カーソルってコードされてるの?よくわからないな。ちなみに、vimもファイルを読み込むと予期しない動作をすることがあったけど、それは明らかにvimの機能である%{expr}だった。でも、なんで特にgit.exeなの?これは明らかに簡単にパッチできる冗長なバグCVEに見えるけど、この機能は一体誰の役に立つの?カーソルは使ったことないし、1日も使ったことないけど、今はこれが存在する理由が気になる…

おそらく、ユーザーの実際のGitを見つけようとしてるんだろうね。そうすれば、内蔵エージェントが異なるブランチや作業ツリーのコンテキストを読み込めるから。でも、もっと安全な方法もあるし、こういうちょっとしたハッキンがAI支援のワークフローでうまくいかないところだと思う(AI支援のバグトリアージが警告を出さないのもね)。

一般的なワークフローはこんな感じだよ:

  • Cursorに既存のリポジトリを要約させて、いいREADMEを書いてもらう
  • Cursorがリポジトリを開く
  • Cursorが現在のコードを見る
  • さらに一歩進んで、コードに関するメタデータも提供したいみたい(開発中の他のブランチとか、マイルストーンとしての以前のタグとか)
  • そのために、いくつかのgitコマンドを実行するんだ

で、ここからが悪意のある行動。Cursorにリモートリポジトリを評価させると、クローンしてから作業ディレクトリでgitコマンドを実行するんだ。でも、コマンドラインから「git ...」を呼び出すと、あいまいさが出てくる。もしそのディレクトリにすでにgitファイルがあって、Windowsがそれを実行したいと思ったらどうなる? これは信頼できないリポジトリで起こるかもしれないし、思いがけず危険なブランチに切り替えた時にも起こり得る(すぐにコードが実行されるとは思わないよね)。普通は、完全修飾パス名を使って対処するんだけど。例えば、git ...の代わりにシステムにインストールされたgitのフルパスを指定する感じ。人間には面倒だけど、Cursorには簡単なことだよ。

カーソルが勝手にexeファイルを実行するのはちょっと変だし、研究者が数ヶ月間適切な反応を得られなかったのは驚きだよね。でも、計算機の例は少し誤解を招くと思う。すでに悪意のあるexeがシステムにダウンロードされている必要があるし、カーソルが実行しようとした場合、ACLがすぐに働いて、新しい署名されていないアプリを初めて実行するための許可を求められるはず。これが悪用されるには、ACLが完全に無効になっている必要があるよ。

そのプロンプトには何て書いてあるんだろう?「git.exeを実行しますか?」って?多分、カーソルがgitを実行する必要があると思って、どこかで権限がめちゃくちゃになって、そのままクリックしちゃうだろうな。しばらくWindowsを使ってないから、何か見落としてたらごめん。

同じことが起こるよ。1) 現在のgitブランチを表示するPS1がある場合 2) 現在のディレクトリをPATHに含めている場合。今、bashで高SeverityのCVEを申請すべきかな?

よくあることだね… 会社がセキュリティを優先しないのは悲しいけど理解できる。一方で、セキュリティスタートアップが(正当に)待ちくたびれて、公開開示を決めるのも理解できる。費やしたコストを取り戻すためのPRを得る手段としてね。公開開示には意味がある。でも、本当に助けたいと思っているなら、HackerOneに投稿したり、LinkedInでCISOに一度メッセージを送る以上のことができるはず。もしかしたら僕が皮肉すぎるのかもしれないけど、今の時点で誰も本当に気にしていないように感じる。

このコメント、すごく変だね。すごく曖昧で、なんか違和感がある。まるで『メン・イン・ブラック』のエイリアンが人間として通そうとしてるみたい。どうして本当に助けたいと思わないんだろう?それに、何の費やしたコスト?それはどういう意味?

これを思い出すのは、カーソル(とVSCodeもかな)で新しいプロジェクトを開くときに出るダイアログだね。IDEがユーザーに、開こうとしているプロジェクトを信頼しているかどうかを尋ねるやつ。カーソルはこれが十分なセキュリティ対策だと思ってるのかな?

承認ダイアログがないから、ここではそれが関係してこないみたいだね。これが、Microsoftがワークスペースでのコード実行に設けている「ゲート」(AI用語を使うなら)なんだけど、少なくともCursorは信頼できるワークスペースでのみgit.exeを実行するように修正してほしいな。

スタートアップは歴史的に見ても、セキュリティ重視じゃないことが多いよね。

これが大きな脆弱性だとは思わないな。最初は怖いテキストがたくさんあって、赤信号がたくさん上がってたけど、実際に「何」を話してるのかがわかるまで。悪意のある.exeをユーザーのコードフォルダに置いて、git.exeと名付ける必要があるから、これが起こるには。これって、「彼らの.bashrcをlsのエイリアスに置き換えて、実際には/tmp/mega-big-virus.shを実行するのが脆弱性だ」と言ってるのと似てると思う。確かにベクターではあるけど、すでにファイルシステムに何かを置かれていたら、もう侵害されてるってことだよ。

Hacker Newsで議論の続きを見る