T05 · Unauthorized Access and Privilege Escalation
- Location
SKILL.md:13- Finding
Overbroad Access to Agent Memory and Discord Communications
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 13–14
Vulnerability Type: Excessive access to private memory and unspecified Discord guild channels
Risk Level: MediumComplete Vulnerable Snippet:
markdown 1. **Read today's memory log**: `memory/YYYY-MM-DD.md` (use today's date) 2. **Read recent Discord messages** (optional): scan the guild channels for today's messages if memory log is sparseTechnical Analysis
The skill directs the agent to read its daily memory and, when that log is considered sparse, scan unspecified Discord guild channels. The phrase “scan the guild channels” does not impose a guild or channel allowlist, verify that the recap requester is authorized to access the messages, limit collection to relevant conversations, or require filtering of credentials and other sensitive content.
This behavior violates least-privilege principles because a daily recap can ordinarily be generated from the designated memory log. Broadening collection to every accessible guild channel may expose unrelated communications to the recap process. The gathered material is subsequently summarized and stored persistently in an Obsidian journal, potentially duplicating sensitive information into a location with different access controls.
Attack Path
- An authorized automation or user triggers the daily recap skill.
- The skill reads
memory/YYYY-MM-DD.md. - The agent determines that the memory log is sparse.
- Following the skill instructions, the agent scans all accessible Discord guild channels for messages from that day.
- It encounters unrelated private information, personal data, credentials, internal discussions, or content belonging to users outside the recap's intended scope.
- The agent incorporates some of that information into the recap.
- The recap is persisted at
vault/daily-recap/YYYY-MM-DD.md, making the improperly collected content available to anyone or any process with access to that vault.
No ...[truncated 929 chars]
- Remediation
View remediation
Remediation Suggestions
- Make Discord collection disabled by default and require explicit approval for each recap run.
- Define an allowlist of authorized guild and channel identifiers rather than scanning all accessible channels.
- Restrict queries to the applicable date, requesting identity, and recap-related conversations.
- Verify that the requesting user is authorized to summarize content from each selected channel.
- Apply least privilege to the Discord integration so it can read only channels required for recap generation.
- Add filtering for credentials, authentication tokens, personal data, private messages, and other sensitive content before creating the journal entry.
- Record source references and collection boundaries so users can review what was accessed.
- If the memory log is missing or sparse, default to the documented “No activity logged” behavior instead of automatically expanding data collection.
- Apply restrictive access controls and retention policies to
vault/daily-recap/because recap files may contain sensitive operational information.
