1 ポイント 投稿者 GN⁺ 4 시간 전 | 1件のコメント | WhatsAppで共有
  • Windows版Cursorはプロジェクトを開く際、ワークスペースのルートにあるgit.exeを自動実行するため、悪意あるバイナリを含むリポジトリを開くだけでユーザー操作なしに任意コードが実行される可能性がある
  • Gitのパス探索範囲にリポジトリ内部が含まれており、警告や承認なしにファイルを実行するだけでなく、プロジェクトを開いている間は定期的に再実行する
  • Mindgardは2025年12月15日に報告し、HackerOneを通じて再現・連携まで完了したが、6か月以上と197件以上の新バージョンを経た後も、最新のテスト版に問題が残っていた
  • 管理されたWindows環境では、AppLockerやWindows App Controlのパスベース拒否ルールを適用し、一般ユーザーはパッチ適用まで信頼できないリポジトリをVMまたはWindows Sandboxで開く必要がある
  • 調整された公開手順ではユーザーリスクを下げられないと判断したMindgardは、すべての詳細を公開した。AI開発ツールを選ぶ際は、ベンダーのセキュリティ対応とコミュニケーション能力も信頼基準にすべきである

リポジトリを開くだけで実行されるgit.exe

  • Cursorはプロジェクトを読み込む際、複数の場所からGitバイナリを探し、検索対象には現在のワークスペースも含まれる
  • 攻撃者がリポジトリのルートに悪意あるgit.exeを配置すると、Cursorは警告や承認ダイアログ、追加のクリックなしにそれを自動実行する
  • 開発者がそのプロジェクトを開くだけで攻撃が始まり、プロンプトインジェクションやモデル操作、脱獄、メモリ破損、複雑なエクスプロイトチェーンは不要である
  • 実行されたコードは、現在のCursorユーザーの権限範囲で動作する

再現手順と反復実行の記録

  • Mindgardは安全な概念実証のため、Windows Calculatorをgit.exeにリネームしてリポジトリのルートに配置した
  • Cursorでそのリポジトリを開くとCalculatorが起動し、プロジェクトを開いたままにすると複数のウィンドウが追加で表示された
    • 研究者が複数のウィンドウを手動で開いたわけではない
    • 一度きりの起動動作ではなく、通常使用中にワークスペース内の実行ファイルを定期的に再実行した結果である
  • 実際の攻撃では、Calculatorの代わりに攻撃者が制御するコードを配置できる
  • Sysinternals Process Monitorの記録には、Cursor.exeがリポジトリ内部のgit.exeを実行し、次のコマンドを渡した履歴が残っている
git rev-parse --show-toplevel
  • 最終検証は2026年4月30日、Windows版Cursor 3.2.16で行われた

大規模なユーザー基盤に残っていた脆弱性

  • Cursorは次の規模で利用されているAI支援開発環境である
    • アクティブユーザー700万人以上
    • デイリーユーザー100万人以上
    • 有料ユーザー100万人以上
    • 利用企業5万社以上
  • 報じられた市場価値は600億ドルである
  • Mindgardは2025年12月15日に脆弱性を発見し、同日に報告した
  • 冒頭時点で、6か月以上と197件以上の新バージョンを経た後も、最新のテスト版に脆弱性が残っていた
  • 対応経過を扱う本文には、機能追加や発表が続く間に70件以上のバージョンがリリースされたにもかかわらず、問題が維持されたと記録されている
  • 単純で再現しやすい任意コード実行の脆弱性が数か月にわたり修正されず、Cursorを導入した個人・組織の双方が影響を受けた

パッチ前に適用できる暫定対策

  • 管理されたWindowsシステムでは、AppLockerまたはWindows App Controlポリシーにより、開発ワークスペースディレクトリ内の該当実行ファイル名をブロックできる
  • バイナリごとにハッシュが異なる可能性があるため、ハッシュベースのブロックリストよりも、リポジトリ・ワークスペースのルートに範囲を限定したパスベース拒否ルールが適している
%USERPROFILE%\\source\\repos\\*\\filename.exe
  • Windowsには、特定の親プロセスが実行した場合にのみ任意の子実行ファイルをブロックする一般的な組み込みルールはない
    • 親プロセスを認識する制御には、EDRまたはカスタムのエンドポイントセキュリティ製品が必要である
  • 一般ユーザーは、IDEがパッチされるまで信頼できないリポジトリを隔離されたVM、Windows Sandbox、または使い捨て環境でのみ開くべきである
  • バイナリを差し替えるたびにハッシュが変わる可能性があるため、この脆弱性ではファイルハッシュのブロックリストを信用すべきではない

報告後に停止してしまった調整手順

  • 最初の報告はCursorのsecurity.txtで指定されたセキュリティ報告用メールアドレスに送られたが、受領確認はなかった
  • Mindgardは追跡メールと公開の連絡要請を通じて、適切なセキュリティ担当者を探そうとした
  • CursorのCISOは、内部自動化の失敗により予定されていたHackerOne手順が開始されなかったと回答し、Mindgardを非公開のバグバウンティプログラムに手動で招待した
  • HackerOneに再提出した報告は、当初Informativeかつ対象外としてクローズされた
    • Mindgardはその判定に異議を申し立てた
    • HackerOneが問題を再現した後、報告を再オープンし、詳細がCursorに共有されたことを確認した
  • その後、更新要求やHackerOne経由のエスカレーション、CursorのCISOおよび経営陣への直接連絡にも、意味のある回答はなかった
  • Mindgardは、修正が開始された、エンジニアリングチームが調査中である、または影響を受けるユーザーにリスクが伝達されたという証拠を得られなかった

報告から完全公開までのスケジュール

  • 2025年12月15日

    • Mindgardが脆弱性を発見
    • security-reports@cursor.comへ報告
  • 2025年12月18日

    • 受領確認を求める追跡連絡を送信
  • 2026年1月13日

    • Cursorの連絡担当者を探すためLinkedInに投稿
    • コメントであるユーザーがCursorのCISOを示した
  • 2026年1月15日

    • CursorのCISOが、HackerOneの非公開バウンティ招待自動化の失敗を伝え、手動で招待
    • MindgardがHackerOne経由で脆弱性を提出
  • 2026年1月16日

    • 報告がInformativeかつ対象外としてクローズ
    • Mindgardが判定に異議申し立て
    • 再現成功後に報告が再オープン
  • 2026年1月20日

    • HackerOneがCursorに報告を送達したと確認
  • 2026年2月16日、3月3日

    • Mindgardが更新を求めたが返答なし
  • 2026年3月17日

    • CursorのCISOに直接更新を要請
  • 2026年3月18日

    • HackerOneがCursorに連絡したと通知
  • 2026年4月1日

    • Mindgardが再び更新を求めたが返答なし
    • HackerOneもCursorから更新がないことを確認
  • 2026年6月1日

    • Mindgardが公開の意思をHackerOneに通知
  • 2026年6月3日

    • HackerOneが公開ガイドラインを提供
  • 2026年7月14日

    • 脆弱性の詳細を含む投稿を公開

調整された公開がユーザー保護につながらなかった理由

  • 一般的な調整公開は、報告、対話、深刻度の議論、エンジニアリング調査、修正開発、ユーザー保護、公開の順で進む
  • この手順は、すべての参加者がリスク低減という目標を共有しているときに機能する
  • 今回の事例では、7か月間にわたりベンダーの意味ある関与がなく、リスク低減の段階まで進めなかった
  • 大規模で急速に変化するプラットフォームでは修正に時間がかかる可能性はあるが、数か月間にわたりコミュニケーションや更新、目に見える進展がない状況では、待ち続けるのは難しい
  • 研究者には二つの選択肢しか残されなかった
    • 沈黙を保ち、ユーザーが安全だという誤った前提のもとで作業を続けるのを許す
    • 公開によって組織がリスクを把握し、対応の要否を判断できるようにする
  • Mindgardは、ほかのすべての経路が失敗したときに用いる完全公開を選んだ

バグバウンティとAIセキュリティ対応体制が残した問い

  • 解決が遅れた原因として、次の可能性が問われている
    • 現代のバグバウンティプログラムは過負荷状態なのか
    • Mythosのように能力が高まったモデルのため、報告件数を処理しきれなくなっているのか
    • CursorがSpaceX買収に集中するあまり、ユーザー安全の優先順位を下げたのか
    • 数十億ドルが絡む状況で、ユーザー安全は本当に関心事なのか
  • AI製品の拡大により、セキュリティ上の発見件数は大きく増えており、その多くは既存の脆弱性分類にきれいには当てはまらない
  • 約20年間依存してきた分類・受理手順は、AI環境で前提が揺らぐにつれ急速に機能不全に陥っている
  • 公開パイプラインが過負荷状態なら、業界はそれを透明に知らせ、研究者・顧客・ユーザーが状況を判断できるようにすべきである
  • 急成長する企業は、セキュリティ上の失敗を是正すると同時に、ユーザーを購入実験の対象ではなく価値ある顧客として扱うべきである

AI開発ツールを信頼するための条件

  • AI企業は、コードやリポジトリ、ターミナル、秘密情報、ワークフローに対して前例のない広いアクセス権を要求し、提案と実行の境界も次第に曖昧になっている
  • ユーザーは本番ソフトウェアに、ソースコードや認証情報、独自知的財産、ますます自律化する機能を委ねている
  • 生産性を高めるという理由だけでシステムを信頼してはならず、セキュリティ報告への対応、影響を受けるユーザーとのコミュニケーション、修正の優先順位付けを通じて信頼を得る必要がある
  • 信頼には責任が必要であり、責任にはコミュニケーションが必要だが、ユーザー・研究者・公開プラットフォームが数か月にわたり基本的なステータス更新すら受け取れないなら、その責任を確認するのは難しい
  • Mindgardは、組織が露出範囲を評価し、補完的統制を適用し、セキュリティ状態を判断する機会を与えるため、すべての詳細を公開した
  • 情報を隠し続けることがユーザーではなく沈黙だけを守る段階に至ったなら、不都合であってもユーザー安全を優先すべきである

1件のコメント

 
GN⁺ 4 시간 전
Hacker News の意見
  • セキュリティ報告を受ける側として、LLM が生成した低品質な報告が手に負えないほど押し寄せており、たいていは製品設計やセキュリティ上のスコープを理解していない内容である。まれに非常に良い報告もあるため、すべて人手で確認しなければならないが、LLM が作った冗長な「根拠」をさらに送ってくるやり方は解決策ではなく、この記事も大半が LLM で書かれたように見える
    今回の件も、ソフトウェアが任意のコードやバイナリを実行できる環境に悪意あるバイナリを置いた場合の話であれば、Cursor がユーザー環境のセキュリティまで責任を持つと言わない限り、ワークスペースを隔離して保護する側の責任に近いように見える
    LLM で CVE 報告書を作るときは、決定的に再現する手順に活用し、本文は自分で簡潔に書き、LLM 特有の不要な形容詞や誇張を取り除いてほしい

    • 新しくクローンしたリポジトリを Cursor で開いただけで、その中のバイナリが自動実行されてはならない
    • PATH 変数はまさにこの種の問題を制御するために存在する。理解が正しければ、Cursor はユーザーの承認なしにリポジトリを即座に PATH に追加している
    • 簡単な解決策はなく、セキュリティを重視するなら、変化した環境に合わせてレビュー要員をさらに投入する必要がある。LLM による検査をもう一段重ねても解決しない
  • 問題の根は、Cursor がリポジトリのクローンとコード実行を別々のセキュリティ境界として見ていない点にある。Cursor はデフォルトで Workspace Trust を無効化しており[0]、.vscode/tasks.json"runOn": "folderOpen" が入ったリポジトリを開くだけで、すでに任意のコードが実行される[1]
    [0] https://cursor.com/docs/agent/security#workspace-trust
    [1] https://www.oasis.security/blog/cursor-security-flaw

  • Mindgard は2025年12月15日に脆弱性を初めて発見し、当日およびその後複数回報告したが、6か月と197以上の新バージョンが経過した後も最新の Cursor に残っているという
    当初は情報提供扱い・対象外の報告としてクローズされ、異議申し立て後に HackerOne が再オープンして再現し、Cursor に伝えたものの、その後の更新依頼、追加問い合わせ、HackerOne 経由でのエスカレーション、Cursor 経営陣への連絡まで、いずれも返答がなかったというのだから、Cursor がなぜこのように対応しないのか理解しがたい

    • CVE の処理手順そのものが壊れている。エージェント型 AI の発展により、HackerOne や企業の脆弱性開示プログラムには、低品質な報告と本当に優れた報告が同時に急増しており、同じ AI がその両方を書いているため、表面だけ見て見分けるのはほぼ不可能になっている
      その結果、企業は以前のようには応答しなくなっており、6月のサイバーセキュリティ会議でも、責任ある開示は死んだ、あるいは死につつあるので、公に明かしたほうがよいという雰囲気が強かった。Microsoft と Nightmare Eclipse の件がよく引用されていた
    • 意図的なバックドアである可能性も頭に浮かぶ。NSA や FBI が標的用リポジトリに git.exe を入れて、標的にクローンさせればペイロードを実行できる
      Cursor が VS Code ベースである以上、VS Code でも同じことが起きるのか気になる
  • これが重大な脆弱性だという点に完全には同意しにくい。実際に悪用するには、攻撃者がユーザーのコードフォルダに git.exe という悪意ある実行ファイルを先に置く必要があり、これは .bashrc を変更して ls/tmp/mega-big-virus.sh を実行するようにエイリアスを作ることを脆弱性と呼ぶのに近い
    攻撃経路であることは確かだが、そのようなファイルがすでにファイルシステムに入っているなら、先行侵害が起きている状態と見なせる

    • GitHub リポジトリをクローンして、標準エディタである Cursor で開くだけで感染し得る。これは CD を入れると autorun.exe が実行され、Windows が感染するのと同じである
      すべてのリポジトリファイルと git.exe のような怪しいバイナリをユーザーが隔離環境で自分で検査すべきだとも言えるが、現実にはユーザーではなく自動実行を防ぐセキュリティポリシーがこれを制御しており、Cursor も同様に無効化すべきである
    • .bashrc と違い、コードフォルダは信頼できない出所から頻繁に取得する。GitHub プロジェクトをレビューしようとして開いただけで、任意コード実行まで許可してはならない
      ただし主要な IDE では、こうした境界はすでにかなり前から崩れており、VS Code の SSH や devcontainer のリモート機能も設計上、リモートコード実行を許可している
    • ページ冒頭の段落から、Cursor がプロジェクトを開いた後、現在のワークスペースを含む複数の場所で Git バイナリを探し、リポジトリルートに悪意ある git.exe を置くと、ユーザー入力や確認なしに実行すると、2文で明確に述べている。中核となる挙動を隠した記事ではない
    • リポジトリをクローンして IDE で開くだけで、リポジトリ所有者にリモートコード実行権限を与えるに等しく、これはフォルダを開く行為に暗黙的に含まれる契約とは考えにくい
    • 30年前にも、MP3 や写真フォルダに感染した代替 DLL を入れて Winamp や Windows フォトビューアーに読み込ませるDLL 検索順序攻撃があり、今回の件と非常によく似ている
  • Cursor が確認なしに任意の実行ファイルを実行するのはおかしいし、研究者が数か月にわたってまともな回答を得られなかったことも懸念される
    ただし電卓を起動する例はやや誤解を招く可能性がある。悪意ある実行ファイルはすでにシステムにダウンロードされている必要があり、Cursor が実行を試みると ACL が機能し、署名されていない新しいアプリを初めて実行するかどうか権限を求めるはずだと理解している。実際の悪用にはACL が完全に無効化されている必要があるかもしれない

    • 確認ダイアログに「git.exe を実行しますか?」と出たら、Cursor が Git を必要としているのに権限設定がこじれているのだと思い、そのまま承認する可能性が高い
    • 現在の Git ブランチを表示する PS1 を使い、現在のディレクトリを PATH に含めている場合にも同じことが起こり得る。だとすれば Bash にも高リスク CVEを提出すべきなのか疑問である
  • Cursor固有のバグというより、Windows が PATH を見る前に現在の作業ディレクトリで実行ファイルを探す、Windows 特有の検索順序に関係しているように見える。Windows の多くのプログラムが同様の攻撃にさらされる可能性が高い

    • セキュリティを重視するソフトウェアは、この問題をすでに修正している
      https://go.dev/blog/path-securityで説明されているように、CommandLookPath は OS の慣例に従って現在の PATH に列挙されたディレクトリからプログラムを探すが、現代ではカレントディレクトリを含める挙動はたいてい想定外であり、セキュリティ問題につながる
      https://pkg.go.dev/os/exec#hdr-Executables_in_the_current_di...
    • 既知のシステムパスから実際の Git 実行ファイルを探すか、ユーザーにパスを設定させれば容易に緩和できる。VS Code もその方式で処理していると理解している
    • Windows 向けソフトウェアを開発する際に必ず防御すべき、古くからよく知られたセキュリティ上の落とし穴である
    • そうであれば、結局 Cursor の Windows 版にバグであり脆弱性でもあるものが存在する、という意味に聞こえる
  • 企業がセキュリティを優先しないことはあまりにもよくあり、残念だが理解できる面もある。セキュリティスタートアップが待ちくたびれて、投下コストの一部でも広報効果として回収しようと公開するのも理解できるし、公開による脆弱性開示が必要な場合もある
    ただ、本当に解決を助けたかったのであれば、HackerOne で催促し、CISO に LinkedIn メッセージを一度送る以上のことはできたように思う。今となっては、誰も本気で気にしていないように見えて苦い気持ちになる

    • 何をすれば本気で解決を助けることになるのか、またここで言うサンクコストが正確に何なのかは不明瞭。全体的にあまりに曖昧に聞こえる
  • Cursor がなぜ実行ファイルを自動実行するのか、どのような意思決定フローからこの挙動が生まれたのかが気になる。Vim も %{expr} のような明示的機能により、ファイル読み込み時に予期しないコードを実行してしまう問題があったが、Cursor がなぜよりによって git.exe を探すのか、誰の役に立つ機能なのか理解しにくい
    簡単に修正できそうな重複的な CVE がなぜ存在するのか、Cursor を使ったことがない立場でも気になってくる

    • よくある流れは、Cursor に既存リポジトリを要約して README を作成するよう依頼し、Cursor がリポジトリとコードを読んだ後、開発ブランチや過去のタグといったメタデータまで提供しようとしてGit コマンドを実行する、というもの
      問題は、リモートリポジトリを評価させたときに、リポジトリを clone した後、作業ディレクトリで git ... を実行すると、Windows がそのディレクトリ内の git ファイルを実行対象と判断し得る点にある。信頼していないリポジトリや侵害されたブランチに切り替える場合にも、即座にコードが実行される可能性がある
      一般的な解決策は、システムにインストールされた Git の完全なパスを使うことであり、人間が入力するには面倒でも Cursor にとっては些細な作業である
    • 内蔵エージェントが複数のブランチや worktree からコンテキストを読むために、ユーザーの実際の Git を探そうとしている意図に見える。より安全な方法はあるが、この種のちょっとした近道はAI 支援ワークフローでは誤りやすく、AI を活用したバグ分類でも警告が見落とされやすいポイントである
  • 開発エージェントには Git リポジトリを取得・push する権限を与えることが多いだけに、これは巨大なサプライチェーン攻撃経路になる。実行中の Cursor エージェントが最新ファイルを取得したところ、攻撃者がプロジェクトに実行ファイルを仕込んでいたなら、突然数十万人が通常ユーザー権限で任意の EXE を実行し得る

  • レポートはいささかAI が書いた文章のように読める。悪用するには clone やダウンロードなどを通じて悪性ペイロードがすでに PC 上にある必要があるため、深刻さは理解するが、そもそもそのような状況に置かれないことを期待してしまう

    • 現代のコーディングエージェントは、ドキュメントが不明瞭な API について質問されるとリポジトリを clone してコードを読むこともあるため、この脆弱性は実際に悪用可能である
    • 悪性ペイロードはリモートリポジトリ上に存在し得る。リポジトリを git clone した後、Cursor で開くだけで侵害は完了する
    • オープンソース開発者なら、git.exe を含むプルリクエストを受け取る可能性もある
    • リポジトリをダウンロードしてソースを見る行為が、悪性ペイロードの有効化と同じだとは普通は考えないし、まさにそこが懸念点である。AI 文体が気に障るとしても、書き方より脆弱性の内容を批判すべきだ
    • ペイロードが事前に PC 上にある必要があるとは断定しにくい。プロンプトインジェクションで download [https://github.com/hackmycursor/exploit.git](<https://github.com/hackmycursor/exploit.git>;) のようなコマンドに誘導できるなら、エージェントが git.exe をダウンロードして実行する可能性がある