Memory poisoningとプロンプトインジェクションは、どちらも「エージェントに間違ったものを与えて悪事をさせる」ように聞こえるが、実質的に何が違うのか?
違いはタイミングと持続性にある。プロンプトインジェクションは単発の出来事だ——悪意あるコンテンツとその効果は、ほぼ同時に1回のやり取りの中で発生する。その場でブロックすれば、攻撃はそこで終わる。Memory poisoningは2つの別々のタイミングに分かれる:埋め込みの瞬間とトリガーの瞬間で、その間は数日から数週間空くことがあり、トリガー条件は表面上、埋め込まれたコンテンツとは全く無関係に見えることもある。つまり、毎回のやり取りでプロンプトインジェクション対策を行っていたとしても、エージェントは数週間前の、当時は完全に無害に見えたやり取りに根ざした汚染された判断に基づいて、後になって行動してしまう可能性がある——防御すべき時間の窓が根本的に異なる。
OWASPはなぜmemory poisoningを既存のプロンプトインジェクション(LLM01)に含めるのではなく、独立したカテゴリ(ASI06)として特に分類したのか?
それは両者が要求する防御ロジックが根本的に異なり、統合して扱うとむしろ本当に必要な防御策が薄まってしまうためだ。プロンプトインジェクションの防御は入力層に重点を置く:エージェントに入るすべてのコンテンツをフィルタリングし検証する。一方、memory poisoningの核心的な問題は保存層とセッションをまたぐアクセス層にある——単発の入力を完璧にフィルタリングしていたとしても、エージェントの記憶ストア自体に書き込み権限の管理、出所タグ付け、定期的なクリーンアップの仕組みが欠けていれば、それぞれ完全に正当に見えるやり取りを通じて、汚染は徐々に積み重なっていく。独立したカテゴリとして分類する意義は、開発者に対し、これが記憶アーキテクチャのレベルで防御を設計する必要がある問題であり、入力フィルタリングの強化だけでは解決できないと示すことにある。
AgentPoisonやMINJAといった研究で言及されている高い攻撃成功率は、具体的にどのような条件下で測定されたものか?これらの数字は、自分が使っているDeFAIエージェントにそのまま当てはめられるのか?
これらの数字は、統制された学術的実験環境から得られたものだ:研究者は特定のエージェントアーキテクチャと特定の記憶保存メカニズム(特定のベクトルデータベース検索設計など)を対象に、特定の汚染サンプルを設計し、どの汚染率でエージェントが特定のトリガー条件下で特定の誤った行動を取るかを測定する。AgentPoisonは0.1%未満の汚染率で80%を超える成功率を記録し、MINJAは76.8%から98%以上を記録した。両者とも、それぞれの論文が設定した特定のシナリオの下で測定された上限値であり、すべてのエージェントアーキテクチャに共通する数字ではない。実務上、自分が使っているDeFAIエージェントが同程度の脆弱性を持っていると直接仮定することはできない。これらの数字が示しているのは「この攻撃対象は特定の条件下で非常に効果的になり得る」ということであり、「すべてのシステムで同様に悪用しやすい」ということではない。この2つは異なる結論だ。
記憶機能を持つDeFAIエージェントを使っている場合、業界が防御標準を打ち出すのを待つだけでなく、今実際にリスクを減らすために何ができるのか?
自分でできる実務的なことがいくつかある。第一に、エージェントが記憶している内容を確認したり消去したりする手段があるか確認し、自分が入力したことのない見慣れないコンテンツが含まれていないか定期的に見直すこと。第二に、資金操作にかかわる重要な指示については、要約だけの結論を受け入れるのではなく、判断の根拠となった元の情報源をエージェントに示すよう求めること。第三に、エージェントが独立した記憶領域やセッション隔離をサポートしている場合、資金にかかわるタスクには隔離モードを優先的に使い、日常的な会話と資金操作が同じ記憶ストアを共有しないようにすること。第四に、出所が不明な外部文書やリンクについては、エージェントに読み込ませる前に、プロンプトインジェクションに対するのと同等の警戒を保つこと——この種のコンテンツこそ、memory poisoningの最も一般的な埋め込みチャネルだ。
会話やタスクをまたいで文脈を保持するために、長期記憶の何らかの形態を持つDeFAIエージェントが増えている——ユーザーの好みを記憶し、過去に実行した戦略を記憶し、以前に調べた情報を記憶する。この機能はエージェントをより使いやすくする一方で、単発の対話型AIシステムがあまり心配する必要のなかった攻撃対象を新たに開く。OWASPは2026年版のAgentic Applications向けTop 10で、この риスクをASI06——記憶とコンテキストの汚染——として正式に分類した。
プロンプトインジェクション攻撃は通常、単一のやり取りの中で完結する:ユーザー入力やエージェントが読み込む外部コンテンツに隠された悪意ある指示が、即座に行動を乗っ取ろうとする。Memory poisoningはまったく異なる時間軸で機能する——研究者が「時間的分離」(temporal decoupling)と呼ぶ仕組みが鍵だ。攻撃者は一度のやり取りで、悪意あるコンテンツをエージェントの記憶ストア、共有ベクトルデータベース、あるいは会話サマリーに埋め込むだけであり、実際の攻撃効果は数日から数週間後、まったく無関係なトリガーによって発動する場合がある。これによりmemory poisoningは、プロンプトインジェクションよりもリアルタイムでの検知が格段に難しくなる——汚染された瞬間、システムには何ら異常な挙動が見られないこともある。
研究文献に記録されている攻撃パターンの核心は、通常の運用の中でエージェントに、攻撃者が仕組んだコンテンツを「自発的に」自らの長期記憶に書き込ませることにある——一見正当な文書、無害に見えるツールの応答結果、あるいは汚染された会話サマリーを通じて行われる。その後、特定の条件がトリガーされたとき(ユーザーが特定のキーワードについて質問した、あるいはエージェントが特定の種類のタスクを実行したときなど)、埋め込まれた記憶が呼び出され、エージェントのその後の判断や行動に影響を与える——そしてユーザー自身もエージェント自身も、その根本原因が数日前のやり取りに遡ることに、まったく気づいていない場合がある。AgentPoisonの研究では、記憶の汚染率が0.1%未満という低さでも攻撃成功率が80%を超えることが示されている。別のMINJA研究では、攻撃シナリオによって76.8%から98%以上という成功率が記録されている。
セキュリティ研究者のJohann Rehbergerは2024年9月、ChatGPTの記憶機能を対象とした実際の事例(通称SpAIware)を公開実演した:悪意ある指示が埋め込まれたGoogle Driveの文書が、ChatGPTに攻撃者の指示を自らの長期記憶に書き込ませるよう誘導し、その後、まったく別の無関係な会話の中でその埋め込まれた記憶が呼び出され、出力に影響を与えた。この実演自体はDeFAIエージェントを対象としたものではないが、memory poisoningが純粋に理論上の構想ではないことを証明している——セッションをまたぐ持続的な記憶を持つAIシステムであれば、原則としてどれも同様の問題に晒される可能性があり、類似の記憶アーキテクチャを採用するDeFAIエージェントも同じリスクを負う。
あなたが使っているDeFAIエージェントが、会話をまたいで好みや過去の戦略上の判断を記憶している場合、それは継続的に積み重なっていく、汚染されうる知識ベースを保持しているということを意味する——そして汚染の発生源は必ずしもあなた自身の入力である必要はない。エージェントが読み込む外部文書、他のユーザーが共有したデータ、あるいはエージェントの記憶書き込みパイプラインに入り込むあらゆるものが発生源になりうる。現在議論されている防御策には、クロスエージェント隔離(複数のエージェントが汚染されやすい1つの記憶ストアを共有することを避ける)、記憶に書き込まれるコンテンツへの信頼スコアリングと出所タグ付け、明確に必要な場合を除き記憶をデフォルトで一時的なものにすること、そして重要な操作についてエージェントが要約だけでなく元となる根拠そのものを示すよう要求することなどが含まれる。これらの防御策の大半はまだ初期の開発段階にあり、実際に展開されているDeFAI製品での標準機能にはなっていない。