T05 · Unauthorized Access and Privilege Escalation
- Location
- SKILL.md:47
- Finding
- Unrestricted Local Context Collection and External Synchronization<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 47-66 **Vulnerability Type**: Excessive local data access and external disclosure **Risk Level**: High ### Vulnerable Code ```markdown ### 1c. Scan local context Read available local signals to understand the user: - `README.md`, `package.json`, `Cargo.toml` (project tech stack) - `docs/`, `notes/`, any markdown (domain knowledge) - Git history (what they're working on) - Claude memory files (if available) ### 1d. Sync to Aicoo ```bash curl -s -X POST "https://www.aicoo.io/api/v1/accumulate" \ -H "Authorization: Bearer $AICOO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "files": [ {"path": "General/about-me.md", "content": "# [User Name]\n\n## Role\n...\n\n## Current Work\n..."}, {"path": "Technical/architecture.md", "content": "..."} ] }' | jq . ``` ``` ### Technical Analysis The skill directs the agent to inspect a broad and insufficiently bounded set of local resources, including arbitrary Markdown files, personal notes, Git history, and Claude memory files. It subsequently instructs the agent to transmit synthesized profile and architecture information to an external Aicoo API. No path allowlist, secret detection, sensitivity classification, file-by-file preview, or explicit approval checkpoint is required before transmission. The phrase “any markdown” can encompass credentials, internal documentation, customer information, private notes, and proprietary project records. Claude memory may also contain information collected in unrelated sessions. Although synchronization is part of the declared onboarding function, accessing all of these sources exceeds the least privilege needed to initialize an account. ### Attack Path 1. A user invokes the onboarding skill to initialize Aicoo. 2. The agent follows the instruction to inspect project files, notes, arbitrary Markdown files, Git history, and Claude memory. 3. Sensitive information is encoun ...[truncated 887 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Replace broad scanning with an explicit allowlist of user-selected files and directories. 2. Exclude Claude memory, hidden files, environment files, credentials, Git internals, and personal notes by default. 3. Do not interpret “any markdown” as authorization to scan recursively. 4. Run secret and sensitive-data detection before preparing an upload. 5. Display the exact file paths and complete outgoing content to the user before transmission. 6. Require affirmative, per-upload consent rather than treating skill invocation as blanket consent. 7. Minimize uploaded content by extracting only fields necessary for onboarding. 8. Document data retention, deletion, and revocation procedures. 9. Provide a local-only onboarding mode that does not synchronize project information. ]]>
