Security: OWASP ASI06 memory poisoning defense for AutoGen multi-agent memory #7698
Replies: 3 comments
-
|
I think this is a good security boundary to discuss, but I would avoid making any single memory scanner a hard dependency of AutoGen. The stronger integration point would be a memory policy hook with two separate checkpoints: The second checkpoint matters because memory can become unsafe after it was stored:
I would want the memory record to carry provenance metadata, not only text: {
"memory_id": "...",
"source": "user|tool|agent|system",
"created_by_agent": "...",
"created_at": "...",
"scope": "agent|team|global",
"integrity_hash": "sha256:...",
"last_policy_check": {
"policy": "memory-guard-v1",
"decision": "allow",
"checked_at": "..."
}
}Then AutoGen could support pluggable guards: memory = GuardedMemoryStore(
inner=memory_store,
guard=my_guard,
on_violation="quarantine",
)One caution: I would be careful with claims like So my vote would be: yes to a native guard/policy interface, maybe yes to documenting OWASP Agent Memory Guard as one implementation, but probably no to baking one specific scanner directly into AutoGen core. |
Beta Was this translation helpful? Give feedback.
-
|
This is really thoughtful feedback — thank you. The provenance metadata schema you proposed is exactly the direction I think this needs to go. A few reactions: On the pluggable interface: Fully agree. The right contract is On the dual-checkpoint model: The "before write" + "before read/use" separation is important and something we've been thinking about. The second checkpoint matters especially in multi-agent scenarios where memory written by Agent A gets read by Agent B in a higher-privilege context — the policy at write time may not be sufficient. On the Next step: Would it make sense to open a separate AutoGen issue specifically for the memory policy interface design? I'd be happy to draft a proposal based on your |
Beta Was this translation helpful? Give feedback.
-
|
Memory poisoning and output injection are related — both involve an adversary controlling what the agent sees. AgentGate's MCP proxy blocks INSTRUCTION_TAG and IMPERATIVE_INJECT patterns before they reach the agent's context. The malicious instruction is blocked before it enters memory, not scanned for after. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Problem
AutoGen's multi-agent systems that use shared memory pools, conversation history, or state persistence are vulnerable to memory poisoning attacks (OWASP ASI06). An attacker can inject malicious content into an agent's memory, and that poisoned content persists across sessions — silently altering the agent's behavior.
Unlike prompt injection (which is ephemeral), memory poisoning is persistent. Once the memory is poisoned, every future conversation that retrieves it treats the malicious content as trusted context.
Attack Vector
Proposed Solution
OWASP Agent Memory Guard is the official OWASP reference implementation for ASI06 defense. It provides:
Integration Example
Performance
References
Would the AutoGen team be interested in exploring a native integration or recommending this as a security best practice for memory-enabled agents?
Beta Was this translation helpful? Give feedback.
All reactions