プロンプトインジェクション対策を実装したRAGシステムでも、知識ベース自体を汚染するコーパス汚染攻撃には無防備なケースが多い。SharePoint、社内Wiki、サポートチケットシステムなど多数のソースから自動取り込みする本番RAGパイプラインでは、攻撃者が悪意あるドキュメントを一度注入すれば、以降のすべてのユーザークエリに影響し続けます。本記事はエージェントガバナンスの文脈で、攻撃の分類から4層防御アーキテクチャの実装判断まで整理します。
RAGコーパス汚染攻撃とは何か
RAGコーパス汚染攻撃は知識ベースへの悪意ドキュメント注入であり、攻撃者が回答内容を永続的に操作できます。
エージェントメモリ汚染攻撃との本質的な違いは攻撃面と永続性にあります。メモリ汚染はエージェントの会話記憶を標的にしますが、コーパス汚染は知識ベース(ベクターDB・ドキュメントストア)自体を改ざんします。一度の注入で数千件のクエリに影響し、通常の文書に見えるため検出が困難です。
攻撃は4段階で分類できます(arXiv 2604.08304による分類)。
① 取り込み前汚染(Pre-Retrieval Corruption): インジェスト前に最適化済みの敵対テキストを注入。PoisonedRAGなどの手法では、特定クエリに反応するスリーパーペイロードを埋め込んだ文書を高類似度スコアで上位に来るよう設計します。2026年の研究では「Sleeper Agent Embeddings」と呼ばれる手法が確認されており、パープレキシティ上は正常に見える文書でも特定トリガークエリで発動します。
② 検索時操作(Retrieval-Time Manipulation): 文書自体は正常でも検索ランキングを操作して悪意ある結果を上位に引き上げる手法。埋め込み空間への摂動やランキングモデルへの攻撃が含まれます。
③ 文脈内悪用(Context Exploitation): 取得した文書内に間接プロンプトインジェクションを埋め込む。プロンプトインジェクション多層防御で扱う直接注入とは異なり、攻撃者は取得されるドキュメントを媒介としてLLMへ命令を渡します。
④ 知識抽出(Knowledge Exfiltration): 複数ターンの推論を通じ、コーパスに含まれる機密情報を逆転抽出する。RAGに格納された社外秘文書や個人情報が対象になります。
なぜ既存の防御はコーパス汚染に効かないのか
プロンプトフィルターや出力監視は推論段階の防御であり、コーパス汚染は取り込み前に起きるため異なる防御層が必要です。
多くの組織が導入している以下の防御は、コーパス汚染に対して防御タイミングが後ろ過ぎるという問題があります。
| 既存の防御 | コーパス汚染への効果 |
|---|---|
| 出力フィルター | ✗ 汚染文書が取得された後では遅い |
| プロンプト制御 | ✗ 取得フェーズに介入できない |
| セッションリセット | ✗ コーパス自体は変更されない |
| プロンプトインジェクション検出 | △ 間接注入の一部しか検出できない |
Cordon-MAS(arXiv 2605.26754)はこの問題を「検出問題」ではなく「情報フロー制御問題」として再定義しています。モデルは検索結果の矛盾を検出できても、汚染された主張に基づいて行動してしまう「監視-制御ギャップ(monitoring-control gap)」が構造的に存在します。
4層防御アーキテクチャの設計
コーパス汚染への効果的な防御は入場管理・検索強化・文脈分離・継続監視の4層アーキテクチャを組み合わせる必要があります。
Kuu株式会社のAIエージェント運用管理サービスでは、RAGパイプラインへのこの4層設計組み込みを支援しています。
第1層:コーパス入場管理(Admission Control)
文書を知識ベースに取り込む前の入場検査が最初の防衛線です。
- 出所検証(Provenance Check): 文書ソースの認証(S3バケット所有者確認、SharePoint接続アカウントログ照合)。未検証ソースは隔離キューへ。
- パープレキシティフィルター: モデルを使って文書のパープレキシティ(当惑度)を計算。汚染文書は意味的には自然に見えても、埋め込み的なパープレキシティが高い傾向にある(既存研究で有効性確認)。
- 重複・矛盾検出: 既存コーパスとの意味的重複チェック、事実矛盾フラグ付け。矛盾する主張が含まれる場合は人間レビューキューへ送る。
- 署名付き台帳(sBOM): 取り込んだ文書のハッシュ・出所・承認者・タイムスタンプを改ざん防止ログに記録。インシデント時の追跡に使用。
``python``
def admit_document(doc: Document, corpus: VectorStore) -> bool:
if not verify_source_provenance(doc.source):
return False # 未検証ソース → 拒否
if compute_perplexity(doc.text) > PERPLEXITY_THRESHOLD:
queue_for_human_review(doc, reason="high_perplexity")
return False
if detect_contradiction(doc, corpus, threshold=0.85):
queue_for_human_review(doc, reason="contradiction")
return False
log_to_signed_ledger(doc)
return True
第2層:検索時強化(Retrieval Hardening)
第1層を突破した文書が存在する前提で、検索段階でも攻撃影響を緩和します。
- ハイブリッドランキング: 意味的類似度だけでなく、文書信頼スコア(出所評価・編集履歴の健全性)を組み込んだランキング。
- 注意分散フィルター(AV Filter): 取得した各パッセージの注意分散シグナルを計算し、出力に過剰な影響を与えるパッセージを除外。2026年の研究で攻撃成功率の有意な低下が確認されています。
- スパース注意制限(Sparse Attention): 文書間の相互参照を制限し、複数の汚染文書が連携して影響を与える複合攻撃を防ぐ(arXiv 2602.04711)。
- 多様性サンプリング: 類似するパッセージを大量取得せず、多様なソースから分散して取得することで、単一汚染ソースの影響を薄める。
第3層:文脈分離(Context Isolation)
Cordon-MASが提唱する「Cordonの原則」は、最終回答を合成するエージェントは信頼されていない自然言語証拠に直接アクセスしてはならない、というものです。
````
[取得された文書群(汚染文書を含む可能性あり)]
↓ (制限付き読み取り権限)
[証拠抽出エージェント: 構造化された事実のみを抽出]
↓ (構造化JSONのみ渡す)
[クロスソース監査エージェント: ソース間矛盾を検出]
↓ (検証済み事実セットのみ渡す)
[回答合成エージェント: 検証済み事実のみで回答生成]
この3エージェント構成によりCordon-MASは5つのBEIRデータセットで攻撃成功率を92.4%削減しました。各エージェントの権限はIAMスコープで分離し、エージェント間で生の文書テキストを渡さないことが設計の核心です。
エンタープライズ実装では、この構成を既存のLLMゲートウェイと統合し、エージェント間通信をサービスメッシュで監査します。
第4層:継続監視(Continuous Monitoring)
汚染は検出されずに長期間持続する可能性があるため、事後検知と追跡も不可欠です。
- RAGForensics: 知識ベースの汚染テキストを特定する追跡システム。反復的なサブセット取得とLLMによる汚染文書の絞り込みが可能(arXiv 2504.21668)。
- 出力整合性モニタリング: 同一または類似クエリへの回答の時系列変化を監視し、方向転換が異常なスピードで起きた場合にアラート。
- 異常クエリパターン検出: 特定の汚染ドキュメントを引き出すクエリパターンの統計的検出。攻撃者が「プローブクエリ」を送って汚染確認する行為を検知します。
- 定期コーパス監査: スケジュールに従い、コーパス全体の整合性を機械的にスキャンし、sBOM台帳との乖離を検出。
規模別の留意点(SMB / エンタープライズ)
SMBの場合: まず第1層の入場管理から着手する。取り込みソースを信頼できる認証済みシステム(Google Drive、SharePoint)に絞り込むだけで攻撃面積は大幅に縮小する。パープレキシティ計算は軽量モデルで実装可能でAPIコストも低い。Cordon原則(第3層)については、エージェント分離が難しければ「合成エージェントには生の取得テキストではなく要約済み事実を渡す」というソフトな実装でも一定の効果がある。
エンタープライズの場合: 第3層の情報フロー制御をIAMスコープ付きで完全実装することを優先する。ソースが数百システムに及ぶため、sBOMによるコーパス来歴管理と、クロスソース監査エージェントの専用デプロイが重要になる。RDEサービスでの段階的な導入設計が有効です。
参考
- Securing Retrieval-Augmented Generation: A Taxonomy of Attacks, Defenses, and Future Directions
- Cordon-MAS: Defending RAG against Knowledge Poisoning via Information-Flow Control
- Addressing Corpus Knowledge Poisoning Attacks on RAG Using Sparse Attention
- Traceback of Poisoning Attacks to Retrieval-Augmented Generation
まとめ
RAGコーパス汚染攻撃は、プロンプトインジェクション対策の裏をかく取り込みパイプライン段階の攻撃です。出力フィルターやプロンプト制御では防げないため、コーパス入場管理・検索時強化・文脈分離・継続監視の4層アーキテクチャが現時点での最善の防御設計です。特に第3層のCordon原則(情報フロー制御)は検出精度に依存しない構造的な防御であり、エンタープライズ実装での採用価値が高いです。
Kuu株式会社では、RAGセキュリティ設計から4層防御の段階的導入までAIエージェント運用管理サービスで支援しています。コーパスの脅威モデリングや既存RAGパイプラインへの組み込み設計については、お気軽にご相談ください。