Back to skill

Security audit

aigame

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent online game skill, but it should be reviewed because it automatically creates a remote game account and sends tokens and gameplay data over unencrypted HTTP to a raw IP address.

Install only if you are comfortable with the agent contacting the listed remote game server, creating a throwaway account, and sending gameplay data over unencrypted HTTP. Do not use personal nicknames or sensitive text with this skill, and prefer an updated version that uses HTTPS, narrower triggers, and explicit confirmation before registration.

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
SKILL.md:22
Finding

Authentication and Gameplay Data Transmitted over Unencrypted HTTP

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 22-123
Vulnerability Type: Plaintext transmission of sensitive authentication and session data
Risk Level: Medium

The Skill directs the Agent to communicate with a hard-coded bare IP address exclusively over unencrypted HTTP. The affected commands include account registration, session creation, gameplay actions, session termination, score retrieval, and leaderboard access.

Representative vulnerable code from the registration and authenticated session flows:

bash
API_BASE=http://111.231.112.127:9000
bash
NICKNAME="玩家昵称"
TS=$(date +%s)
RESULT=$(curl -s -X POST "http://111.231.112.127:9000/v1/auth/register" \
  -H "Content-Type: application/json" \
  -d "{\"email\":\"player_${TS}@aw.ai\",\"password\":\"aw_${TS}\",\"nickname\":\"${NICKNAME}\"}")
echo "$RESULT"
bash
TOKEN="上一步获取的player_token"
RESULT=$(curl -s -X POST "http://111.231.112.127:9000/v1/session/start" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"world_id":"wld_01KNNVGG1PXE6GPHQ0CNMS4WJ1","model_id":"openclaw","client_version":"5.0.0"}')
echo "$RESULT"
bash
RESULT=$(curl -s -X POST "http://111.231.112.127:9000/v1/session/action" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d "{\"session_id\":\"$SESSION_ID\",\"turn\":$TURN,\"action\":\"$ACTION\",\"payload\":$PAYLOAD,\"ts_ns\":\"$(date +%s)000000000\",\"prev_hash\":\"\",\"entry_hash\":\"h_$TURN\"}")
echo "$RESULT"
bash
curl -s -X POST "http://111.231.112.127:9000/v1/session/end" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d "{\"session_id\":\"$SESSION_ID\",\"end_reason\":\"victory\",\"final_turn\":$TURN,\"chain_root_hash\":\"cli\"}"

curl -s "http://111.231.112.127:9000/v1/session/$SESSION_ID/score" \
  -H "Authorization: Bearer $TOKEN"

curl -s "http://111.
...[truncated 2752 chars]
Remediation
View remediation

Remediation Suggestions

  1. Place the API behind HTTPS on a controlled domain and replace every http://111.231.112.127:9000 reference with an https:// URL.
  2. Configure a certificate issued for the API hostname by a trusted certificate authority. Do not disable certificate verification with options such as curl -k.
  3. Redirect or reject all plaintext HTTP requests so credentials cannot accidentally be transmitted through the legacy endpoint.
  4. Use short-lived, narrowly scoped bearer tokens and revoke them when the session ends. Implement rotation and replay protections where feasible.
  5. Avoid returning credentials or tokens in logs and command output. Parse only the required response fields and prevent sensitive values from being exposed in Agent narration.
  6. Minimize transmitted user-controlled data and explicitly disclose what nickname, dialogue, memory, and gameplay information is sent to the remote service.
  7. Add authenticated response-integrity protections at the application level if requests pass through infrastructure where TLS terminates before reaching the game service.
  8. Document token lifetime, revocation behavior, server ownership, data retention, and privacy controls.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (10)

Tp2

High
Category
MCP Tool Poisoning
Confidence
85% confidence
Finding

Mixing characters from multiple Unicode scripts in a single identifier is a common technique to create visually ambiguous tool names.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The skill directs the agent to register, authenticate, and send bearer tokens and session secrets over plain HTTP to a raw IP address. Without TLS, any party on the network path can intercept or modify credentials, session identifiers, and game actions, enabling session hijacking or tampering.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The trigger set includes very broad phrases such as '游戏', '开始游戏', '玩游戏', and 'play game', which can easily match ordinary user speech and invoke the skill unexpectedly. In this skill's context, accidental activation is more dangerous because the README says the AI will automatically register an account and start API-driven gameplay, causing unintended external actions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The README states that the AI will '自动注册账号、进入关卡、开始闯关' but does not present this as a warning, consent boundary, or external side effect in the skill description. Hidden account creation and API-driven actions are risky because users may invoke the skill without understanding that it will interact with third-party services, create accounts, and transmit data automatically.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The trigger list includes broad, common phrases such as '开始游戏', '玩游戏', and generic game-related terms, which can cause the skill to activate unintentionally during unrelated conversations. In an agent environment, accidental invocation is risky because this skill then instructs the agent to perform outbound network requests and handle tokens/session data.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
92% confidence
Finding

This command transmits user-provided nickname data and newly generated credentials to an external server. External transmission is expected for an online game, but here it is combined with insecure HTTP transport and registration on a third-party host, creating privacy and interception risks beyond ordinary gameplay.

Content

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

bash
NICKNAME="玩家昵称"
TS=$(date +%s)
RESULT=$(curl -s -X POST "http://111.231.112.127:9000/v1/auth/register" \
  -H "Content-Type: application/json" \
  -d "{\"email\":\"player_${TS}@aw.ai\",\"password\":\"aw_${TS}\",\"nickname\":\"${NICKNAME}\"}")
echo "$RESULT"

External Transmission

Medium
Category
Data Exfiltration
Confidence
90% confidence
Finding

This command sends an authorization token and session metadata to an external server to end the session. While outbound communication is inherent to the game, sending authenticated requests over plain HTTP exposes the token to interception and unauthorized reuse.

Content

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

结束游戏

bash
curl -s -X POST "http://111.231.112.127:9000/v1/session/end" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d "{\"session_id\":\"$SESSION_ID\",\"end_reason\":\"victory\",\"final_turn\":$TURN,\"chain_root_hash\":\"cli\"}"

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The natural-language instructions and invocation phrase are entirely in Chinese, and the README does not offer any language choice or indicate that the skill is intentionally limited to a Chinese-speaking audience. This can violate language/locale policy when a skill imposes a specific language without user opt-in.

Content

No source excerpt is available for this finding.

Overly Broad Trigger

Low
Category
Trigger Abuse
Confidence
89% confidence
Finding

The trigger '游戏' is extremely generic and likely to appear in many benign conversations about games. Because invoking this skill can lead to automated external requests, such a broad trigger increases the chance of unintended activation and downstream risky behavior.

Content

No source excerpt is available for this finding.

Overly Broad Trigger

Low
Category
Trigger Abuse
Confidence
84% confidence
Finding

The trigger '试炼' is short and context-agnostic, making accidental activation plausible in unrelated conversations. In this skill, unintended invocation matters more because the skill is not purely local and may prompt networked actions against an external service.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.