T09 · Insecure Skill Coding Practices
- Location
scripts/package_project.py:269- Finding
Unvalidated Package Name Allows Arbitrary File Writes and Template Injection
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This Android project generator is purpose-aligned, but its documented shell workflow and scaffolding script can write outside the intended project or execute unintended commands if given crafted names.
Review before installing or using this skill. It is not evidence of deliberate malware, but only use trusted app and package names, avoid copying its shell commands with raw user input, keep generated output in a dedicated folder, remove unnecessary Android network permissions, and avoid cleartext HTTP unless strictly required and scoped.
scripts/package_project.py:269Unvalidated Package Name Allows Arbitrary File Writes and Template Injection
SKILL.md:39User-Controlled Project Names Are Embedded in Shell Commands
SKILL.md:84Generated Applications May Enable Cleartext HTTP Globally
The skill instructs the agent to create, scaffold, and package full Android projects, which implies file creation and modification, but it does not declare any explicit tool scope such as permissions or allowed-tools. This creates a mismatch between documented authority and actual capability, increasing the risk of unintended file writes or broader workspace modification if the skill is auto-invoked.
The trigger text is very broad, including generic phrases like creating an app or project, which can overlap with many ordinary requests not specifically intended for this skill. Over-broad routing increases the chance the skill is invoked in inappropriate contexts, where it may begin writing files or packaging outputs the user did not explicitly request.
The skill description is written to enforce Portuguese-language behavior without any indication that this is conditioned on user preference. Forced language behavior can cause misleading responses, reduce user understanding of generated code or instructions, and increase the chance of unsafe acceptance of outputs the user cannot easily validate.
The template requires INTERNET and ACCESS_NETWORK_STATE permissions in every generated Android project even though the skill is a general Kotlin/Compose project generator, not a network-specific one. This violates least privilege and normalizes unnecessary network access, increasing privacy risk and expanding the attack surface of all generated apps if later code, libraries, or ads transmit data.
Granting network capability by default gives every generated app the ability to send and receive data without any stated functional requirement. In a code-generation skill, this is more dangerous because downstream users may trust the scaffold as minimal and safe, then unknowingly ship apps with unnecessary exfiltration capability.
The template instructs adding network permissions without any warning about privacy, data handling, or the effect on app capabilities. While this is primarily a transparency and secure-defaults problem rather than a direct exploit by itself, it increases the chance that users will generate and distribute over-privileged apps without understanding the implications.
This markdown file instructs users to store data in SharedPreferences and internal files, and to perform HTTP requests, but it does not include any warning about persistence, transmission, or potential privacy implications. Under the markdown-specific SQP-2 criteria, descriptions that omit warnings for behaviors affecting user data or privacy should be flagged.