T09 · Insecure Skill Coding Practices
- Location
scripts/campaign_lineage.py:256- Finding
Server-Controlled Upload URL Lacks Destination Allowlisting
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly does what it says, but it uploads user-selected campaign assets and stores an API key while leaving important network and credential-handling boundaries under-specified.
Review this skill before installing if your campaign or product images are confidential. Use --preview first, avoid entering real API keys directly in shell commands, prefer a restricted key, and only run live generation if you trust AI Hive and any storage domains it returns for uploads and downloads.
scripts/campaign_lineage.py:256Server-Controlled Upload URL Lacks Destination Allowlisting
SKILL.md:157API Key Exposure Through Command-Line Arguments
SKILL.md:157Unpinned Third-Party Dependency Installation
The skill instructs users to run a Python script that uses shell execution, reads local files, writes auth state, and performs network requests, but it does not declare any explicit tool scope or permissions. This creates an avoidable over-privilege and transparency problem: an agent or user may invoke the skill without a clear boundary on what filesystem paths, environment data, or network destinations are intended, increasing the chance of misuse or unsafe execution assumptions.
The invocation text is extremely broad, covering generic marketing-image creation and many platforms and workflow tools, so the skill may be triggered in situations beyond its narrowly documented lineage use case. Over-broad routing can cause unintended execution of a networked/scripted skill when the user only asked for general advice, increasing exposure to unnecessary tool use and confused-deputy behavior.
The module docstring is written entirely in Chinese, and all user-facing CLI help and error/output strings throughout the script are also Chinese-only. This creates a locale/language constraint with no opt-in or alternative, which matches the policy category for forcing a specific language without user choice.
The natural-language description is partly in Chinese and partly in English, but the file does not state that the user can choose their preferred language or that the mixed-language behavior is required for a specific region. This can violate language/locale policy by implicitly forcing a language presentation without opt-in.
The example API key placeholder uses Chinese text ('请替换为你的APIKey'), which imposes a specific language in user-facing configuration content. This file does not offer an alternative locale or explain that the skill is intended only for Chinese-speaking users or a China-specific deployment.
No suspicious patterns detected.