Back to skill

Security audit

Kuuila Game

Security checks for vulnerabilities and agentic risk

Overview

This is a Chinese-language interactive game skill with some quality issues, but I found no hidden credential access, exfiltration, destructive behavior, or system persistence.

Install this only if you want a Chinese-language game framework with bundled sample game state and Catholic saint/feast source text. Treat the OpenClaw references in the stale publishing guide as unverified provenance, and fix the multiplayer input validation before using it in a shared or hosted game service.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
src/multiplayer-engine.js:141
Finding

Malformed Object Input Causes Unhandled Exception in Multiplayer Command Validation

Content
View full analysis
Remediation
View remediation
normalizedInput === cmd.toLowerCase() || normalizedInput.startsWith(cmd.toLowerCase()) ); } ``` 3. Normalize once and pass only the normalized command to both validation and execution. This prevents inconsistent interpretation between security checks and command handling. 4. Remove caller-controlled identity substitution: ```javascript return this.multiplayerGame.processChoice(playerId, normalized.choice); ``` Do not use `input.playerId` for authorization or game actions. The trusted integration layer must supply the authenticated player identifier separately. 5. Add a public exception boundary so malformed input produces a controlled error instead of propagating: ```javascript processInput(input, playerId) { try { return games.safeHandleInput(input, playerId); } catch (error) { return { error: 'invalid_input', message: 'The supplied command is invalid.' }; } } ``` 6. Add automated tests covering: - String input. - Valid object input. ...[truncated 297 chars]
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (42)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 218)May include surrounding context.

md
**数据位置**: `data/endless/saint_details.json`

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

该 markdown 文件适用 SQP-1。L088 的“开始文字冒险游戏”作为使用示例,看起来像可能的调用短语,但文档没有说明这是唯一触发语、是否需要特定上下文,或哪些相似日常表达不会触发。缺少边界说明会让该技能在普通聊天中更容易发生歧义触发。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This JSON content includes prescriptive natural-language instructions such as “我们若向教外人们讲这端道理时,一定先讲耶稣,不要先讲玛利亚,” which directs how users should speak and frame responses in a specific way. Because the file provides fixed Chinese-language religious guidance without offering any language or locale choice, it can violate the rule against forced language/locale behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The display name and description are written entirely in Chinese, which signals a language-specific presentation but does not document that the skill is intended only for Chinese-speaking users or offer any user language choice. Under the policy, forcing a specific language without opt-in or documented locale justification is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

This JSON file stores all visible character and world-state content exclusively in Chinese, with no indication that language selection is optional or that the skill is intentionally limited to a Chinese-speaking context. Under the policy, a fixed language/locale without user opt-in can be a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The file’s user-facing natural language strings, comments, and gameplay text are exclusively in Chinese, which can force a specific language on users without opt-in. The policy allows locale constraints when clearly justified, but this file does not indicate that the skill is intentionally region-specific or that users may choose another language.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This code's natural-language content is written entirely in Chinese, including the top-level description and user-facing battle messages, with no indication that language is configurable or user-selected. That creates a locale-policy concern because the skill effectively enforces a specific language for anyone consuming its logs or returned messages.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This JavaScript file presents its functionality and user-facing messages entirely in Chinese, including the main module description and later return messages. Under the policy, forcing a specific language without user opt-in or justification is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This JavaScript file includes user-facing natural-language content such as comments, skill names, descriptions, backgrounds, and summaries exclusively in Chinese. Under the language/locale policy rule, forcing a specific language without user opt-in or a documented regional justification is a policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This JavaScript file contains user-facing messages, hints, and status text entirely in Chinese, such as goal-setting confirmations, difficulty suggestions, and flow-state descriptions. Because the file does not provide any language/locale opt-in or indicate that the skill is intentionally region-specific, it creates a language-policy issue by implicitly forcing one locale on all users.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The method is documented as '发放奖励' (issue/grant reward), which implies the reward is actually applied. However, _giveReward only emits a reward:given event and returns the reward object; it never calls Reward.apply or otherwise mutates any recipient state, so the implementation contradicts the documented behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file mixes English identifiers with Chinese comments and user-visible output such as status and error messages, but provides no opt-in, language selection, or justification that the skill is intended only for Chinese-speaking users. This creates a natural-language locale policy concern because the skill effectively imposes a specific language on users.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

User-facing messages and command phrases are hardcoded in Chinese, including required invocation phrases such as "关联私聊", "绑定私聊", and "添加玩家 [名字]". This imposes a specific language/locale on users without any opt-in or documented justification, which matches the natural-language policy violation criteria.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The file’s natural-language comments, labels, messages, and gameplay text are written exclusively in Chinese, and user-facing strings throughout the implementation also assume Chinese output. Under the policy, forcing a specific language without opt-in can be a locale/language policy violation when no user choice or region-specific justification is provided.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The code allows any player to place a trap on a tile without verifying that they possess the required item card or consuming it afterward, despite the comment stating that item consumption is required. This creates a game integrity flaw: players can generate unlimited traps for free, bypassing resource constraints and potentially causing denial of fair play or abuse of downstream logic that assumes traps are scarce.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

This code file contains user-facing messages, command keywords, and descriptive text predominantly in Chinese, including required command inputs such as '退出游戏' and error/status messages in Chinese. Because there is no indication that users can opt into another language or that the skill is intentionally restricted to a Chinese-only audience, this appears to violate the language/locale policy for natural-language behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The file’s natural-language interface is consistently hard-coded in Chinese, including the title, comments, command phrases, and returned user messages. Because there is no user opt-in or documented region-specific justification, this creates a language/locale policy issue under the stated rule.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This JavaScript file embeds user-facing natural-language game text entirely in Chinese, beginning with the file header and continuing throughout prompts and status messages. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is explicitly justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The file’s natural-language description and all user-facing messages are written exclusively in Chinese, including the gameplay instructions. Because the skill does not offer a language/locale choice or explain that it is intentionally region-specific, it may violate language/locale policy requirements.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The file’s natural-language descriptions and generated content are entirely in Chinese, starting with the header and continuing throughout all user-facing strings. There is no indication that the skill supports user language selection or that it is intentionally limited to a Chinese-only regional use case, which can violate language/locale policy requirements.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This JavaScript file uses Chinese for its primary documentation and many user-facing return messages, such as the class header and later status/error text, but provides no indication that Chinese is optional or that the skill is intentionally region-specific. That creates a natural-language locale policy issue because the skill effectively forces one language without user opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file’s natural-language descriptions, comments, and generated dialogue strings consistently force Chinese output and instructions. Under the language/locale policy, this is a violation unless the skill provides user opt-in or clearly documents that it is intentionally region-specific.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This code file contains user-facing descriptions, messages, and labels in Chinese only, indicating an implicit language restriction. The policy requires flagging language or locale constraints when the skill forces a specific language without offering the user a choice or documenting opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This JavaScript file presents its top-level skill description entirely in Chinese, including the module name and supported themes, with no indication that users can select another language. Because SQP-3 applies to all file types and covers language/locale policy violations, this is a natural-language policy issue when the skill does not offer language choice or document a justified locale restriction.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file’s natural-language documentation and labels are written exclusively in Chinese, beginning with the title and description. Under the policy rule for language/locale, this constitutes a forced language constraint because the skill does not indicate any user opt-in or alternative language support.

Content

No source excerpt is available for this finding.