T02 · Agent Memory Poisoning
- Location
- references/execution-flow.md:49
- Finding
- Persistent Injection into the Self-Evolution Candidate Queue## Vulnerability Details **File Location**: `references/execution-flow.md`, lines 49-52 **Vulnerability Type**: Persistent memory poisoning through an automated evolution handoff **Risk Level**: High **Relevant source excerpt, translated into English:** ```markdown ### Step 6: Session Synthesis and Agentic Action Proposal (Mandatory) - Write `YYYYMMDD_DMN_Synthesis_HHMM.md`. - **Agentic Action Proposal**: As an OpenClaw Agent with complete control over the host, DMN must simulate a domain expert and propose 1-2 concrete, executable technical actions based on the insights from this thought session. - **Evolution Handoff**: If an action proposal involves improving AI capabilities, optimizing system workflows, or writing a new Skill, after writing the Synthesis, the proposal must be extracted into a one-line summary and appended to `memory/evolve/candidates.md`. - Update `dmn-state.json`. ``` ### Technical Analysis The skill requires agent-generated proposals to be appended to a persistent queue consumed by a separate `self-evolve` process. The handoff is mandatory for proposals related to AI capabilities, workflow changes, or new skills, and the documented flow does not require user approval before modifying this queue. Because proposals are derived from memory, personal notes, and previous synthesis files, untrusted or manipulated content in those sources can influence the generated proposal. Persisting the resulting instruction creates a cross-session influence channel. A later evolution component may treat the queued entry as an authorized capability or workflow modification candidate. This is classified as `T02: Agent Memory Poisoning` because generated instructions are written into long-term state specifically intended to influence future agent behavior. ### Attack Path 1. An attacker causes crafted instructions or misleading technical content to appear in a note, memory file, user-message file, or previous synthesis a ...[truncated 1200 chars]
- Remediation
- ## Remediation Suggestions - Require explicit, informed user approval before writing any proposal to `memory/evolve/candidates.md`. - Store generated proposals in a separate, non-executable review directory rather than directly in an evolution input queue. - Record proposal provenance, including all source files that influenced it. - Mark all generated content as untrusted data and prohibit downstream components from treating it as an instruction. - Apply a strict schema and allowlist to candidate types and reject shell commands, URLs, package installation instructions, credential requests, and permission changes. - Require a second approval before downstream implementation. - Ensure `self-evolve` never automatically executes queued text and runs approved changes in a sandbox with least privilege. - Add integrity-protected audit logs for proposal creation, approval, rejection, and implementation.
