T02 · Agent Memory Poisoning
- Location
SKILL.md:15- Finding
Untrusted conversation content can poison persistent agent memory
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 15-28 and 101-109
Vulnerability Type: Persistent memory poisoning through automatic ingestion
Risk Level: HighRelevant source excerpt translated into English:
text 1. WAL (write-ahead log) - record in real time during the session Trigger: | When the user says... | Write to section | |---------------------------------------|------------------| | Amount/refund/payment method | Accounting | | "Use X"/"It is decided" | Decisions | | "Not X, but Y" | Decisions | | "I like"/"I do not like" | Decisions | | cron/configuration/script changes | System | | Work that must continue another day | To-do | 2. MEMORY.md - long-term lesson index 3. memory/YYYY-MM-DD.md - daily raw archive 4. Obsidian - permanent archiveThe later archival procedure promotes conclusions and lessons into
MEMORY.md,SESSION-STATE.md, daily logs, and the task board.Technical Analysis
The Skill treats conversational phrases as automatic persistence triggers. It does not require owner confirmation, validate the origin of a statement, distinguish data from instructions, or apply a restrictive schema before storing content.
This creates a persistent trust-boundary failure. Content supplied by an untrusted participant can be framed as a correction, preference, decision, lesson, configuration change, or future task. Once written into the WAL and promoted into long-term memory, it may be loaded by future sessions and treated as trusted historical context.
The append-only requirement further complicates recovery because poisoned entries may remain available even after later corrections.
Attack Path
- An attacker participates in or influences a conversation processed by the Skill.
- The attacker sub ...[truncated 990 chars]
- Remediation
View remediation
Remediation Suggestions
- Require explicit authenticated owner approval before promoting conversation content into persistent memory.
- Separate factual records, preferences, tasks, and executable instructions into strictly validated schemas.
- Never persist shell commands, configuration directives, or behavioral instructions from untrusted conversation content.
- Store provenance with every entry, including author, session, timestamp, source, and approval status.
- Mark unverified entries as untrusted and prevent them from influencing tool execution.
- Add review, expiration, deletion, and rollback controls for all persistent entries.
- Perform semantic deduplication and conflict detection instead of relying only on text matching with
grep. - Keep an integrity-protected audit log of memory additions, modifications, approvals, and removals.
