T02 · Agent Memory Poisoning
Error
- Location
- SKILL.md:341
- Finding
- Untrusted intelligence is mandated to be written into durable cross-session memory## Vulnerability Details **File Location**: `SKILL.md:341-365`; related instructions in `SubagentSKILL.md:55-65` and `SubagentSKILL.md:98-104` **Vulnerability Type**: Persistent memory poisoning **Risk Level**: High ### Vulnerable Code `SKILL.md:341-365`: ```markdown ## Memory + identity persistence requirement Document Horus context in: `~/workspace/horus/MEMORY.md` At minimum keep durable notes for: - What Horus is (purpose + UX) — currently MWC 2026 Barcelona event intelligence terminal - Where Horus data lives (`~/workspace/horus/horus-relay/data/`) - Active event context (MWC 2026 — 3–6 March 2026, Fira Gran Via, Barcelona) - Key tracked themes: Samsung/Qualcomm/Ericsson/Nokia announcements, 5G/6G, AI on device, semiconductor supply chain - How to answer intel questions from data by default - Cross-channel continuity expectation (external chat + Horus chat = same agent) ## Horus memory file (required) Maintain project memory in: ```text ~/workspace/horus/MEMORY.md ``` Use it as a durable backup log of important events and changes, each with UTC date/time. When major incidents or architectural changes happen, append an entry immediately. This memory is used to cross-reference ongoing events and avoid losing context between sessions. ``` `SubagentSKILL.md:55-65`: ```markdown ## Memory requirement (mandatory) For notable announcements and major changes, append entries with UTC timestamp to: `~/workspace/horus/MEMORY.md` Use concise format: ```markdown ## YYYY-MM-DD HH:MM UTC — <event or announcement> - What was announced/happened: - Why it matters (market / tech / industry impact): - Sources/signals: - Follow-up: ``` ``` `SubagentSKILL.md:98-104`: ```markdown ## Durable memory reminder Keep `~/workspace/horus/MEMORY.md` updated with durable facts: - Horus purpose: MWC 2026 Barcelona tech event intelligence terminal - Active event: MWC 2026, Fira ...[truncated 3278 chars]
- Remediation
- ## Remediation Suggestions 1. Remove the requirement to persist every notable announcement or major change automatically. 2. Require explicit user approval before writing feed-derived information to durable memory. 3. Keep intelligence records in a project-scoped database or cache instead of agent behavioral memory. 4. Store external content strictly as data and never as executable instructions or assistant policy. 5. Record immutable provenance for every persisted item, including source URL, retrieval time, source type, and content hash. 6. Require corroboration from multiple independent sources before promoting a claim to durable status. 7. Add confidence, verification state, expiration time, and last-reviewed time to each record. 8. Prevent feed content from modifying identity, safety, tool-use, or response-policy fields. 9. Separate cross-channel conversation state by user and authorization context rather than relying on one shared global memory file. 10. Treat all existing `MEMORY.md` entries as untrusted until reviewed and sourced. 11. Add size limits, file locking, schema validation, and rollback or audit logging for approved writes. 12. Permit agents to read the event cache by default, but grant write access to durable memory only for an explicit memory-maintenance task.
