{
  "schemaVersion": "1.0",
  "language": "ja",
  "canonicalUrl": "https://catalysphere.co.jp/articles/prompt-injection-enterprise-controls/",
  "machineReadableUrl": "https://catalysphere.co.jp/articles/prompt-injection-enterprise-controls/index.json",
  "publisher": {
    "name": "Catalysphere",
    "url": "https://catalysphere.co.jp/",
    "description": "AIとビッグデータを研究し、実務へつなぐリサーチ＆コンサルティングスタジオ。"
  },
  "article": {
    "slug": "prompt-injection-enterprise-controls",
    "title": "プロンプトインジェクション対策は、命令検出より権限境界から始める",
    "summary": "不審な文章をフィルターするだけでは、外部データを読みツールを動かすAIを守れません。攻撃評価、構造化入力、公式分類から多層防御を整理します。",
    "takeaways": [
      "プロンプトインジェクションは文章上の注意書きだけでは解消せず、権限とデータ流を含むシステム境界で防ぐ必要があります。",
      "モデルは信頼する命令と外部データ内の命令を完全には分離できず、ツール権限があると誤追従が実操作へ変わるためです。",
      "命令とデータの分離、最小権限、許可済み操作、実行前確認、適応的な攻撃試験、監査ログを重ねます。"
    ],
    "publishedAt": "2026-07-13",
    "updatedAt": "2026-10-01",
    "readingMinutes": 13,
    "topics": [
      "プロンプトインジェクション",
      "AIセキュリティ",
      "エージェント",
      "アクセス制御"
    ],
    "domains": [
      "generative-ai",
      "governance-risk",
      "organization-adoption"
    ],
    "evidenceKind": "research-review",
    "status": "published",
    "image": {
      "prompt": "Abstract scientific editorial illustration for the research question “業務AIのプロンプトインジェクションは、どう防ぐのか”, interpreted symbolically rather than typographically: separate knowledge clusters connected through a shared operating network, with a few gold checkpoints making coordination and handoffs visible; deep Catalysphere navy and indigo field, muted scientific blue, restrained antique-gold structure, translucent geometry, fine particles, subtle paper grain, generous negative space, one clear centered metaphor that survives a narrow mobile cover crop, calm premium research-journal art direction, no readable text, no logo, no literal chart, no photorealistic people.",
      "negativePrompt": "text, letters, numerals, watermark, logo, dashboard UI, humanoid robot, server rack, binary rain, stock-photo office, literal quantitative chart, red alarm graphics, neon cyberpunk, purple gradient, clutter",
      "alt": "複数の知識クラスターが金色の検証点を介して一つの運用ネットワークへ接続する抽象図",
      "aspectRatio": "16:9",
      "assetPath": "article-art/prompt-injection-enterprise-controls.png",
      "status": "approved"
    },
    "lead": "メールやウェブページに埋め込まれた命令を、AIが利用者の指示より優先したら何が起きるでしょうか。AgentDojoは外部データ経由の攻撃を現実的なツール環境で測り、StruQは命令とデータの構造分離を試し、NISTは生成AI攻撃を広いライフサイクルで整理しています。[1][2][3]",
    "sections": [
      {
        "heading": "攻撃面は、チャット欄の外へ広がっている",
        "paragraphs": [
          "ツールを持たないチャットでも、入力中の命令が本来の指示を上書きする危険があります。メール、検索結果、共有文書、ウェブページを読むエージェントでは、攻撃者が利用者と直接会話しなくても、取得データへ命令を書き込めます。モデルがそれをデータではなく指示として扱うと、情報の持ち出しや意図しない操作へ進みます。",
          "AgentDojoは、メール、電子銀行、旅行予約などを模した環境に、97の通常タスクと629のセキュリティ試験事例を用意しました。最先端モデルは攻撃がない状態でも一部タスクに失敗し、既存攻撃と防御は安全性の一部を破ったり守ったりするものの、万能ではないと報告しています。[1]",
          "最初に、攻撃文字列ではなく資産と経路を棚卸しします。外部データがどのモデル入力へ入り、そのモデルがどの機密を読めて、どのツールで状態を変えられるかを一枚の流れにします。通常タスクが失敗しただけなのか、攻撃入力によって権限外の読取や操作へ進んだのかを分け、後者が再現する経路は機能公開の対象外にします。[1]"
        ]
      },
      {
        "heading": "文字列フィルターだけでは、命令とデータを分けられない",
        "paragraphs": [
          "禁止語、固定の注意文、攻撃例のブラックリストは、表現を変えた命令や新しいデータ源に弱くなります。外部文書をそのままシステムプロンプトへ連結すれば、信頼境界はテキスト上で消えます。まず、開発者の命令、利用者入力、検索結果、ツール出力を別の型と経路で扱う必要があります。",
          "StruQは、プロンプトと利用者データを二つのチャネルへ分け、データ側の命令を無視するよう特別に学習したモデルを組み合わせました。少なくとも15種類のプロンプトインジェクションを含む評価で、実用性への影響を小さく保ちながら耐性を大きく改善したと報告しています。[2] ただし専用学習を要し、一般APIへ区切り記号を足すだけの対策ではありません。",
          "構造分離の効果は、同じ内容を信頼命令と不信データへ置き分ける対照試験で確認します。データ側の命令に従わず、同時に正当なデータ質問へ答えられることを両方満たして初めて合格です。拒否率だけが上がる場合は安全性向上ではなく機能喪失という代替説明があるため、攻撃阻止と通常業務成功を別指標にします。[2]"
        ]
      },
      {
        "heading": "モデル防御より先に、実行権限を狭める",
        "paragraphs": [
          "モデルが攻撃文を読んでも、読み取り専用で機密へ届かず、外部送信や購入を実行できなければ影響は小さくできます。ツールごとに利用者、対象、操作、金額、送信先を許可リスト化し、必要な瞬間だけ短い権限を渡します。取得した文章が新しいツール権限を要求しても、自動では増やしません。",
          "NIST AI 100-2e2025は、生成AIに対する回避、ポイズニング、プライバシー、悪用を含む攻撃分類と緩和策を整理し、既存緩和策の限界も扱っています。[3] この考え方に沿えば、プロンプトインジェクションをモデル一個の不具合ではなく、データ取得、推論、ツール、出力、監視を通る攻撃経路として脅威モデル化できます。",
          "権限試験では、モデルが何を答えたかより、許可されない操作が実行層で拒否されたかを確かめます。利用者、対象、操作、送信先のいずれかが許可範囲外なら、モデルが正当と説明しても拒否される必要があります。モデル防御を外した対照条件でも被害操作が成立しないことを、実行基盤を別製品へ移す際の移植条件にします。[3]"
        ]
      },
      {
        "heading": "単体権限ではなく、操作の連鎖を監査する",
        "paragraphs": [
          "StruQは専用学習を含む命令・データ分離を評価し、NIST文書は攻撃と緩和策の分類を提供しますが、どちらも個別企業の複数ツール連鎖が安全だと認証するものではありません。[2][3] したがって、各ツールの許可表だけでなく、許可同士をつないだ時の到達先を別に調べます。",
          "以下は仮想的な検査例です。ある操作が顧客名を読め、別の操作が外部宛ての下書きを作れ、さらに別の操作が承認済み送信を再利用できるなら、単体では限定的でも連鎖後の影響は変わります。実環境では、モデルへ攻撃文を与える前に、状態遷移だけを模した試験で成立経路を列挙します。",
          "ケース記録には、最初の不信入力、途中で得たデータ、追加された権限、最後に変化した外部状態を時刻付きで順番に残します。一段ごとの拒否が正しくても、再試行や別ツールへの持替えで同じ終点へ届くなら残余経路です。モデル名ではなく、入力から資産までの到達列を再現単位にします。"
        ],
        "visual": {
          "kind": "decision",
          "eyebrow": "判断と証拠の関係",
          "title": "外部の文章は、実行許可にならない",
          "caption": "Catalysphereによる未検証の運用・測定設計案です。研究の実測値や導入効果を表した図ではなく、自社条件で検証する判断関係を示します。",
          "provenance": "catalysphere-authored",
          "stopRule": "未認可の外部状態変更は止める。モデルの許可表現で解除しない。",
          "steps": [
            {
              "id": "s0",
              "question": "外部文書の内容をデータとして扱えるか",
              "continueLabel": "提案へ",
              "branches": [
                {
                  "condition": "命令とデータの境界が不明",
                  "state": "hold",
                  "label": "解釈を保留",
                  "detail": "取得元と信頼境界を確認"
                }
              ]
            },
            {
              "id": "s1",
              "question": "提案の操作は権限・対象・期間を満たすか",
              "continueLabel": "実行直前の検査へ",
              "branches": [
                {
                  "condition": "認可条件を満たさない・期限切れ",
                  "state": "stop",
                  "label": "ツール側で拒否",
                  "detail": "モデル外の条件で停止し、理由を記録"
                },
                {
                  "condition": "権限が不明・検証不能",
                  "state": "hold",
                  "label": "認可確認を保留",
                  "detail": "実行せずモデル外の認可根拠を確認"
                }
              ]
            }
          ],
          "result": {
            "label": "限定実行",
            "detail": "認可された対象だけ実行し状態を照合"
          }
        }
      },
      {
        "heading": "被害経路の最小カットを、公開前に選ぶ",
        "paragraphs": [
          "運用上の推奨は、想定する侵入点から保護対象までの経路図を作り、少なくとも一か所で必ず止まる停止点を選ぶことです。停止点はモデルの拒否だけに置かず、資格情報の発行、対象選択、外部送信、状態変更など、モデル出力から変更できず機械的に判定できる管理可能な境界から選びます。",
          "すべての段階を同じ強さで防ぐのではなく、停止した時の業務損失と、通過した時の被害を並べます。たとえば閲覧は続けても外部送信だけを止める、予約作成は許して確定を止める、といった縮退を仮説として試します。これは万能な構成ではなく、業務ごとに許容できる残余経路を決める手順です。",
          "公開判定では、既知攻撃を何件止めたかより、重要資産へ到達する全ての既知経路に独立した停止点があるかを確認します。経路追加、権限変更、ツール連携の追加があれば、以前の合格はそのまま継承しません。未評価の経路は安全と推定せず、該当する状態変更を無効にしてから試験します。"
        ],
        "bullets": [
          "PATH：不信入力から保護対象までの操作列と途中状態を一意に記録する",
          "COMPOSITION：単体許可を結合した時だけ生じる読取・送信・変更能力を列挙する",
          "CUT：モデル外で強制できる停止点と、停止時に残せる業務機能を対応させる",
          "RESIDUAL：迂回、再試行、別ツール持替えで残る到達経路を公開条件へ戻す"
        ]
      },
      {
        "heading": "防御は、適応する攻撃者を前提に試す",
        "paragraphs": [
          "評価では通常タスクの成功と攻撃阻止を同時に測ります。防御が強くても正当な依頼をすべて拒否すれば使えません。直接入力、取得文書、ツール返値、画像内文字など侵入経路を分け、攻撃者が防御を知った後に言い換えられる条件でも試します。",
          "高影響操作では、実行前に対象と差分を利用者へ示し、外部データから得た理由ではなく本人の明示承認を取ります。ログには未加工入力、信頼区分、モデル判断、ツール呼び出し、拒否、承認を残します。異常時に資格情報を失効し、処理を止め、影響操作を検索できることまでが防御の完成条件です。",
          "変更後の攻撃試験は、既知の文面を再生するだけで終えず、侵入経路と表現を変えて行います。高影響操作が承認なしで成立した場合、または監査ログから影響範囲を特定できない場合は、該当ツールの資格情報を失効し読み取り専用へ戻します。再開責任者と証跡の保管責任者を分け、修正者だけで合格を宣言しません。"
        ],
        "bullets": [
          "信頼境界：開発者命令、利用者入力、取得データ、ツール返値を別経路として記録する",
          "最小権限：対象、操作、送信先を実行層で制限し、外部文章から権限を増やさない",
          "二重評価：攻撃阻止と正当な通常タスクの成功を、同じ試験で別々に判定する",
          "事故対応：停止、資格情報の失効、影響操作の検索、読み取り専用への復旧を試験する"
        ]
      }
    ],
    "note": "AgentDojoは研究用の97通常タスク・629攻撃事例、StruQは専用学習モデルと収録攻撃、NIST文書は技術分類と任意ガイダンスです。[1][2][3] いずれも完全防御を保証せず、利用ツール、権限、データ源、攻撃者能力に合わせた継続評価が必要です。",
    "sources": [
      {
        "id": 1,
        "authors": "Edoardo Debenedetti, Jie Zhang, Mislav Balunovic, Luca Beurer-Kellner, Marc Fischer, Florian Tramèr",
        "year": 2024,
        "title": "AgentDojo: A Dynamic Environment to Evaluate Prompt Injection Attacks and Defenses for LLM Agents",
        "venue": "Advances in Neural Information Processing Systems 37, Datasets and Benchmarks Track",
        "url": "https://proceedings.neurips.cc/paper_files/paper/2024/hash/97091a5177d8dc64b1da8bf3e1f6fb54-Abstract-Datasets_and_Benchmarks_Track.html",
        "finding": "ツールと不信データを扱う環境に97通常タスクと629セキュリティ事例を実装し、攻撃・防御双方の不完全さを測った。",
        "limitation": "研究用に構成された初期環境と攻撃群で、すべての企業ツール、未知攻撃、現行モデル、実被害を網羅しない。"
      },
      {
        "id": 2,
        "authors": "Sizhe Chen, Julien Piet, Chawin Sitawarin, David Wagner",
        "year": 2025,
        "title": "StruQ: Defending Against Prompt Injection with Structured Queries",
        "venue": "34th USENIX Security Symposium, 2383–2400",
        "url": "https://www.usenix.org/conference/usenixsecurity25/presentation/chen-sizhe",
        "finding": "命令とデータを別チャネルにし専用学習したモデルで、複数種の攻撃への耐性を実用性を保ちながら改善した。",
        "limitation": "専用の前処理とモデル学習を要し、一般的な商用APIやマルチモーダル入力、未知の適応攻撃で同じ耐性を保証しない。"
      },
      {
        "id": 3,
        "authors": "Apostol Vassilev, Alina Oprea, Alie Fordyce, Hyrum Anderson, Xander Davies, Maia Hamin",
        "year": 2025,
        "title": "Adversarial Machine Learning: A Taxonomy and Terminology of Attacks and Mitigations",
        "venue": "NIST AI 100-2 E2025",
        "url": "https://doi.org/10.6028/NIST.AI.100-2e2025",
        "finding": "生成AIを含む敵対的機械学習の攻撃目標、能力、ライフサイクル、緩和策と限界を公式分類として整理した。",
        "limitation": "任意ガイダンスと共通語彙を提供する文書で、特定製品の認証、実装済み統制、完全な防御効果を示すものではない。"
      }
    ],
    "visual": {
      "eyebrow": "PROMPT INJECTION / DEFENSE SCOPE",
      "title": "入力対策だけでなく、権限まで閉じる。",
      "titlePhrases": [
        "入力対策だけ",
        "でなく、",
        "権限まで",
        "閉じる。"
      ],
      "caption": "数値は攻撃率の比較ではありません。通常業務、攻撃事例、防御評価の広さを示し、多層試験の必要性を表します。",
      "metrics": [
        {
          "value": "629",
          "label": "AgentDojoのセキュリティ試験事例",
          "source": "Debenedetti et al., 2024",
          "referenceId": 1
        },
        {
          "value": "15+",
          "label": "StruQが評価したプロンプトインジェクション種",
          "source": "Chen et al., 2025",
          "referenceId": 2
        },
        {
          "value": "4 classes",
          "label": "NISTが生成AIで扱う主要攻撃分類",
          "source": "NIST AI 100-2, 2025",
          "referenceId": 3
        }
      ]
    },
    "url": "https://catalysphere.co.jp/articles/prompt-injection-enterprise-controls/",
    "machineReadableUrl": "https://catalysphere.co.jp/articles/prompt-injection-enterprise-controls/index.json",
    "topicFacets": [
      {
        "id": "safety-resilience",
        "name": "安全性・レジリエンス",
        "url": "https://catalysphere.co.jp/topics/safety-resilience/"
      },
      {
        "id": "ai-systems",
        "name": "AIシステム",
        "url": "https://catalysphere.co.jp/topics/ai-systems/"
      }
    ]
  }
}
