T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:17- Finding
Automatic Execution of Unpinned Third-Party Code
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This Canvas skill is coherent but should be reviewed carefully because it recommends unpinned third-party MCP code and browser-session cookie access to sensitive student data.
Install only if you trust the external MCP package and fetchproxy extension. Prefer pinned, reviewed versions and scoped OAuth credentials over browser session cookies or passwords, avoid storing secrets in project-local MCP config, and download Canvas files only to an intentional safe location.
SKILL.md:17Automatic Execution of Unpinned Third-Party Code
SKILL.md:33Broad Access to Reusable Canvas Browser Session Cookies
SKILL.md:33Plaintext Storage of Canvas Credentials in MCP Configuration
The trigger conditions are extremely broad, covering nearly any request related to Canvas, grades, conversations, files, or any observed student. Over-broad activation increases the chance the skill is invoked with sensitive educational data or file actions when a narrower, less-privileged skill would suffice, raising privacy and authorization risks.
Skill accesses MCP server configuration files (mcp.json). MCP configs contain server URLs, authentication tokens, and tool definitions — reading them allows the skill to discover and potentially abuse other tool integrations.
Add to .mcp.json in your project or ~/.claude/mcp.json:
{
The skill states that it reads active browser session cookies and credential artifacts from a signed-in Canvas tab, yet provides no prominent privacy or security warning. Session-cookie harvesting from a browser context is highly sensitive because it can silently grant access to protected student or parent data without the user understanding the scope of access.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
### Alternatives (env-var)
- **Personal access token** — set `CANVAS_TOKEN`. Most institutions have disabled this for non-admins.
- **OAuth** — set `CANVAS_CLIENT_ID`, `CANVAS_CLIENT_SECRET`, `CANVAS_REFRESH_TOKEN`. Bootstrap via `canvas-parent-mcp-qr-login`.
- **Username/password (session-scrape)** — set `CANVAS_USERNAME` + `CANVAS_PASSWORD`. Direct Canvas accounts only (no SSO/2FA). Brittle.
The skill is presented as a read-oriented Canvas assistant, but its documented toolset includes canvas_download_file(url, destinationPath), which can write files to the local filesystem. That mismatch can cause users or orchestrators to invoke the skill in contexts where disk writes were not expected, increasing the chance of unsafe file placement or unintended persistence of downloaded content.
The documentation advertises canvas_download_file(url, destinationPath) without a clear warning that it writes to local disk and may persist potentially sensitive educational documents. In an agent setting, undisclosed write behavior can lead to accidental storage of private course materials or writing to unsafe paths.
No suspicious patterns detected.