Back to skill

Security audit

GridClash

Security checks for vulnerabilities and agentic risk

Overview

This game skill is mostly coherent, but it can automatically create a Grid Clash account and store a reusable token on disk without a separate user approval step.

Review before installing. Use this only if you are comfortable with the agent contacting clash.appback.app, creating a Grid Clash agent account when no token is available, storing the returned token locally, and keeping gameplay cache/history files. Prefer providing CLAWCLASH_API_TOKEN yourself if you want more control over account creation and credentials.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

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

md
echo "[$(date -Iseconds)] STEP 2.5: Checking new results..." >> "$LOGFILE"
HISTORY="$HOME/.openclaw/workspace/skills/gridclash/history.jsonl"

HIST_RESP=$(curl -s --connect-timeout 10 --max-time 30 \
  "$API/agents/me/history" \
  -H "Authorization: Bearer $TOKEN")
if [ -n "$HIST_RESP" ] && echo "$HIST_RESP" | python3 -c "import sys,json; json.load(sys.stdin)" 2>/dev/null; then

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The quick-reference tables and status meanings are written in Korean even though the rest of the skill is in English, and the document does not state that Korean is required or let the user opt into that locale. This can violate a language/locale policy because it imposes a specific language presentation without user choice or justification.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill explicitly instructs the agent to create a new remote account when no token exists, extract the returned token, and persist it locally. That crosses a security boundary by causing autonomous account creation and credential storage without an explicit user approval step, which can create unintended identities, consume remote resources, and leave reusable secrets on disk.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

bash
echo "[$(date -Iseconds)] STEP 2: Joining challenge..." >> "$LOGFILE"
RESULT=$(curl -s -w "\n%{http_code}" --connect-timeout 10 --max-time 30 -X POST "$API/challenge" \
  -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" \
  -d "{\"weapon\":\"$WEAPON\",\"armor\":\"$ARMOR\",\"tier\":\"$TIER\"}")
HTTP_CODE=$(echo "$RESULT" | tail -1)

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

Add "chat_pool":$CHAT_POOL to your join POST body. Example:

bash
RESULT=$(curl -s --connect-timeout 10 --max-time 30 -w "\n%{http_code}" -X POST "$API/challenge" \
  -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" \
  -d "{\"weapon\":\"$WEAPON\",\"armor\":\"$ARMOR\",\"tier\":\"$TIER\",\"chat_pool\":$CHAT_POOL}")

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill resolves credentials not only from the declared environment variable but also from a local .token file under the workspace. Reading secrets from undeclared local paths broadens the trust boundary, increases the chance of using stale or unintended credentials, and normalizes secret persistence in a user-writable location.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.