AI agent memory poisoning, güvenilmeyen tek bir girdiyi kalıcı duruma dönüştürür. Bir agent saldırganın kontrolündeki içeriği kalıcı belleğe yazdığında, bu içerik günler veya oturumlar sonra görünüşte güvenilir bağlam olarak geri dönebilir. Tüm yaşam döngüsünü savunun: her yazmayı denetleyin, provenance ve sona erme bilgisi ekleyin, kayıtları kullanıcı ve agent bazında izole edin, retrieval işlemini yeniden tarayın, action authorization'ı modelin dışında tutun ve geri almayı destekleyen bir influence log saklayın.
İçindekiler
AI agent memory poisoning nedir?
AI agent memory poisoning, daha sonraki retrieval işleminin bir agent'ın yanıtını, kararını veya tool kullanımını değiştirmesi amacıyla kalıcı kayıtların eklenmesi ya da değiştirilmesidir. Etki ortaya çıktığında özgün girdi ortadan kalkmış olabilir. Bu zaman aralığı, saldırının fark edilmesini ve yeniden oluşturulmasını, mevcut konuşmadaki görünür bir prompt injection'a kıyasla daha zor hale getirir.
Memory çeşitli yerlerde bulunabilir:
Depolama teknolojisi belirleyici konu değildir. Kalıcılık ve daha sonra ortaya çıkan etki, security boundary'yi oluşturur.
Bu risk, birbirine yakın üç riskten farklıdır. Prompt injection mevcut model context'ini manipüle eder; ancak poisoned memory için delivery channel haline gelebilir. Training-data poisoning, training corpus aracılığıyla model davranışını değiştirir. Retrieval poisoning, bir istek için seçilen içeriği hedefler. Agent-memory poisoning ise sistemin daha sonra kullanıcının geçmişinin, tercihlerinin veya çalışma durumunun bir parçası olarak değerlendirebileceği bir kaydı kalıcı hale getirir.
Pratikte üç saldırı modeli önemlidir:
| Model | Saklanan biçim | Etkinleşme | Basit bir filtrenin zorlanma nedeni |
|---|---|---|---|
| --- | --- | --- | --- |
| Doğrudan bozulma | Bir kayıt zararlı yönlendirmeyi veya yanlış gerçeği içerir | Kayıt daha sonra retrieve edilir | İçerik bir tercih, özet veya task notu gibi gizlenebilir |
| Bileşimsel bozulma | Birden fazla kayıt tek başına kabul edilebilir görünür | Birlikte retrieval, zararlı anlamı oluşturur | Risk yalnızca birleşimde ortaya çıktığı için her yazma işlemi geçer |
| Uyuyan bozulma | Bir kayıt tetikleyiciye bağlı bir instruction içerir | Daha sonraki bir olay, ifade veya tool durumu onu etkinleştirir | Kayıt yazılırken tetikleyici mevcut değildir |
Microsoft'un güncel guidance'ı aynı yapısal kaygıyı savunma açısından açıklar: kalıcı memory hem hassas verileri saklar hem de model davranışını ve tool seçimini etkiler. Bu nedenle hem bir data system hem de bir control plane olarak yönetilmelidir. Microsoft Learn
Yakın tarihli üç çalışma neyi ölçtü
Temmuz 2026'da yayımlanan üç preprint, bu tehdidin farklı bölümlerini inceledi. Birlikte okunduklarında, tek bir memory filtresinin neden zayıf bir release criterion olduğunu gösteriyorlar.
GhostWriter şimdi injection'ı, daha sonra activation'ı test etti
When Agents Remember Too Much, tool kullanan kişisel agent'lara yönelik iki aşamalı bir saldırı olan GhostWriter'ı tanıttı. Saldırgan önce güvenilmeyen bir kaynağa gizli içerik yerleştirir. Agent bu kaynağı işler ve saldırganın etkilediği memory'yi yazar. Daha sonraki bir task kaydı retrieve eder ve etkisini etkinleştirir.
Makalenin test ettiği agent ve model genelinde GhostWriter yaklaşık %98 ortalama injection rate ve yaklaşık %60 ortalama activation rate elde etti. Yazarlar ayrıca daha sıkı bir memory-saving policy'yi retrieval screen ile birleştiren AM-Sentry'yi test etti. Makale, özel olarak simüle edilmiş çalışma haftasında hem saldırı başarısını hem de task utility'yi değerlendiriyor; defense sonuçları model ve configuration'a göre değişiyor.
Sınırlar önemlidir. Çalışma beş agent'ı, dört model ailesini ve email veya calendar workflow'larını kapsıyor. Utility testi özeldir, saldırganlar adaptive değildir ve sonuçlar deployed agent'ların ne sıklıkta saldırıya uğradığını tahmin etmez.
MemPoison doğrudan, bileşimsel ve uyuyan hataları ayırdı
MemPoison, dört saldırı türü, üç injection channel ve üç memory substrate genelinde elle doğrulanmış 1.227 vaka oluşturdu. Değerlendirmeye yedi open-weight ve üç closed-weight model ailesi dahil edildi.
Makalenin yararlı katkısı üç seviyeli taxonomy'sidir. L1, tek kayıtta gerçekleşen doğrudan bozulmadır. L2, birden fazla kayıt birlikte retrieve edildiğinde zararlı hale gelir. L3, daha sonraki bir context onu etkinleştirene kadar uyku halinde kalır. Yazarlar, baseline write-time defense'lerin doğrudan saldırıları L2 veya L3 vakalarına kıyasla daha güvenilir biçimde bastırdığını bildiriyor. Mekanistik influence analysis, bu farkı saklandıklarında zararsız görünen ancak composition veya trigger altında zararlı hale gelen kayıtlara bağlıyor.
Bu, her production write filter'ın başarısız olacağını kanıtlamaz. Benchmark üç temsili memory substrate'ını ve standart text-based channel'ları kapsıyor. Yazarlar decay, summarization, access control ve diğer memory ecosystem'leri üzerine daha geniş çalışmalar yapılmasını öneriyor.
MemGhost tek seferlik bir email delivery path'ini test etti
When Claws Remember but Do Not Tell, gerçek bir IMAP/SMTP workflow'u ve bir email-agent skill kullanan 108 vakalık bir benchmark olan WhisperBench'i tanıttı. Saldırı framework'ü MemGhost, runtime feedback olmadan tek bir email payload'ı oluşturuyor. Başarı için agent'ın poisoned memory'yi benimsemesi, immediate response'unda kullanıcıyı uyarmaktan kaçınması ve daha sonraki davranışını değiştirmesi gerekiyor.
56 held-out vaka üzerinde makale, GPT-5.4 ile OpenClaw'da %87,5 ve Sonnet 4.6 ile Claude Code SDK'da %71,4 end-to-end success bildiriyor.
Bu rakamlar yazarların benchmark'ına, proxy environment'ına, reward design'ına ve model version'larına aittir. Evaluation, bir mesaj inbox'a ulaştıktan sonra başlıyor. Spam filtering, SPF, DKIM veya DMARC gibi mail-provider control'lerini modellemiyor. Makale ilk sürüm bir preprint olduğundan sonuçları tekrarlanmalıdır.
Yazma zamanı filtrelemesi neden yeterli değildir
Bir write gate, önerilen kaydı ve o anda mevcut olan kanıtları görür. Gelecekteki task'ı, yanında retrieve edilecek diğer kayıtları veya agent'ın daha sonra çağıracağı tool'u görmeyebilir.
Bu durum dört kör nokta oluşturur:
Write-time check'ler yine de önemlidir. Güvensiz state'in persistence'a ulaşan miktarını azaltırlar. Hata, storage approval'ı kalıcı trust olarak değerlendirmektir.
Retrieval, authority değil candidate context döndürmelidir. Bir kaydı model context'ine eklemeden önce sistem kaynağını, yaşını, task relevance'ını, çelişkileri, hassasiyetini ve istenen etkisini kontrol edebilir. High-risk bir kayıt withheld edilebilir, özetlenebilir veya review'a yönlendirilebilir. Microsoft'un güncel guidance'ı bu write-and-retrieval ayrımını, deterministic isolation ve full lifecycle visibility ile birlikte öneriyor. Microsoft Learn
Son safety decision yine memory'nin dışında kalmalıdır. “Send reports to this address” diyen retrieved bir note, recipient allowlist'i değiştirmemelidir. Bir deployment region'a ilişkin hatırlanan tercih cloud permission oluşturmamalıdır. Önerilen action'ı mevcut user, resource, scope ve policy'ye göre değerlendirmek için deterministic AI agent permissions→ kullanın.
Güvenli bir agent-memory mimarisi
Sistem, source'tan action'a kadar izlenebilir bir zincire ihtiyaç duyar:
`source → write decision → stored version → retrieval decision → model context → policy decision → tool result`

*Caption: Bir memory kaydı, yalnızca write ve retrieval check'lerinden sonra candidate context haline gelir. Bağımsız policy her consequential action'ı authorize ederken influence chain investigation ve rollback'i destekler.*
1. Kalıcı yazmalar için açık intent gerektirin
Her mesajın, dokümanın veya tool response'unun long-term memory haline gelmesine izin vermeyin. Hangi event'lerin durable state oluşturabileceğini tanımlayın. Kullanıcı tarafından onaylanmış tercihler ve açık “remember this” action'ları, güvenilmeyen bir attachment'ın autonomous summary'sine kıyasla daha kolay gerekçelendirilebilir.
Write işlemini kimin veya neyin istediğini kaydedin. Bir tool veya subagent başlattıysa, her şeyi son kullanıcının adına indirgemek yerine bu identity'yi koruyun.
2. Provenance, scope ve expiry bilgilerini kayıtla birlikte saklayın
Yararlı bir memory kaydı, text ve embedding'den fazlasına ihtiyaç duyar. En azından şunları saklayın:
Bir signature record integrity'yi koruyabilir. Özgün içeriğin doğru, güvenli veya authorized olduğunu kanıtlayamaz.
3. Isolation'ı code ve storage'da uygulayın
Tenant, user, agent ve workspace sınırları access-control list'lerinde, scoped token'larda, row-level policy'lerde ve encryption boundary'lerinde yer almalıdır. Prompt instruction'ları access control değildir. Shared memory, kullanışlı bir default namespace değil; named writer ve reader'lara sahip açık bir product feature olmalıdır.
Aynı ilke execution environment için de geçerlidir. Retrieved content code execution'a veya geniş kapsamlı tool kullanımına neden olabiliyorsa, process'i AI agent sandbox security→ ile contain edin. Memory isolation, hangi context'in bir boundary'yi geçtiğini sınırlar. Sandbox ve identity control'leri, güvensiz context agent'a ulaşsa bile ne olacağını sınırlar.
4. Low-trust write'ları quarantine'a alın
“Discarded” ile “trusted memory” arasında bir state oluşturun. External file'lar, email'ler, web page'ler, indirect tool output'ları ve intent'i belirsiz kayıtlar quarantine'a girebilir. Deterministic bir rule veya authorized reviewer onları promote edene kadar normal retrieval'da görünmemelidir.
Quarantine ayrıca incident responder'lara, influence'ı sürdürmeden kanıtı koruyabilecekleri bir yer sağlar.
5. Retrieval sırasında kayıtları yeniden değerlendirin
Retrieval risk'i mevcut task'a bağlıdır. Yalnızca her kaydı değil, seçilen seti değerlendirin:
Retrieval'ı generation'dan ayrı değerlendirin. Bir RAG evaluation workflow→, “yanlış kayıt seçildi” ile “model doğru kaydı yanlış kullandı” durumlarını ayırt etmeye yardımcı olur. Provenance, trigger dependence, composition ve cross-session activation gibi memory-specific boyutları ekleyin.
6. Tool authorization'ı bağımsız tutun
Memory parametre sağlayabilir. Permission'ları asla genişletmemelidir. Tool gateway mevcut identity'yi, allowed action'ı, resource boundary'yi, destination'ı, budget'ı ve approval requirement'larını uygulamalıdır. Memory-derived argument'ları untrusted input olarak değerlendirin ve mevcut policy'ye göre validate edin.
Human approval da güncel context'e ihtiyaç duyar. Proposed action'ı, etkilenen resource'u, data destination'ı ve onu etkileyen memory'leri gösterin. Bu zincir olmadan sunulan “Approve?” sorusu ilgili kararı gizler.
7. Influence'ı log'layın ve rollback'i destekleyin
Memory create, read, update ve delete operation'larını identity ve provenance ile log'layın. Consequential action'lar için context'e eklenen kayıtların ID'lerini ve version'larını saklayın. Bu, üç incident sorusunu yanıtlamayı mümkün kılar:
Deletion, yalnızca user interface'te bir row'u gizlemekle kalmamalı, active influence'ı da kaldırmalıdır. Index'leri, summary'leri, cache'leri, replica'ları ve derived record'ları test edin. OWASP'ın agent guidance'ı validated ve isolated memory ile adversarial test'leri ve release evidence'ı önerir; daha geniş memory analysis'i persistent prompt injection'ı agent-memory threat surface ile ilişkilendirir. OWASP Agent Security Cheat Sheet OWASP GenAI Security Project
Her memory sınıfı için bir policy seçin
Tek bir retention policy fazla kabadır. Farklı write ve retrieval kurallarına sahip sınıflarla başlayın.
| Memory sınıfı | Varsayılan write policy | Retrieval policy | Action authority |
|---|---|---|---|
| --- | --- | --- | --- |
| Ephemeral task context | Automatic, kısa TTL | Yalnızca mevcut task | Yok |
| User-confirmed preference | Explicit confirmation | Aynı user ve declared purpose | Öneride bulunabilir, asla authorize edemez |
| Agent-generated summary | Versioned ve source'lara bağlı | Source'ları ve freshness'ı yeniden kontrol et | Yok |
| External content | Varsayılan olarak quarantine | Yalnızca trust ve relevance check'lerinden sonra | Yok |
| Operational instruction | Authorized writer ve policy review | Exact scope, current version | Yine de tool policy gerektirir |
| Secret veya regulated data | Block et veya dedicated secret/data system kullan | General memory'ye asla yerleştirme | Yalnızca dedicated control plane |
Bu tablo başlangıç policy'sidir; compliance claim değildir. Medical agent, coding assistant, sales agent ve personal assistant farklı harm model'lerine sahiptir. Değişmeyen ilke daha dardır: persistence, untrusted content'i sessizce permission'a dönüştürmemelidir.
Tekrarlanabilir bir memory-poisoning test iş akışı
Test harness'ı benign marker'lar ve disposable account'lar etrafında oluşturun. Persistence ve policy hatalarını tespit etmek için gerçek credential'lara veya exfiltration payload'larına ihtiyacınız yoktur.
Adım 1: Temiz bir baseline yakalayın
Boş bir memory store ile sabit bir task set çalıştırın. Yanıtları, retrieval sonuçlarını, tool proposal'larını, policy decision'larını, latency'yi ve user-visible explanation'ları kaydedin. Sistem değişikliklerini normal model variance'ından ayırmak için yeterince tekrarlayın.
Adım 2: Eşleştirilmiş clean ve poisoned case'ler tanımlayın
Her case için user task'ını sabit tutun ve yalnızca candidate memory path'ini değiştirin. En azından şunları kapsayın:
Disposable bir log'a `TEST_BLOCKED` yazmak gibi bir canary action kullanın. Agent beklenen policy path'inin dışında bu action'ı gerçekleştirir veya önerirse test başarısız olur.
Adım 3: Her boundary'yi gözlemleyin
Dört ayrı sonucu yakalayın:
End-to-end pass zayıf bir katmanı gizleyebilir. Örneğin authorization, poisoned record saklanıp tekrar tekrar retrieve edilmesine rağmen canary action'ı block edebilir. Bu yararlı bir containment'tır; ancak memory defect yine de düzeltilmelidir.
Adım 4: Utility ve false positive'leri ölçün
Benign memory case'lerini aynı pipeline'dan geçirin. Task completion, accepted user preference'lar, incorrect quarantine'lar, retrieval precision, latency, review volume ve false positive'leri takip edin. Tüm durable memory'yi block eden bir filter, feature'ı kaldırdığı için düşük attack success elde eder.
Adım 5: Risk'e göre release gate'leri belirleyin
Yararlı gate'ler şunları içerir:
OWASP'ın open-source Agent Memory Guard project projesi, memory scanning ve test tooling için bir implementation signal'dir. Repository'si ve self-reported evaluation'ı ekiplerin pattern'leri incelemesine yardımcı olabilir; ancak gerçek agent, model, memory backend ve policy stack'ini test etmenin yerini tutmaz.
Memory extraction, summarization, embedding, retrieval, prompt, model, tool schema, authorization veya deletion logic'teki değişikliklerden sonra suite'i yeniden çalıştırın. Bu katmanlar birbirleriyle etkileşir.
Kanıtlar neyi destekliyor, neyi desteklemiyor
Makaleler, constructed benchmark'lar içindeki attack success'i ölçtü. Production'da AI agent memory poisoning'in population-wide rate'ini ölçmediler.
Daha dar kapsamlı üç sonucu destekliyorlar:
Makaleler, memory governance'ın context-sensitive defense'lere ihtiyaç duyduğu sonucunu çıkarıyor. Microsoft ve OWASP bağımsız olarak write, isolation, retrieval, user control, observability ve testing genelinde defense in depth öneriyor.
Pratik yorum, her geçişi test edilebilir hale getirmektir. Bir ekip bir kaydın neden saklandığını, neden retrieve edildiğini, bir action'ı nasıl etkilediğini, bu action'ı hangi policy'nin authorize ettiğini ve kaydın downstream etkilerinin nasıl kaldırılacağını açıklayabilmelidir.
Ekiplerin sorduğu sorular
AI agent memory poisoning, prompt injection ile aynı şey midir?
Hayır. Prompt injection, hostile instruction'ları tanıtmanın bir yoludur. Memory poisoning persistence ekler: manipüle edilmiş içerik saklanır, daha sonraki bir context'te retrieve edilir ve özgün input ortadan kalktıktan sonra gelecekteki reasoning veya tool kullanımını etkileyebilir.
Signed memory record'lar poisoning'i önleyebilir mi?
Hayır. Signature'lar bir kaydın oluşturulduktan sonra değiştirilmediğini kanıtlayabilir. Özgün içeriğin doğru, güvenli veya authorized olduğunu kanıtlamazlar. Güvenli bir design ayrıca provenance, explicit write intent, scope, expiry, retrieval check'leri ve independent action authorization gerektirir.
Memory poisoning defense'leri write time'da mı yoksa retrieval time'da mı çalışmalı?
Her ikisinde de. Write gate'ler unsafe persistence'ı azaltır. Retrieval check'leri, tek tek kayıtlar saklanırken görünür olmayan stale, contradictory, compositional veya trigger-dependent riskleri yakalar. Hiçbir katmanın tool authority vermesine izin verilmemelidir.
İddia kontrolleri
| İddia | Kontrol | Durum |
|---|---|---|
| --- | --- | --- |
| GhostWriter deneylerinde yaklaşık %98 ortalama injection ve yaklaşık %60 ortalama activation elde etti | Makale tarafından test edilen personal-agent setup'ları genelinde bildirildi; production prevalence estimate değildir | Doğrulandı, kapsamı sınırlandı |
| MemPoison dört attack type, üç injection channel ve üç memory substrate genelinde 1.227 hand-validated case içerir | Makalenin abstract'ında ve evaluation description'ında belirtilmiştir | Doğrulandı |
| Baseline write-time defense'ler compositional ve dormant attack'lar için structural blind spot'lar bırakır | MemPoison yazarları L2 ve L3 case'lerinde residual influence bildiriyor | Doğrulandı, kapsamı sınırlandı |
| MemGhost iki held-out configuration'da %87,5 ve %71,4 end-to-end success bildirdi | Makalenin test setup'ı altındaki 56 held-out case genelinde bildirildi | Doğrulandı, kapsamı sınırlandı |
| MemGhost mail-provider spam ve authentication control'lerini ölçmedi | Evaluation inbox'a delivery'den sonra başlıyor ve bu control'leri modellemiyor | Doğrulandı |
| Microsoft memory'nin data ve control plane olarak ele alınmasını öneriyor | Güncel Microsoft Learn guidance'ında belirtilmiştir | Doğrulandı |
| Geçerli bir signature memory'yi trustworthy hale getirmez | Creation sonrasındaki integrity; safe origin, truth, intent veya authority'yi kanıtlamaz | Doğrulandı |
| Repository activity, bir memory framework'ünün secure olduğunu kanıtlamaz | Star'lar, commit'ler ve release'ler security effectiveness'ı değil, ilgi ve maintenance'ı ölçer | Doğrulandı |
