T09 · Insecure Skill Coding Practices
- Location
scripts/see.py:62- Finding
Untrusted or Plaintext Vision Endpoint Can Receive Sensitive Images and API Credentials
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent image-analysis helper, but it can send local images, prompts, and an API key to arbitrary configured endpoints, including unsafe project-provided or HTTP endpoints.
Install only if you trust the configured vision endpoint and understand that image contents and prompts may leave your machine. Prefer local or HTTPS endpoints, avoid project-controlled endpoint settings in untrusted repositories, and do not reuse a sensitive global API key with arbitrary VISION_BASE_URL values.
scripts/see.py:62Untrusted or Plaintext Vision Endpoint Can Receive Sensitive Images and API Credentials
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
例如:
mkdir -p ~/.claude/skills
cp -r vision ~/.claude/skills/
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
例如:
mkdir -p ~/.claude/skills
cp -r vision ~/.claude/skills/
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
例如:
mkdir -p ~/.claude/skills
cp -r vision ~/.claude/skills/
The README explains configuration of arbitrary OpenAI-compatible vision endpoints and says local files are converted and sent, but it does not prominently warn that images, OCR targets, and user prompts may be transmitted to external services. This creates a real privacy and data-handling risk because users may unintentionally send screenshots, documents, credentials, or other sensitive content off-host.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
The skill invokes a Python script that reads local files, accesses environment-derived configuration, and can send data to remote HTTP(S) endpoints, yet the skill metadata declares no explicit tool scope or permissions. That omission weakens reviewability and policy enforcement because consumers cannot easily tell that using the skill may read images and transmit them off-host.
The trigger language is very broad ('use this WHENEVER you need to look at...') and includes many generic image-related phrases, which can cause the skill to activate in situations where external delegation was not intended. In this skill's context, over-activation matters because activation can lead to local image reading and transmission of image content or URLs to a third-party endpoint.
The skill description explains that a script sends the image to a configurable OpenAI-compatible vision model, but it does not clearly warn the user at the point of use that local images and remote image URLs may be transmitted to an external endpoint. This creates a real privacy and data-handling risk because users may provide screenshots, documents, or internal diagrams without informed consent about off-device processing.
No genuine natural-language language/locale policy violation was identified in this file. The content is written in Chinese, but it does not force a specific output language or locale on the user.
No suspicious patterns detected.