T03 · Remote Payload Retrieval and Execution
- Location
install.sh:31- Finding
Unsafe Pipe-to-Shell Installation Guidance
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This image-analysis skill mostly does what it claims, but its installer and remote API handling create review-worthy supply-chain and privacy risks.
Install only if you trust the publisher and are comfortable sending analyzed images, screenshots, OCR content, prompts, and an API key to the configured vision provider. Avoid the remote URL installer and curl-pipe-to-bash flow, prefer a pinned reviewed release, use HTTPS-only API endpoints, and consider storing the API key outside the plaintext config file or locking down file permissions.
install.sh:31Unsafe Pipe-to-Shell Installation Guidance
install.sh:12Arbitrary Remote Source Can Install Unverified Executable Skill Code
README.md:8Unpinned Third-Party Installer and Skill Source
scripts/vision.js:165API Credentials and Image Data Can Be Transmitted over Plaintext HTTP
scripts/vision.js:55API Key Is Stored Without Enforced Restrictive File Permissions
The declared purpose is image analysis, but the referenced behavior includes setup/installer actions, home-directory modification, permission changes, and downloading remote content with curl. That mismatch is dangerous because users or orchestrators may invoke the skill expecting passive analysis while it performs privileged local changes and fetches untrusted code/content.
Referenced artifact was not completely inspected
node scripts/vision.js --setup
Referenced artifact was not completely inspected
node scripts/vision.js --setup
Referenced artifact was not completely inspected
node scripts/vision.js --setup
Referenced artifact was not completely inspected
node scripts/vision.js --setup
Referenced artifact was not completely inspected
node scripts/vision.js --setup
Referenced artifact was not completely inspected
node scripts/vision.js --setup
Referenced artifact was not completely inspected
node scripts/vision.js --setup
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
cp "$SCRIPT_DIR/config.json" "$SKILL_DIR/" 2>/dev/null || true
else
echo "错误:请提供 GitHub URL 或在 skill 目录下运行此脚本"
echo "用法:curl -fsSL https://.../install.sh | bash"
exit 1
fi
fi
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
}
// 回退到环境变量(兼容旧版本)
try { require("dotenv").config({ path: path.join(SKILL_DIR, ".env") }); } catch {}
if (process.env.DASHSCOPE_API_KEY) {
return {
The user-facing instructions are entirely in Chinese, and the usage example also assumes Chinese-language interaction, but the file does not offer a language choice or explain a region-specific constraint. This can violate language or locale policy when a skill implicitly requires a specific language without user opt-in.
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 activation guidance is broad enough that ordinary conversation about images, screenshots, or attached files may trigger the skill automatically. In a vision skill that forwards image content to an external model or API, over-triggering can cause unintended transmission of sensitive images or OCR-extracted text, increasing privacy and data-exposure risk.
The skill documentation indicates shell and environment capabilities are required, but it does not declare any tool scope or permission boundaries. In a skill that reads local files, accepts URLs, and invokes scripts, the absence of explicit allowed-tools makes it easier for an agent runtime to overgrant capabilities or execute the skill without clear sandbox expectations.
The example invocation hard-codes the prompt '用中文描述这张图片', which directs the skill to respond in Chinese. This is a language policy concern because the skill does not indicate that language is optional or user-selectable.
The skill sends image data to an external vision API but does not clearly warn users that their images, potentially including sensitive screenshots or documents, leave the local environment. This creates a privacy and data-governance risk because users may unknowingly transmit confidential content to third-party services.
The eval prompts exercise very broad, natural-language triggers such as asking to 'look at this image' or analyze a screenshot, which reinforces activation on common conversational phrases without clear scope boundaries or stronger attachment checks. In a vision skill, this can cause over-triggering, unintended tool use on loosely related inputs, and potentially fetching or processing user-supplied local paths or remote URLs when the model should first confirm context and authorization.
The trigger evaluation examples are very broad, everyday image-related requests and do not include meaningful activation constraints beyond general user phrasing. In an agent setting, this can cause over-triggering of the vision skill on ambiguous or routine requests, increasing unintended access to image files or attachments and expanding the skill’s operational surface unnecessarily.
The script accepts an arbitrary URL argument and downloads multiple files directly into the user's skill directory without validating the source, pinning content, or warning that existing files may be overwritten. This creates a supply-chain and integrity risk: a mistyped, malicious, or compromised URL can silently replace the installed skill with attacker-controlled content.
The setup flow saves the API key in a local JSON config file without warning the user about credential persistence or applying any file-permission hardening. On shared systems or backups, this can lead to unintended disclosure of the credential and subsequent unauthorized API usage.
The script transmits user-supplied images and prompts to a third-party remote API, but it does not provide an explicit disclosure or confirmation at send time. In a vision skill, users may assume analysis is local; this can expose sensitive screenshots, documents, or embedded secrets to an external service without informed consent.
All user-facing prompt and expected-output examples are written only in Chinese, which can implicitly constrain the skill to a specific language or locale without stating user choice. The file does not indicate that language selection is optional or that the skill supports other languages.
All natural-language examples in the file are written in Chinese, which may imply a language-specific trigger policy without stating that other languages are supported or that Chinese-only behavior is intentional. Under the locale policy rule, forcing or implicitly constraining use to one language without opt-in can be a policy concern.
The local-install path copies files into the user's persistent skill directory and may overwrite an existing installation without confirmation or backup. While this is a lower-risk local integrity issue than the remote path, it can still cause accidental replacement of trusted files or persistence of unexpected code.
No suspicious patterns detected.