T09 · Insecure Skill Coding Practices
- Location
scripts/game-engine.mjs:87- Finding
Path Traversal in Game and Ranking File Storage
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This multiplayer game skill is mostly purpose-aligned, but it needs Review because its instructions and engine expose avoidable command and file-write risks around player-controlled input.
Review before installing. Use this only in groups that expect a Chinese-language game host, and do not run its documented command templates by interpolating raw chat text through a shell. Prefer a safe argv-array or stdin wrapper, validate group IDs, and periodically clear scripts/data if retained player/game data is not wanted.
scripts/game-engine.mjs:87Path Traversal in Game and Ranking File Storage
SKILL.md:53Shell Command Injection Through Documented Argument Interpolation
The trigger list includes very broad phrases such as '猜猜猜' and 'identity guess', which can match ordinary conversation and cause the skill to activate unintentionally. Because this skill initiates multiplayer game orchestration and private identity distribution, accidental invocation can disrupt chats, confuse users, and lead to unintended DM sends or state creation.
The skill content mandates Chinese-language hosting behavior rather than adapting to the user's language, which can override user expectations and reduce transparency or informed consent for participants. In a group game context, forcing a language without opt-in can mislead users about what is happening, especially when the skill also performs private identity messaging and multi-step coordination.
The script's user-facing documentation and command responses are entirely in Chinese, with no indication that the language is optional or that the tool is intentionally limited to a Chinese-speaking audience. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation.
This code persistently stores game and ranking information as JSON files, and the stored objects include player IDs, names, clues, guesses, scores, and timestamps. Although file storage is mentioned in comments, there is no runtime confirmation, user-facing disclosure, or help text warning that personal/game data will be retained on disk.