T09 · Insecure Skill Coding Practices
- Location
SKILL.md:42- Finding
Arbitrary Python Code Execution Through Unsafe Markdown Interpolation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill’s publishing purpose is clear, but its broad triggers and unsafe command template create avoidable risk of unintended upload or local code execution.
Review before installing. Use this only for markdown you intend to upload to md.page, confirm publication explicitly, avoid private or sensitive files, and replace the documented Python interpolation pattern with a stdin/file-based JSON encoding workflow.
SKILL.md:42Arbitrary Python Code Execution Through Unsafe Markdown Interpolation
The skill’s trigger phrases are broad enough to match common requests like 'share this' or 'create a page', which increases the chance the agent invokes this skill in situations where the user did not clearly intend third-party publication. Because the skill sends content to an external hosting service, over-triggering can lead to unintended disclosure of sensitive or private markdown.
The skill explains how to publish content but does not prominently warn, in user-facing terms, that markdown will be transmitted to an external third-party service and exposed via a shareable URL. That omission undermines informed consent and makes accidental disclosure of private notes, reports, or internal documents more likely.
This is an explicit external transmission path: the skill posts arbitrary markdown content to md.page over the network. While publishing is the intended function, it is still security-relevant because any sensitive content included in the markdown will leave the local trust boundary and be stored by a third party.
POST https://md.page/api/publish
curl -X POST https://md.page/api/publish \
-H "Content-Type: application/json" \
-d '{"markdown": "# Hello\n\nYour content here"}'
This second example provides a concrete mechanism for transmitting arbitrary markdown to the external service, including content read from files, making the exfiltration path operationally easy to use. The use of Python for JSON encoding is not itself dangerous, but it streamlines sending potentially sensitive content off-platform if the skill is triggered inappropriately or without adequate user awareness.
curl -s -X POST https://md.page/api/publish \
-H "Content-Type: application/json" \
-d "$(python3 -c "
import json
The package description and skill metadata advertise publishing broadly as 'any markdown' and 'shareable web page' without describing consent checks, sensitive-content exclusions, or activation guardrails. In an agentic context, this can cause over-triggering or unsafe publication of private notes, reports, or internal documentation when a user asks to 'share this' or similar, increasing the chance of unintended data exposure.