Shikata Ga Nai

Private? There is no such things.

LLM06:2025 — 過剰なエージェンシー(Excessive Agency)を初心者向けに徹底解説

Hello there, ('ω')ノ

過剰なエージェンシーとは?

AIに便利さを追求して「いろんな拡張機能」や「自律的な判断」を与えると、思わぬリスクが発生します。例えば:

  • 拡張機能が多すぎる(Excessive Functionality) → 必要ないのに「削除」や「書き換え」までできる。

  • 権限が強すぎる(Excessive Permissions) → 本当は「読み取り専用」でよいのに、書き込み・削除まで許されている。

  • 自律性が高すぎる(Excessive Autonomy) → 人間の確認なしで勝手に重要操作を実行してしまう。

つまり、**「AIに与える自由度が大きすぎると、攻撃者に利用されやすい」**という問題です。


具体例:初心者でもイメージしやすい攻撃シナリオ

例 1:機能過剰(Excessive Functionality)

  • 攻撃:文書検索用の拡張機能に「文書削除」機能まで入っている。
  • AIの誤作動:誤って「削除」コマンドを実行。
  • 被害:重要ファイルの消失。
  • 簡単防御:不要な機能を削除し、最小限の拡張だけを提供する

例 2:権限過剰(Excessive Permissions)

  • 攻撃:ユーザーの文書を読むだけのはずが、管理者権限で接続している。
  • AIの誤作動:他人のファイルまで読み込んでしまう。
  • 被害:大規模な情報漏洩。
  • 簡単防御:最小権限の原則を徹底し、ユーザーごとのスコープで実行

例 3:自律性過剰(Excessive Autonomy)

  • 攻撃:プロンプトインジェクションで「このファイルを消せ」と指示。
  • AIの誤作動:確認なしに削除を実行。
  • 被害:データ損失、業務停止。
  • 簡単防御:高リスク操作は必ず人間の承認を必須にする

ハッカー(攻撃者)の視点で考えると何がポイントか?

  • 攻撃対象:拡張機能・外部API・プラグイン。
  • 狙い:削除・変更・外部送信など、本来不要な操作を引き出す。
  • 手口

    • プロンプトインジェクションで「誤作動」を誘発。
    • 権限が強い拡張を悪用。
    • 確認なしの自動操作を狙う。

攻撃者は「AIが勝手に動く部分」を見つけて利用します。


初心者でもすぐできる“やるべき”防御チェックリスト

  1. 不要な拡張は提供しない(最小機能)
  2. 拡張に持たせる権限は最小限に制限
  3. 高リスク操作には必ず人間の承認を要求
  4. ユーザーごとの認証・権限スコープで実行
  5. 出力をそのまま実行せず、検証とフィルタリングを挟む
  6. ログと監査を必須化し、異常操作を検出
  7. レート制限をかけ、誤作動の連鎖を抑制

少し高度だが効果的な対策

  • 完全仲介(Complete Mediation):必ず下流システムで認可を再確認。
  • オープンエンド拡張を避ける:シェル実行やURL取得ではなく、専用機能を用意。
  • セキュア開発手法(SAST/DAST/IAST)をパイプラインに組み込む
  • サニタイズ強化:LLM入力・出力ともにフィルタを徹底。

実用チェックリスト

  • 拡張機能に「不要な操作」が含まれていないか?
  • 拡張の権限は最小化されているか?
  • 高リスク操作に人間の承認を必須にしているか?
  • 拡張の認証はユーザー単位で制御されているか?
  • LLMの出力をそのまま外部に渡していないか?
  • ログや監査で拡張の挙動を監視しているか?
  • レート制限を設けているか?

まとめ

過剰なエージェンシーは「AIに自由を与えすぎること」が原因で生まれる脆弱性です。機能・権限・自律性を必要最小限に抑え、人間の承認・完全仲介・監査を組み合わせることで、攻撃者に悪用されるリスクを最小化できます。

Best regards, ('ω')ノ