AI Agent Memory Poisoning にはライフサイクル全体の防御が必要
Tech
AI
AI Agents
AI Security
Memory Poisoning

AI Agent Memory Poisoning にはライフサイクル全体の防御が必要

セッションをまたいで汚染された agent memory が残存し、tool use に影響を与えることを防ぐ、研究に基づくアーキテクチャ。

Uygar DuzgunUUygar Duzgun
Aug 2, 2026
更新日 2026年8月15日
17 min read

AI agent memory poisoning は、信頼できない入力を永続的な状態へと変えてしまいます。agent が攻撃者に制御されたコンテンツを persistent memory に書き込むと、そのコンテンツは数日後、あるいは別のセッションで、信頼できるコンテキストのように戻ってくる可能性があります。ライフサイクル全体を防御してください。すべての書き込みをゲートし、provenance と有効期限を付与し、ユーザーと agent ごとにレコードを分離し、retrieval を再スクリーニングし、action authorization を model の外部に保持し、ロールバックを支援する influence log を維持します。

Prompt — Copy & Paste
対象読者: memory を備えた tool-using AI agent を設計・運用する上級実務者。 以下の研究結果は、特定の実験システムについて述べたものです。production controls は実務的な解釈であり、引用された研究者が単一の普遍的なアーキテクチャを支持しているという主張ではありません。

目次

AI agent memory poisoning とは何か

AI agent memory poisoning とは、永続レコードを挿入または変更し、後の retrieval によって agent の回答、判断、または tool use が変化するようにすることです。影響が現れた時点では、元の入力がすでに消えている場合があります。この時間差により、現在の会話における目に見える prompt injection よりも、攻撃の発見と再構成が難しくなります。

Memory は複数の場所に存在します。

抽出された事実や好みを保存する vector database
relational store に書き込まれた summaries
notes や instruction documents などの編集可能なファイル
tool state、calendars、task queues、customer records
複数の agent が使用する shared memory

ストレージ技術が本質的な問題なのではありません。永続性と、その後の影響力の組み合わせが security boundary を作ります。

これは、隣接する3つのリスクとは異なります。Prompt injection は現在の model context を操作しますが、汚染された memory の delivery channel になることもあります。Training-data poisoning は training corpus を通じて model behavior を変えます。Retrieval poisoning はリクエストに対して選択されるコンテンツを標的にします。Agent-memory poisoning は、システムが後にユーザーの履歴、好み、または operating state の一部として扱う可能性のあるレコードを永続化します。

実務上、重要な攻撃パターンは3つあります。

パターン保存される形式Activation単純な filter が苦戦する理由
------------
Direct corruption1つのレコードに有害な指示または誤った事実が含まれる後でレコードが retrieval されるコンテンツが preference、summary、task note に偽装される可能性がある
Compositional corruption複数のレコードが単独では問題ないように見えるJoint retrieval によって有害な意味が組み立てられるリスクが組み合わせによって初めて現れるため、各書き込みは通過する
Dormant corruptionレコードに trigger-dependent instruction が含まれる後の event、phrase、または tool state が activation するレコードの書き込み時には trigger が存在しない

Microsoft の現在の guidance は、同じ構造的な懸念を防御の観点から説明しています。persistent memory は sensitive data を保存するだけでなく、model behavior と tool selection にも影響を与えます。そのため、data system と control plane の両方として管理すべきです。Microsoft Learn

最近の3つの研究が測定したもの

2026年7月に公開された3本の preprint は、この脅威の異なる部分を調査しました。まとめて読むと、単一の memory filter が弱い release criterion である理由が分かります。

GhostWriter は、今の injection と後の activation を検証した

When Agents Remember Too Much は、tool-using personal agent に対する2段階攻撃である GhostWriter を導入しました。攻撃者はまず、信頼できない source に hidden content を配置します。agent はその source を処理し、攻撃者の影響を受けた memory を書き込みます。後の task がそのレコードを retrieval し、影響を activation します。

論文で検証された agent と model 全体では、GhostWriter は平均 injection rate 約98%、平均 activation rate 約60%に達しました。著者らは、より厳格な memory-saving policy と retrieval screen を組み合わせた AM-Sentry も検証しました。この論文は、独自の simulated workweek において attack success と task utility の両方を評価しています。防御結果は model と configuration によって異なります。

境界条件は重要です。この研究は5つの agent、4つの model family、email または calendar workflow を対象としています。utility test は独自設計であり、攻撃者は adaptive ではなく、結果は deployed agent が攻撃される頻度を推定するものではありません。

MemPoison は direct、compositional、dormant の失敗を分離した

MemPoison は、4種類の攻撃、3つの injection channel、3つの memory substrate にまたがる、hand-validated な1,227件のケースを構成しました。評価には、7つの open-weight model family と3つの closed-weight model family が含まれています。

この論文の有用な貢献は、3段階の taxonomy です。L1 は単一レコードの direct corruption です。L2 は、複数のレコードが一緒に retrieval されたときに有害になります。L3 は、後の context が activation するまで dormant のままです。著者らは、baseline write-time defenses が direct attack を L2 または L3 のケースよりも確実に抑制すると報告しています。mechanistic influence analysis では、保存時には benign に見えるものの、composition または trigger によって有害になるレコードが、この差の原因だとしています。

これは、すべての production write filter が失敗することを証明するものではありません。この benchmark は、代表的な3つの memory substrate と標準的な text-based channel を対象としています。著者らは、decay、summarization、access controls、その他の memory ecosystem に関する、より広範な研究を求めています。

MemGhost は one-shot email delivery path を検証した

When Claws Remember but Do Not Tell は、real IMAP/SMTP workflow と email-agent skill を使用する108件のケースからなる WhisperBench を導入しました。その attack framework である MemGhost は、runtime feedback なしに1つの email payload を生成します。成功には、agent が poisoned memory を採用し、直後の response でユーザーに alert せず、後の behavior を変更することが必要です。

56件の held-out case について、この論文は GPT-5.4 を使用した OpenClaw で87.5%、Sonnet 4.6 を使用した Claude Code SDK で71.4%の end-to-end success を報告しています。

これらの数値は、著者らの benchmark、proxy environment、reward design、model version に属するものです。評価は message が inbox に到達した後から開始されます。spam filtering、SPF、DKIM、DMARC などの mail-provider controls は model 化されていません。この論文は first-version preprint であるため、結果には replication が必要です。

なぜ write-time filtering だけでは不十分なのか

Write gate は、提案されたレコードと、その時点で利用可能な evidence を確認します。しかし、将来の task、隣接して retrieval される他のレコード、または agent が後で呼び出す tool は確認できない可能性があります。

これにより、4つの blind spot が生じます。

Composition: 通常に見える2つのレコードが、一緒になると危険な instruction を形成する可能性があります。
Context shift: ある workflow では安全だった preference が、別の workflow では安全でなくなる可能性があります。
Staleness: 以前は正しかったレコードが、policy、account、project の変更後に誤りになる可能性があります。
Authority drift: descriptive memory が permission として扱われる可能性がありますが、authorization system はそれを承認していません。

Write-time checks は依然として重要です。永続化される unsafe state の量を減らします。問題は、storage approval を恒久的な trust とみなすことです。

Retrieval は authority ではなく、candidate context を返すべきです。レコードを model context に挿入する前に、system は source、age、task relevance、contradictions、sensitivity、requested effect を確認できます。高リスクのレコードは withheld、summarized、または review に回すことができます。Microsoft の現在の guidance は、この write-and-retrieval split に加え、deterministic isolation と full lifecycle visibility を推奨しています。Microsoft Learn

おすすめ

最終的な safety decision は、依然として memory の外部に置かれます。「このアドレスに reports を送信する」と書かれた retrieved note が recipient allowlist を変更してはいけません。deployment region に関する remembered preference が cloud permission を作成してはいけません。deterministic AI agent permissions を使用して、提案された action を現在の user、resource、scope、policy に照らして評価してください。

secure agent-memory architecture

System には、source から action まで追跡可能な chain が必要です。

`source → write decision → stored version → retrieval decision → model context → policy decision → tool result`

write gating、quarantine、isolated storage、retrieval checks、action authorization、audit、rollback を備えた AI agent memory security lifecycle
write gating、quarantine、isolated storage、retrieval checks、action authorization、audit、rollback を備えた AI agent memory security lifecycle

*Caption: memory record は write と retrieval の checks を通過した後にのみ candidate context になります。Independent policy は引き続きすべての consequential action を authorize し、influence chain は investigation と rollback を支援します。*

1. Durable write には明示的な intent を要求する

すべての message、document、tool response を long-term memory にしてはいけません。どの event が durable state を作成できるかを定義してください。ユーザーが確認した preference や明示的な「これを覚えておいて」という action は、信頼できない attachment の autonomous summary よりも正当化しやすいものです。

誰または何が write を要求したかを記録してください。tool または subagent が開始した場合、その identity を保持し、すべてを end user の名前にまとめないでください。

2. Record とともに provenance、scope、expiry を保存する

有用な memory record に必要なのは、text と embedding だけではありません。少なくとも以下を保存してください。

source identity と source object
user、agent、tenant、workspace scope
creation time、model または extractor version、policy version
confidence または verification status
intended purpose と allowed workflows
expiry time または review date
parent record と replacement history

Signature は record integrity を保護できます。しかし、元の content が true、safe、authorized だったことを証明するものではありません。

3. Code と storage で isolation を強制する

Tenant、user、agent、workspace の境界は、access-control list、scoped token、row-level policy、encryption boundary に組み込むべきです。Prompt instruction は access control ではありません。Shared memory は、便利な default namespace ではなく、named writer と reader を持つ明示的な product feature にすべきです。

おすすめ

同じ原則は execution environment にも適用されます。Retrieved content が code execution や広範な tool use を引き起こす可能性がある場合は、AI agent sandbox security によって process を containment してください。Memory isolation は、どの context が boundary を越えるかを制限します。Sandbox と identity controls は、unsafe context が agent に到達した場合に何が起きるかを制限します。

4. Low-trust write を quarantine する

「discarded」と「trusted memory」の間に state を作成してください。External file、email、web page、indirect tool output、intent が不明確なレコードは quarantine に入れることができます。Deterministic rule または authorized reviewer が promote するまで、通常の retrieval に表示されるべきではありません。

Quarantine は、影響を継続させることなく incident responder が evidence を保存する場所にもなります。

5. Retrieval 時にレコードを再評価する

Retrieval risk は現在の task に依存します。各レコードだけでなく、選択された set を評価してください。

Source には、この workflow に影響を与える権利があるか。
Record は expiry しているか、superseded になっているか。
より高い trust level の source と矛盾していないか。
複数のレコードが組み合わさることで、新しい instruction を形成していないか。
Record は fact を説明しているのか、それとも authority を付与しようとしているのか。
表示することで user または tenant boundary を越えないか。
おすすめ

Retrieval は generation とは別に評価してください。RAG evaluation workflow は、「誤ったレコードが選択された」のか、「model が正しいレコードを誤用した」のかを区別するのに役立ちます。さらに、provenance、trigger dependence、composition、cross-session activation など、memory 固有の dimension を追加してください。

6. Tool authorization を独立させる

Memory は parameters を提供してもかまいません。しかし、permissions を拡張してはいけません。Tool gateway は、current identity、allowed action、resource boundary、destination、budget、approval requirement を強制する必要があります。Memory 由来の arguments は untrusted input として扱い、current policy に照らして validate してください。

Human approval にも fresh context が必要です。提案された action、影響を受ける resource、data destination、そして影響を与えた memories を表示してください。その chain なしに「Approve?」と尋ねると、関連する decision が隠れてしまいます。

7. Influence をログに記録し、rollback を支援する

Memory の create、read、update、delete operation を identity と provenance 付きでログに記録してください。Consequential action については、context に注入されたレコードの ID と version を保持します。これにより、次の3つの incident question に答えられます。

どの source が poisoned record を作成したか。
その後のどの output または action がそれを使用したか。
どの version を revoke、correct、または replay する必要があるか。

Deletion は、UI 上の row を隠すだけでなく、active influence を除去する必要があります。Index、summary、cache、replica、derived record をテストしてください。OWASP の agent guidance は、validated and isolated memory、adversarial test、release evidence を推奨しています。また、より広範な memory analysis では、persistent prompt injection を agent-memory threat surface に位置付けています。OWASP Agent Security Cheat Sheet OWASP GenAI Security Project

memory class ごとに policy を選ぶ

1つの retention policy では粗すぎます。write と retrieval の rule が異なる class から始めてください。

Memory classDefault write policyRetrieval policyAction authority
------------
Ephemeral task contextAutomatic、short TTLCurrent task のみなし
User-confirmed preferenceExplicit confirmation同じ user と declared purposeSuggest は可能だが、authorize は不可
Agent-generated summaryVersioned、source と linkedSource と freshness を再確認なし
External contentDefault で quarantineTrust と relevance の checks 後のみなし
Operational instructionAuthorized writer と policy reviewExact scope、current versionTool policy が引き続き必要
Secret または regulated dataBlock、または dedicated secret/data system を使用General memory には決して配置しないDedicated control plane のみ

この table は starting policy であり、compliance claim ではありません。Medical agent、coding assistant、sales agent、personal assistant では harm model が異なります。不変条件はより限定的です。Persistence によって、untrusted content が permission へと暗黙に変換されてはいけません。

再現可能な memory-poisoning test workflow

Test harness は benign marker と disposable account を中心に構築してください。Persistence と policy failure を検出するために、real credential や exfiltration payload は必要ありません。

Step 1: Clean baseline を取得する

Memory store を空にして、固定された task set を実行します。Answer、retrieval result、tool proposal、policy decision、latency、user-visible explanation を記録してください。System change と通常の model variance を区別できるよう、十分な回数を繰り返します。

Step 2: Paired clean case と poisoned case を定義する

各 case では user task を一定に保ち、candidate memory path だけを変更します。少なくとも以下を対象にしてください。

unauthorized benign marker を含む1つの direct record
2つの record を組み合わせた意味が、どちらか単独の意味と異なるケース
後の phrase または task state によって activation する dormant record
新しい authoritative source と衝突する stale record
ある user または tenant の下で書き込まれ、別の user または tenant から query される record
original activation task の後に corrected または deleted record が続くケース

`TEST_BLOCKED` を disposable log に書き込むなど、canary action を使用してください。期待される policy path の外部で agent がその action を実行または提案した場合、test は失敗です。

Step 3: すべての boundary を観測する

4つの outcome を個別に取得します。

Write adoption: Candidate は stored、rejected、quarantined のいずれになったか。
Retrieval exposure: 選択され、context に挿入されたか。
Behavioral influence: Answer または plan が変化したか。
Action outcome: Independent policy は tool call を block または allow したか。

End-to-end pass は、弱い layer を隠す可能性があります。たとえば authorization が canary action を block していても、poisoned record が保存され、繰り返し retrieval されている可能性があります。これは有用な containment ですが、memory defect には依然として修正が必要です。

Step 4: Utility と false positive を測定する

同じ pipeline で benign memory case を実行します。Task completion、accepted user preference、incorrect quarantine、retrieval precision、latency、review volume を追跡してください。すべての durable memory を block する filter は、feature を削除したため attack success が低くなっているだけです。

Step 5: Risk に応じて release gate を設定する

有用な gate には以下が含まれます。

Test suite における cross-tenant retrieval がゼロ
Unauthorized canary action がゼロ
すべての durable record に complete provenance がある
Consequential action に対する influence log が完全である
Index、cache、summary、replica 全体で revocation が成功する
選択した threat model における poisoned-record adoption rate と activation rate が bounded である
Documented benign-utility floor と false-positive budget がある

OWASP の open-source Agent Memory Guard project は、memory scanning と test tooling に関する1つの implementation signal です。その repository と self-reported evaluation は、team が pattern を調査する助けになりますが、実際の agent、model、memory backend、policy stack をテストする代替にはなりません。

Memory extraction、summarization、embedding、retrieval、prompt、model、tool schema、authorization、deletion logic に変更を加えた後は、test suite を再実行してください。これらの layer は相互に作用します。

証拠が支持すること、支持しないこと

論文は、構築された benchmark 内での attack success を測定しました。Production における AI agent memory poisoning の population-wide rate は測定していません。

論文が支持する結論は、次の3つに限定されます。

Persistent memory は session をまたいで influence を運ぶ可能性がある
Direct、compositional、dormant attack は異なる defense path を試す
Write-only defense には、joint retrieval または後の activation で現れる risk が残る

論文は、memory governance に context-sensitive defense が必要だと推論しています。Microsoft と OWASP は独立して、write、isolation、retrieval、user control、observability、testing にまたがる defense in depth を推奨しています。

実務的な解釈は、すべての transition を testable にすることです。Team は、なぜ record が保存されたのか、なぜ retrieval されたのか、どのように action に影響したのか、どの policy がその action を authorize したのか、そして record の downstream effect をどのように除去するのかを説明できるべきです。

チームからよく寄せられる質問

AI agent memory poisoning は prompt injection と同じですか?

いいえ。Prompt injection は hostile instruction を導入する1つの方法です。Memory poisoning は persistence を加えます。操作された content が保存され、後の context で retrieval され、元の input が消えた後も future reasoning または tool use に影響する可能性があります。

Signed memory record は poisoning を防げますか?

いいえ。Signature は、作成後に record が改変されていないことを証明できます。しかし、元の content が true、safe、authorized だったことは証明できません。Secure design には、provenance、explicit write intent、scope、expiry、retrieval checks、independent action authorization も必要です。

Memory poisoning defense は write time と retrieval time のどちらで実行すべきですか?

両方です。Write gate は unsafe persistence を減らします。Retrieval check は、個々の record が保存された時点では見えなかった stale、contradictory、compositional、trigger-dependent risk を検出します。どちらの layer も tool authority を付与できないようにすべきです。

主張の確認

主張CheckStatus
---------
GhostWriter は実験で平均約98%の injection と平均約60%の activation を達成したTested personal-agent setup 全体について論文が報告したもの。Production prevalence の推定ではないVerified, scoped
MemPoison には、4種類の attack type、3つの injection channel、3つの memory substrate にまたがる1,227件の hand-validated case が含まれる論文の abstract と evaluation description に記載Verified
Baseline write-time defense には、compositional attack と dormant attack に対する structural blind spot が残るMemPoison の著者らは L2 と L3 case に residual influence があると報告Verified, scoped
MemGhost は2つの held-out configuration で87.5%と71.4%の end-to-end success を報告した論文の test setup における56件の held-out case について報告Verified, scoped
MemGhost は mail-provider の spam と authentication control を測定していないEvaluation は inbox への delivery 後に開始され、それらの control を model 化していないVerified
Microsoft は memory を data と control plane として扱うことを推奨している現在の Microsoft Learn guidance に記載Verified
有効な signature は memory を trustworthy にしないCreation 後の integrity は safe origin、truth、intent、authority を確立しないVerified
Repository activity は memory framework が secure であることを証明しないStar、commit、release は attention と maintenance を測定するもので、security effectiveness ではないVerified

Sources

When Agents Remember Too Much: Memory Poisoning Attacks on Large Language Model Agents — Torres、Shrestha、Misra、arXiv、2026年7月6日。
Manage memory safety in agentic systems — Microsoft Learn、2026年6月3日更新。
AI Agent Security Cheat Sheet — OWASP Cheat Sheet Series。
Memory Is a Feature. It Is Also an Attack Surface — OWASP GenAI Security Project、2026年5月13日。
OWASP Agent Memory Guard — open-source implementation と test-tooling signal。Project-reported result は independent validation ではありません。