Hello there, ('ω')ノ
🛡 シナリオ別防御チェックリスト
1. 直接注入(Direct Injection)
- [ ] システムプロンプトに 「無視するな」「再定義禁止」 を明記
- [ ] 出力検疫(ポリシーチェック、禁止ワード検出)を必ず挟む
- [ ] 高リスク操作(送金・削除)は 人間承認必須
2. 間接注入(Indirect Injection)
- [ ] 外部ソース(Web/ファイル)の入力には 信頼タグを付与
- [ ] RAG文書やWebページを利用する際は 命令文検出フィルタ を適用
- [ ] 出力前に リンク/外部リソースを検査
3. 無自覚な注入(Unintentional Injection)
- [ ] ユーザ入力をそのまま「命令」として扱わない設計
- [ ] 意図しない挙動を検知するための 挙動モニタリング
- [ ] 社内利用ポリシーに「AI生成物の取り扱いルール」を明文化
4. RAG汚染(Indirect Influence)
- [ ] データ投入時の整合性検証(改ざん検知)
- [ ] 検索対象に「信頼できるソースのみ」を指定
- [ ] RAG出力を Groundedness(根拠チェック) でフィルタ
5. コードインジェクション
- [ ] LLMにAPIキーや操作権限を渡さず、アプリケーション層で制御
- [ ] メールやドキュメント本文に埋め込まれた指示をフィルタ
- [ ] CVEや依存ライブラリの脆弱性を SCA/パッチ管理 で監視
6. ペイロード分割(Payload Splitting)
- [ ] モデルに渡す入力を 文単位・意図単位で検証
- [ ] コンテキストを結合する前に 危険なフレーズ検出
- [ ] LLMの応答をテストする アドバーサリアル演習 を定期的に実施
7. マルチモーダル注入
- [ ] 画像・音声を処理する前に ステガノグラフィ検出ツール を活用
- [ ] モダリティごとに「信頼境界」を設定(画像指示は無視、など)
- [ ] マルチモーダル専用の 異常検知システム を導入
8. アドバーサリアル接尾語(Adversarial Suffix)
- [ ] 入力末尾の 意味不明な文字列を正規化/削除
- [ ] モデル応答の安全評価を 2段階チェック(LLM→検疫LLM)
- [ ] 攻撃パターンを継続的に収集し、フィルタに反映
9. 多言語/難読化攻撃
- [ ] 多言語フィルタ(英語以外も検査)を適用
- [ ] Base64/emoji などを デコードして再検査
- [ ] 難読化手法の新パターンを 脅威インテリジェンスと連携
🔑 共通チェック(全シナリオに有効)
- [ ] 最小権限の原則:LLMには不要な権限を一切与えない
- [ ] 出力検疫レイヤ:応答は必ずポリシーチェックを通す
- [ ] 監査ログの完全性:入力・出力・外部呼び出しをすべて記録
- [ ] 人間承認ステップ:クリティカル操作は必ずヒューマン・イン・ザ・ループ
- [ ] レッドチーム演習:攻撃者視点で定期的にシナリオテスト
まとめ
攻撃者の発想はシンプルです: 「LLMが信じるものは、人間が“ゴミ”と見なす入力でも指示になる」
防御側は、
- 入力の境界管理(信頼/不信を分ける)
- 出力の検疫(危険をブロック)
- 権限と承認(最小化+人間介入)
この3点を徹底すれば、ほとんどの Prompt Injection シナリオを封じ込めることができます。
Best regards, (^^ゞ