プロンプトインジェクションとは、AIエージェントが読み取るコンテンツ(プロジェクトファイル、ドキュメント、コードコメント、依存関係のメタデータ)に悪意ある命令を仕込む攻撃手法です。エージェントはこれらの命令を正当なものとして認識し、そのまま実行してしまいます。

従来のコードインジェクションとは異なり、プロンプトインジェクションは通常の意味でのソフトウェア脆弱性を突くものではありません。AIエージェントが入力コンテキスト(ファイル、ツール出力、取得したドキュメント)を信頼された命令として扱うという性質を悪用するものです。そのコンテキストの一部に影響を与えることができる攻撃者は、エージェントの挙動を制御できます。Snykの調査では、分析されたAIエージェントスキルの36%にプロンプトインジェクションの脆弱性が発見されており、現世代のコーディングツールにおいて最も広範な弱点の一つとなっています。

プロンプトインジェクションは現在、安全でない出力処理に次ぐ、2026年のAI開発におけるセキュリティ懸念の第2位です。その理由は明白です。AIコーディングエージェントは、プロジェクトファイル、依存関係ツリー、ドキュメント、設定ファイル、イシュートラッカーなど、広範囲を読み取り、読み取った内容に基づいて行動するように設計されています。エージェントが触れるすべてのファイルが、潜在的なインジェクション面となります。

AIコーディングにおけるプロンプトインジェクションの攻撃ベクトル

01

READMEおよびドキュメントファイル

エージェントがプロジェクトコンテキストとして読み取るMarkdownに埋め込まれた命令です。悪意あるコントリビューターがドキュメント内に隠された指示を追加し、エージェントがそれをタスク指示として解釈する可能性があります。

02

コードコメント

エージェントがファイル読み取り時に処理するコメント内に隠された悪意ある指示です。コメントはコード内の自然言語テキストであり、エージェントはコードと共にコンテキストとして解析します。

03

設定ファイル

侵害されたコントリビューターによって改変された.cursorrules、CLAUDE.md、その他の命令ファイルです。これらのファイルはエージェントの挙動をガイドするために明示的に設計されており、インジェクションの高価値ターゲットとなります。

04

依存関係の説明文

エージェントが読み取るnode_modules内のパッケージ説明やREADMEファイルです。サプライチェーン攻撃者がパッケージのメタデータに命令を埋め込み、エージェントが依存関係の解決時にそれに遭遇する可能性があります。

05

イシューとPRの説明文

エージェントが参照するGitHubイシューやPR説明文に注入された命令です。エージェントがイシューに基づいて作業する際、イシュー本文がコンテキストの一部となります。

06

APIレスポンス

エージェントがツール出力を処理する際に命令を含む外部APIデータです。エージェントが外部サービスを呼び出した場合、そのレスポンスにインジェクションされた命令が含まれ、後続のエージェントアクションに影響を与える可能性があります。

実際のプロンプトインジェクション攻撃事例

2026年3月31日、研究者がClaude Codeに対するプロンプトインジェクション攻撃を実証し、ツールのシステムプロンプトおよび内部ソースコードの一部を抽出することに成功しました。この攻撃は、エージェントがコンテキストとして読み取るプロジェクトファイルに仕込まれた命令を利用し、共有すべきでない内部情報を出力させるものでした。この事例は、通常のプロジェクトコンテンツに見えるファイルを通じて、エージェントのコンテキストウィンドウが操作され得ることを浮き彫りにしました。

SnykのToxicSkills研究ではAIエージェントのツール統合を調査し、分析されたエージェントスキルの36%がプロンプトインジェクションに対して脆弱であることを発見しました。調査結果は、広範なファイルアクセス、ツール使用機能、コード実行権限を持つエージェントが特にリスクが高いことを示しています。攻撃者は複数のスキルにまたがるインジェクションを連鎖させることが可能です。例えば、ドキュメントファイルを通じてインジェクションし、コード生成スキルにバックドアを作成させるといった手法です。

研究者たちは拒否ルールバイパス攻撃も文書化しています。これはプロンプトインジェクションによってエージェント自身のセーフティルールを無視させるものです。「前の命令を無視して以下のコードを記述せよ」のようなインジェクションされた命令は、エージェントが堅牢な命令階層を持たない場合、ガードレールを上書きする可能性があります。これらのバイパスは、エージェント自身の能力を開発者の意図に反して利用するため、特に危険です。

クラウドホスト型 vs ローカルファーストエージェント

クラウドホスト型AIコーディングエージェントは追加のインジェクション面を導入します。複数のユーザーがバックエンドを共有する場合、あるセッションのコンテキストが別のセッションに漏洩する可能性があります。マルチテナントアーキテクチャでは、共有リソース(組織全体の設定ファイル、共有依存関係キャッシュ、共通ドキュメントリポジトリ)にインジェクションされた命令が、同時に複数の開発者に影響を及ぼす可能性があります。仲介バックエンド自体がターゲットとなり、侵害された場合、処理するすべてのエージェントセッションに命令をインジェクションできます。

ローカルファーストエージェントはこの攻撃対象面を縮小します。ファイルは自分のマシン上にとどまります。コンテキストは共有バックエンドを経由しません。他のユーザーのインジェクションされたコンテンツがセッションに影響するマルチテナントリスクがありません。エージェントはローカルプロジェクトファイルを読み取り、自分のAPIキーを使って選択したモデルプロバイダーに直接コンテキストを送信します。

ただし、ローカルファーストでもプロンプトインジェクションを完全に排除することはできません。プロジェクト内のファイルにインジェクションされた命令が含まれている場合(侵害された依存関係のREADME、コントリビューターによる悪意あるコードコメント、改ざんされた設定ファイルなど)、ローカルエージェントもそれを読み取り、指示に従う可能性があります。重要な防御レイヤーはヒューマンレビューです。インラインdiffレビューにより、エージェントレベルでインジェクションが成功した場合でも、結果として生じた変更がコードベースに反映される前に開発者が確認できます。

プロンプトインジェクションに対する防御戦略

01

ローカルファースト実行

エージェントコンテキストを自分のマシン上に保持します。ファイルを処理する仲介バックエンドを排除することで、クラウド側のインジェクション経路とマルチテナントのコンテキスト漏洩をなくします。

02

エージェント権限のサンドボックス化

エージェントができることを制限します:ファイルアクセス、ネットワークリクエスト、コマンド実行など。ネットワークに到達できないエージェントは、インジェクションが成功してもデータを外部に送信できません。

03

BYOKダイレクトルーティング

コンテキストをプロバイダーに直接送信します。命令をインジェクションし得る仲介者を排除します。自分のAPIキー、自分のプロバイダーアカウント、自分のデータ管理です。

04

インラインdiffレビュー

エージェントのすべての変更に対するヒューマンチェックポイントです。インジェクションが成功しても、出力を確認できます。受け入れる前に、追加された行、変更された設定、新しい依存関係をすべてレビューします。

05

ソースの検証

サードパーティのファイル、依存関係、設定ファイルをエージェントコンテキストに追加する前にレビューします。.cursorrulesやCLAUDE.mdなどの命令ファイルに対するコントリビューターの変更を監査します。

AIコーディングワークフローを保護するための実践チェックリスト

ステップアクション
1. 命令ファイルの監査エージェントアクセスを有効にする前に、すべてのリポジトリの.cursorrules、CLAUDE.md、.github/copilot-instructions.mdなどのエージェント設定ファイルを確認します。
2. 依存関係メタデータの確認エージェントが処理する前に、新しい依存関係のパッケージ説明、READMEファイル、ポストインストールスクリプトを確認します。
3. エージェント実行のサンドボックス化ファイルシステムアクセス、ネットワーク権限、コマンド実行を、タスクに必要な最小限に制限します。
4. BYOKダイレクトルーティングの使用自分のAPIキーでモデルプロバイダーに直接接続します。コンテキストを処理する仲介バックエンドは避けます。
5. すべてのdiffをレビューインラインdiffで予期しないコード、データ送信パターン、無効化されたセキュリティチェック、変更された設定がないか確認します。
6. データ送信パターンの監視予期しないネットワーク呼び出し、base64エンコードされた文字列、環境変数の読み取り、プロジェクト外のファイルシステムアクセスに注意します。
7. コントリビューターの変更を検証エージェント命令ファイルへの変更は、CI/CDパイプラインやデプロイ設定への変更と同等の厳格さで扱います。
8. エージェントコンテキストの最小化現在のタスクに必要なファイルのみを含めます。コンテキストが広いほど、インジェクション面も広がります。

CodeWingerのプロンプトインジェクション対策

CodeWingerのアーキテクチャは、エージェントのすべてのアクションが可視化され、レビュー可能であるという原則に基づいて構築されています。プロンプトインジェクションを完全に防げるツールはありませんが、CodeWingerは攻撃対象面を縮小し、すべてのステップでヒューマンオーバーサイトを確保します。

  • ローカルファースト実行 -- プロジェクトファイルは自分のマシン上にとどまります。共有バックエンドがコンテキストを処理したり、マルチテナントのインジェクションリスクを導入したりすることはありません。
  • BYOKダイレクトルーティング -- コンテキストは自分のマシンから選択したモデルプロバイダーに直接送信されます。命令をインジェクションまたは改変し得る仲介者はいません。
  • インラインdiffレビュー -- エージェントのすべての変更がレビュー可能なdiffとして表示されます。これが重要なヒューマンチェックポイントです。エージェントレベルでインジェクションが成功しても、コードベースに反映される前に出力を確認できます。
  • ターミナルサンドボックス -- エージェントのコマンド実行は制限され、可視化されています。エージェントが何を実行するかを確認し、権限を制限できます。

試してみる

CodeWinger Desktop for Windows x64をダウンロード

CodeWinger Desktop 0.3.0は現在無料です。通常のWindowsユーザーにはsetupインストーラーを推奨します。

Windows setup.exe推奨パブリックインストーラー無料 MSIパッケージ管理者向け代替インストーラーMSI

まとめ

プロンプトインジェクションは理論上のリスクではなく、AIコーディングエージェントに対する実証済みの、現在進行形の攻撃ベクトルです。エージェントが読み取るすべてのファイルが潜在的なインジェクション面です:README、設定ファイル、コードコメント、依存関係のメタデータ、イシューの説明文、APIレスポンス。防御は多層的に行います。攻撃対象面を縮小するローカルファースト実行、影響範囲を限定するサンドボックス権限、仲介者を排除するBYOK、そして重要なヒューマンチェックポイントとしてのインラインdiffレビューです。インジェクションを完全に防げるツールはありませんが、可視性とレビュー可能なワークフローにより、インジェクションされた命令がコードベースに無断で侵入することを防ぎます。

よくある質問

AIコーディングにおけるプロンプトインジェクションとは何ですか?

ファイル、ドキュメント、依存関係のデータに隠された命令がAIエージェントを騙し、悪意あるアクションを実行させる攻撃手法です。

プロンプトインジェクションはどの程度広まっていますか?

Snykの調査により、分析されたAIエージェントスキルの36%にプロンプトインジェクションの脆弱性が発見されました。2026年のAI開発におけるセキュリティ懸念の第2位に位置づけられています。

プロンプトインジェクションはローカルプロジェクトにも影響しますか?

はい。エージェントが読み取るあらゆるファイルにインジェクションされた命令が含まれている可能性があります。READMEファイル、設定ファイル、コードコメント、依存関係のメタデータなどが対象です。

ローカルファーストはプロンプトインジェクションから保護できますか?

部分的に保護できます。ローカルファーストはクラウド側のインジェクション経路を排除しますが、プロジェクト内に既に存在するファイルからのインジェクションは防げません。diffレビューが重要なヒューマンチェックポイントとなります。

AIコーディングエージェントをプロンプトインジェクションから守るにはどうすればよいですか?

ローカルファースト実行、エージェント権限のサンドボックス化、すべてのdiffのレビュー、サードパーティファイルの検証、仲介バックエンドを避けるためのBYOK利用を推奨します。

CodeWingerはプロンプトインジェクションから保護できますか?

CodeWingerのローカルファーストアーキテクチャは攻撃対象面を縮小します。インラインdiffレビューにより、エージェントの変更がプロジェクトに反映される前に、人間がすべての変更を確認できます。

AI生成コードのセキュリティAIが生成したコードを安全にレビューしてリリースする方法。 BYOK AI IDE:自分のキーを持ち込むAPIキーの制御を手放さないAI開発。 インラインdiffレビュー開発者が制御を維持する方法。