Back to skill

Security audit

Claw Go

Security checks for vulnerabilities and agentic risk

Overview

This text-only game skill is mostly coherent, but it asks to reuse broad long-term memory and infer user profile details without clear consent or scoping.

Review this skill before installing if you do not want a game to use general long-term memory or infer personal preferences from past chats. It appears text-only and does not run code or publish externally, but users should prefer a version that limits personalization to explicit Claw Go state and gives clear opt-in, correction, and deletion controls for saved preferences.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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)

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
references/game-design.md:45
Finding
Overbroad Long-Term Memory Access and User Profiling<![CDATA[ ## Vulnerability Details **File Location**: `references/game-design.md:45-55` **Vulnerability Type**: `T05: Unauthorized Access and Privilege Escalation` **Risk Level**: Medium ### Vulnerable Code ```text Before scoring destinations, generate them dynamically from memory: 1. Read long-term memory and recent chat 2. Infer user profile: - home region or cultural context - `user_language` (`zh` | `en` | `mixed`) - favorite topics - disliked topics - travel pace preference - recent curiosity spikes 3. Pick a chapter that best matches the profile now 4. Ask the model to propose `3-6` candidate destinations for that chapter 5. Score the generated pool and pick the best option ``` Related instructions reinforce this behavior at `references/game-design.md:127` and `assets/output-templates.md:20,121` by directing the Agent to select content from user memory and identity information. ### Technical Analysis The Skill requires the Agent to inspect long-term memory and recent conversation history, then infer a profile containing the user's home region, cultural context, interests, dislikes, behavioral preferences, and identity-related information. The instruction does not restrict access to data created by this Skill or to information explicitly supplied for the current game session. This violates least-privilege principles because a fictional travel game only needs limited gameplay state and voluntarily provided preferences. If the host exposes cross-session or cross-skill memory, the Skill can consume information originating from unrelated interactions without a purpose-specific consent boundary. The issue does not constitute memory poisoning because the reviewed instructions do not write attacker-controlled rules into persistent memory. No evidence was found that the collected profile is transmitted externally, used to obtain operating-system privileges, or exposed through command execution. ### Attack Path 1. A user explicitly activ ...[truncated 1661 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace unrestricted long-term-memory access with Skill-scoped state containing only necessary gameplay fields, such as current chapter, bond level, language, and destinations already visited. 2. Use preferences only when the user explicitly provides them during an active Claw Go session or affirmatively opts into persistent personalization. 3. Define an allowlist of permitted fields and prohibit reading unrelated memories, identity attributes, private conversations, credentials, health information, financial information, or precise location data. 4. Avoid inferring home region, cultural context, or identity unless the user directly supplies that information for a clearly stated gameplay purpose. 5. Add a consent prompt before enabling cross-session personalization and provide controls to inspect, correct, disable, and delete stored game preferences. 6. Apply retention limits and namespace all persistent state under the Skill so that other conversation history is not queried. 7. Use neutral defaults when Skill-specific memory is unavailable instead of searching broader conversation history. 8. Revise the instruction to a least-privilege form, for example: ```text Use only preferences explicitly provided in the active Claw Go session or stored in the user-approved Claw Go state. Do not inspect unrelated conversations or general long-term memory. If no approved preferences exist, select a neutral starter chapter and ask one optional preference question. ``` ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (7)

Natural-Language Policy Violations

Medium
Confidence
81% confidence
Finding
The manifest uses natural-language keys such as "得意虾" and "震惊虾" as fixed expression labels, which imposes a specific language in the skill data without any visible opt-in or documented locale limitation. Under the language/locale policy, forcing one language without user choice or justification can be a policy concern.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
The premium upsell and fallback templates are written only in Chinese, while the file otherwise indicates language should depend on `user_language`. This can lead to Chinese-language output being used by default for users who have not explicitly opted into that locale.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The contract defines optional memory tag syncing tied to a user_id and owner interactions, but provides no privacy notice, consent model, retention guidance, or limits on what tags may be stored. In a consumer game skill, this can lead to silent collection of preference/profile data and misuse or over-collection of behavioral information.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
The examples for image generation and TTS use Chinese strings for user-facing content, but the document does not say this is locale-specific or optional. This can indicate a language policy issue because the skill appears to force a specific language without documenting user choice or a justified regional constraint.

Natural-Language Policy Violations

Medium
Confidence
82% confidence
Finding
Line L130 specifies an English mapping only when `user_language=en`, while the surrounding design centers Chinese labels and examples as the default. This creates a language policy concern because it constrains output language based on inferred state rather than explicit user choice, and does not offer other locale options or opt-in behavior.

Natural-Language Policy Violations

Medium
Confidence
90% confidence
Finding
Inferring and persisting `user_language` from recent messages means the system derives and stores user attributes without explicit consent or confirmation. While low severity in this game context, it can still create privacy issues, incorrect profiling, and unwanted retention of inferred personal preferences, especially for multilingual users or shared accounts.

Natural-Language Policy Violations

Low
Confidence
93% confidence
Finding
The instruction says to 'match the user's language when clear, otherwise default to Chinese.' This creates a language-policy issue because it forces a specific language in ambiguous cases rather than asking the user to choose or offering options.

Static analysis

No suspicious patterns detected.