sakutto
生成AI

Agentjackingとは?AIコーディングエージェントを狙う攻撃を解説

AgentjackingAIセキュリティプロンプトインジェクション

Agentjackingとは(AIエージェントを乗っ取る新攻撃)

2026年6月、AIコーディングエージェントを標的にした新しい攻撃手法が公表されました。何が起きたのか、どれほどの規模なのかを整理します。

Agentjacking 検証で確認された影響規模

2,388 組織 悪用可能な有効なDSN(公開キー)を持ち、攻撃にさらされていた組織数
85% Claude Code・Cursor・Codex への攻撃が成功した割合
100 件超 検証でエージェントが実行に至ったことが確認された件数(大企業から個人開発者まで)

Agentjackingとは何か(Tenet Security が公表した新攻撃)

Agentjacking(エージェントジャッキング)とは、偽のエラー報告ひとつでAIコーディングエージェントを乗っ取り、開発者のパソコン上で攻撃者のコードを実行させる新しい攻撃手法です。セキュリティ企業の Tenet Security が2026年6月に公表しました。狙われるのは、Claude Code や Cursor、Codex のように、外部のツールと連携しながら自律的に作業を進めるコーディング支援AIです。

根本にあるのは、AIコーディングエージェントが「読み取ったデータ」と「行動を指示する命令」を見分けられないという弱点です。 エラー監視サービスから返ってきた文章を、エージェントは開発者が読むのと同じように受け取り、本物の不具合か攻撃者が仕込んだ偽物かを確かめないまま実行に移してしまいます。

公式情報を見る →
a new class of attack 'Agentjacking' that hijacks AI coding agents into running attacker-controlled code on a developer's machine, triggered by a single fake error report and invisible to every security control. / AI coding agents cannot tell the difference between the data they read and an instruction to act. — Agentjacking の定義より

攻撃の規模と標的になったエージェント

この攻撃がどれだけ深刻かは、検証で出た数字がよく表しています。Tenet Security の調査では、攻撃を仕込めるDSN(エラーを送るための公開キー)を持つ組織が2,388も見つかりました。実際に偽のエラーを送る検証では、Claude Code・Cursor・Codex といった広く使われる主要なエージェントの85%が、攻撃者の指示どおりに動いてしまいました。

怖いのは、この攻撃に高度なハッキングが要らない点です。システムに侵入したわけでも、パスワードを破ったわけでもありません。誰でも使える公開のAPIへ、本来の使い方のとおりに偽のエラーを送っただけで成立しています。原因は特定のソフトの不具合ではなく、「AIエージェントが外部ツールから受け取った文章をそのまま信じて実行してしまう」という設計そのものにあります。 だからこそ、どれか一つの製品を直せば終わり、とはいきません。

公式情報を見る →
2,388 organizations exposed with valid injectable DSNs / an 85% exploitation success rate against injected errors, across the most widely-used agents on the market — 調査結果より

Agentjackingの仕組み(偽Sentryエラーによる間接プロンプトインジェクション)

Agentjackingは、エラー監視サービス Sentry の公開キーを入り口にして成立します。攻撃が成り立つ流れを順に見ていきます。

Agentjacking が成立する流れ

① 公開DSNを発見 フロントエンドに埋め込まれた公開の書き込み専用キーを見つける
② 偽エラーを送信 認証なしでSentryの受信口へ、攻撃者が作った偽のエラーイベントをPOST
③ 指示をmarkdownで注入 エラー本文に、整形されたmarkdownの指示を仕込む
④ エージェントが実行 エラーを調べたエージェントが、指示を正規の解決手順と誤認して実行
⑤ 認証情報を窃取 クラウドや認証の設定ファイルを探り、攻撃者へ送り出す

なぜSentryの公開キー(DSN)が悪用されるのか

入り口になるのは、Sentry の DSN と呼ばれる公開キーです。DSNは、フロントエンドのJavaScriptに埋め込んでも安全だと公式が案内している、公開の書き込み専用キーです。本来はエラーを送るためだけの安全な仕組みでした。

ところが攻撃者は、この公開DSNさえ手に入れれば、認証なしでSentryの受信エンドポイントへ偽のエラーイベントを送り込めます。送信されるイベントの中身は丸ごと攻撃者の管理下にあり、本物のエラーと見分けがつきません。 安全に公開できる前提のキーが、そのまま攻撃の足がかりに変わってしまうのです。

公式情報を見る →
a public, write-only credential that Sentry intentionally documents as safe to embed in frontend JavaScript. / No authentication beyond the DSN is required. The attacker controls the entire event payload. — 攻撃手順(Discovery / Event Creation)より

エラーが「指示」にすり替わる流れ

仕込まれた偽エラーには、整形されたmarkdownが含まれています。AIエージェントが未解決のエラーを調べようと Sentry に問い合わせると、このイベントが連携の仕組みを通じて返ってきます。エージェントの画面ではmarkdownが構造化された内容として表示され、本物の診断ガイドと区別がつきません。

その結果、エージェントは攻撃者の用意したコマンドを、不具合を直すための正規の手順だと信じて実行します。ここで使われているのが、外部ツールの出力に紛れ込ませた指示でエージェントを操る「間接プロンプトインジェクション」と呼ばれる手口です。 AIを外部サービスにつなぐほど、信頼するサービスの一つひとつが指示の侵入口になりえます。

公式情報を見る →
The injected event contains carefully formatted markdown in the message field and context key names. When the Sentry MCP server returns this event to an AI agent, the markdown renders as structured content. — 攻撃手順(Markdown Injection)より

なぜプロンプトでは防げないのか

「信頼できないデータは無視せよ」とシステムプロンプトで指示すれば防げそうに思えます。しかし検証の結果はその逆でした。Tenet Security は、システムプロンプトやスキルを通じて明確に指示しても、エージェントは攻撃者のコードを実行したと報告しています。

つまり、より良いプロンプトを書くことではこの攻撃を止められません。 弱点は個々の製品ではなく、エージェントがツールの出力を扱う設計そのものにあるためです。だからこそ、文章での指示に頼らない別の層での対策が必要になります。

公式情報を見る →
Prompt-layer defenses failed. Agents executed the payload even when explicitly instructed – through detailed system prompts and skills – to ignore untrusted data. You cannot fix this with a better prompt. — プロンプト層の対策が失敗した点より

Agentjackingへの対策とまとめ

プロンプトで防げない以上、対策は仕組みの側で講じる必要があります。開発者やチームがいま取れる備えと、提供されている対策ツールを整理します。

Agentjacking への主な対策

人間の承認を挟む パッケージ導入やコマンド実行の前に明示的な確認を必須にする(最重要)
権限を絞る サンドボックスや隔離環境で動かし、触れる範囲を最小限にする
接続先を限定する 連携するMCPサーバーを検証済みのものに絞り、出力を信頼しすぎない
対策設定を導入する Tenet 公開の「agent-jackstop」など、攻撃を抑える設定を取り入れる

開発者・チームが取れる対策

最も効くのは、パッケージのインストールやシェルコマンドの実行の前に、人間の明示的な確認を挟むことです。これだけでAgentjackingが依存する「完全自動の実行」が成立しなくなります。AIエージェントに何でも自動で任せきりにしないことが、そのまま防御になります。

加えて、エージェントを権限の限られたサンドボックスで動かせば、仮に実行されても窃取される情報を抑えられます。連携するMCPサーバーを検証済みのものだけに限定し、ツールからの出力を「信頼できる指示」ではなく「攻撃の可能性がある入力」として扱う姿勢が、根本的な備えになります。

公式情報を見る →
Requiring explicit confirmation before package installation or shell command execution removes the fully automated execution step on which agentjacking depends. / Most current agent implementations treat MCP-sourced content as authoritative data rather than as potentially adversarial input. — 推奨される対策より

Sentryの対応と対策ツール「agent-jackstop」

提供元の Sentry は、2026年6月3日に報告を受けて当日のうちに問題を認めました。ただし、プラットフォーム側での根本的な修正は「技術的に防御不可能」として見送り、特定のペイロード文字列を遮断するフィルタの導入にとどまっています。これは既知の攻撃文字列への後追いの対処であり、注入そのものを許す経路は残ります。

一方、攻撃を公表した Tenet Security は、Cursor や Claude Code を本攻撃から守る設定ファイル集「agent-jackstop」をオープンソースで公開しました。信頼できないログやテレメトリの取り込みに伴うリスクを下げる、すぐ導入できる設定として提供されています。 公式の出典や注意喚起を読むときは、ページをマークダウンに変換しておくと、手順や引用の構造が崩れず追いやすくなります。

無料ツールURLマークダウン変換URL(ウェブページ)を入力するだけでマークダウン(Markdown)に変換。見出し・表・リスト・リンクを保持したままmd化でき、LLMやRAGの前処理、調査資料の整形にも最適な無料オンラインツール。今すぐ使ってみる →

この攻撃のまとめ

Agentjackingは、偽のエラー報告ひとつでAIコーディングエージェントを乗っ取る、間接プロンプトインジェクションの代表例です。Claude Code・Cursor・Codex といった広く使われるエージェントが85%という高い割合で実行に至り、プロンプトでの指示では防げないことが示されました。AIエージェントを業務に取り入れるほど、外部ツールの出力を無条件に信頼しない設計が欠かせません。

実際にAIエージェントを日々の開発に組み込んでいる立場からも、自動実行の便利さと安全性の線引きは常に意識すべき論点だと感じます。まずは「実行の前に人が確認する」一手間を残すことから始めるのが、現実的で効果の大きい備えです。状況は今後も動くため、正確な最新情報は本文中の各出典(一次ソース)で確認してください。

無料ツールURLマークダウン変換URL(ウェブページ)を入力するだけでマークダウン(Markdown)に変換。見出し・表・リスト・リンクを保持したままmd化でき、LLMやRAGの前処理、調査資料の整形にも最適な無料オンラインツール。今すぐ使ってみる →

よくある質問

Q. Agentjackingとは何ですか?
Agentjacking(エージェントジャッキング)とは、偽のエラー報告ひとつでAIコーディングエージェントを乗っ取り、開発者のパソコン上で攻撃者のコードを実行させる新しい攻撃手法です。セキュリティ企業 Tenet Security が2026年6月に公表しました。エージェントが「読み取ったデータ」と「実行すべき指示」を見分けられない弱点を突いています。
a new class of attack 'Agentjacking' that hijacks AI coding agents into running attacker-controlled code on a developer's machine, triggered by a single fake error report and invisible to every security control. Tenet Security 公式ブログ
Q. システムプロンプトで「信頼するな」と指示すれば防げますか?
防げません。検証では、システムプロンプトやスキルを通じて「信頼できないデータは無視せよ」と明確に指示しても、エージェントは攻撃者のコードを実行しました。プロンプト層の対策では止められず、より良いプロンプトを書くことでは解決できないと結論づけられています。
Prompt-layer defenses failed. Agents executed the payload even when explicitly instructed – through detailed system prompts and skills – to ignore untrusted data. You cannot fix this with a better prompt. Tenet Security 公式ブログ
Q. 開発者やチームはどう対策すればよいですか?
最も効くのは、パッケージのインストールやシェルコマンドの実行の前に、人間の明示的な確認を挟むことです。これでAgentjackingが依存する「完全自動の実行」が成立しなくなります。あわせて、エージェントを権限を絞ったサンドボックスで動かす、接続するMCPサーバーを検証済みのものに限定する、といった多層の備えが有効です。
Requiring explicit confirmation before package installation or shell command execution removes the fully automated execution step on which agentjacking depends. Cloud Security Alliance 研究ノート

関連ツール

関連ツールカテゴリ

記事