T09 · Insecure Skill Coding Practices
- Location
SKILL.md:60- Finding
Shell Command Injection Through Untrusted Song Metadata
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This songwriting skill is mostly aligned with its purpose, but it automatically runs local code and sends generated content to an external API using unsafe command and temporary-file handling.
Review before installing. Use this only in an environment where automatic local Node.js execution and submission of generated lyrics to kie.ai are acceptable. The workflow should be changed to require confirmation before network submission, avoid shell interpolation, use a private temporary file or stdin, and either document or remove the extra audio URL modes.
SKILL.md:60Shell Command Injection Through Untrusted Song Metadata
SKILL.md:60Predictable Shared Temporary File Permits Symlink and Content-Tampering Attacks
The skill advertises a simple theme-to-song pipeline, but the documented/observed behavior depends on hidden prerequisites and broader generation modes not disclosed in the description. This mismatch is dangerous because it can mislead users and reviewers into granting a skill more capability than they intended, including external API use and generic media-processing flows.
The skill explicitly writes a temporary file and runs a local Node.js script automatically, while also instructing that no user confirmation should be requested. Automatic filesystem and process actions without warning or consent are dangerous because they convert untrusted prompt content into side effects on the host and can trigger external network operations implicitly.
The skill references an environment variable API key and later directs local script execution, but the manifest does not declare any tool scope or permissions. That creates an implicit capability boundary bypass: reviewers and users cannot clearly see that the skill needs credential and code-execution access before activation.
The manifest claims the user only provides a theme, but actual operation also relies on preconfigured credentials and local script execution. That hidden dependency model undermines informed consent and can cause the agent to perform privileged actions the user did not reasonably expect from the description.
The description says the user only needs to provide a theme for the skill to run fully automatically, but it does not define specific trigger phrases, invocation boundaries, or exclusion conditions. In a manifest/markdown context, this is broad enough to overlap with ordinary conversation about song ideas and could cause unintended invocation.
Requiring KIE_API_KEY means the skill depends on credentialed external service access, but that capability is not transparently disclosed in the manifest behavior. Hidden credential requirements increase the risk of accidental secret exposure, unauthorized network transmission, and unsafe deployment assumptions.
The skill requires an API credential and implies data will be sent to an external service, but it does not present a user-facing warning about secret usage or outbound transmission. This is risky because users may unknowingly route generated lyrics or metadata to third parties under a hidden trust model.
The skill instructs spawning subagents and then executing a local Node.js script, which materially expands the attack surface beyond basic text generation. Chained agent execution plus local process invocation can propagate untrusted content across stages and trigger unintended code or network actions without an explicit trust boundary.
The instruction explicitly requires writing a Chinese pop song, which imposes a language constraint on output. There is no opt-in, fallback, or explanation that the skill is intentionally limited to Chinese-language use, so this conflicts with the policy against forced language choice without user consent.
The manifest describes a narrowly scoped skill that takes a user theme, runs an internal lyric-writing pipeline automatically, and returns a Suno试听链接 without interruption. This script also exposes separate modes to extend existing audio, generate covers from an audio URL, and upload-based continuation, which are materially different behaviors not described in that pipeline.
The request helper transmits prompts, lyrics, titles, tags, and potentially external media references to api.kie.ai without any explicit notice, consent prompt, or redaction step. For a songwriting skill that may handle user-authored creative work or private media URLs, this creates a real privacy and data-handling risk because sensitive content is automatically sent off-box to a third party.
The script accepts arbitrary external audio URLs and forwards them to a third-party generation API, enabling user-supplied remote content ingestion outside the stated theme-to-song workflow. In skill context, this broadens the trust boundary and can lead to unintended exfiltration of private media links, processing of unauthorized third-party content, or misuse of the skill as a relay for unreviewed external resources.
The usage examples specify inputs such as "歌名", "歌词+元标签", and "续写歌词", which signals a Chinese-only interaction pattern. There is no accompanying explanation that the tool is region-specific or that other languages are also supported, so the file presents a language/locale preference without opt-in.
No suspicious patterns detected.