T09 · Insecure Skill Coding Practices
- Location
scripts/selfie.js:69- Finding
Shell Command Injection Through Configurable Scene Prompts
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill mostly does what it says, but its configurable prompts can be executed through a shell, creating a real local command-injection risk.
Review this skill before installing. Do not use custom scene prompts from untrusted sources unless the shell invocation is fixed to use argument-array execution such as execFileSync or spawnSync. If you enable heartbeat sending, add explicit confirmation or rate limits and make sure the shared images directory cannot cause unintended images to be sent.
scripts/selfie.js:69Shell Command Injection Through Configurable Scene Prompts
scripts/selfie.js:81Untrusted Image Selection From a Shared Output Directory
The skill description, instructions, examples, and output documentation are entirely in Chinese, which imposes a specific language on users. The file does not offer an alternative language, opt-in, or explain that the skill is intentionally region- or language-specific.
The documentation instructs integrating the skill into a heartbeat mechanism that automatically generates images and then sends them via a messaging tool, but it does not clearly warn users that this triggers external network calls to a third-party image API and may transmit generated content onward. In an agent/automation context, silent external API use and auto-sending behavior can surprise operators, create privacy/compliance issues, and enable unintended data egress or cost-incurring actions.
This JSON manifest contains multiple user-facing natural-language fields such as scene names, prompts, and a note, all exclusively in Chinese. Under the policy, forcing a specific language without offering choice or documenting a justified locale constraint is a natural-language policy violation.
The file's user-facing description and operational messaging are written entirely in Chinese, indicating a fixed language choice with no sign of user selection or opt-in. The stated policy for this audit flags language or locale constraints when the skill forces a specific language without offering choice.
The script builds a shell command string and executes it with execSync, passing prompt text derived from a JSON config into the command line. Because shell metacharacters inside the prompt can break out of the quoted argument, a modified or malicious scenes.json entry could trigger arbitrary command execution under the current user account.
The natural-language instructions and usage guidance are entirely in Chinese, which can impose a fixed language/locale on users without opt-in. The file does not mention that the skill is intended only for Chinese-speaking users or provide an alternative language option.
The natural-language description is entirely in Chinese and presents the skill as Chinese-only, with no indication that users may choose another language or that the locale restriction is required for a region-specific purpose. This can violate organizational language/locale policy when skills are expected to avoid forcing a specific language without opt-in.