Back to skill

Security audit

Agent Arcade Games

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward guide for using a remote game service; its network use is expected and visible, but users should avoid submitting sensitive names, prompts, code, or strategy data.

Install only if you are comfortable sending agent names, descriptions, game choices, moves, code challenge submissions, and play tokens to the Agent Arcade service. Use non-sensitive agent identifiers, do not submit proprietary code or secrets, and treat play URLs or tokens as bearer secrets.

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
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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 (11)

External Transmission

Medium
Category
Data Exfiltration
Confidence
92% confidence
Finding

The skill depends on curl and documents a remote homepage/base URL, establishing that it is designed to communicate with an external service. External transmission is expected for this skill's purpose, but it still presents a real data-exposure risk because users may provide agent metadata and gameplay content to a third-party endpoint without adequate warning or trust validation.

Content

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

md
openclaw:
    requires:
      bins:
        - curl
        - jq
    emoji: "🎮"
    homepage: https://agent-arcade-production.up.railway.app

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill repeatedly instructs users to register agents, join matchmaking, submit moves, and retrieve game state from a third-party service, but it never clearly discloses that agent identifiers, gameplay content, code submissions, and possibly strategy data are transmitted externally. This is a genuine transparency and privacy issue because users may unknowingly send sensitive or proprietary data to a remote service, especially in modes like Code Challenge, Negotiation, and Reasoning.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
94% confidence
Finding

This matchmaking call transmits the agent identifier and game type to the external Agent Arcade service. In context this is intentional and required for functionality, but it remains a true external-transmission finding because it sends user-controlled data off-platform and could expose usage patterns or identities.

Content

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

2. Join Matchmaking

bash
curl -s -X POST "$BASE_URL/api/matchmaking/join" \
  -H "Content-Type: application/json" \
  -d '{"agent_id": YOUR_AGENT_ID, "type": "chess"}' | jq .

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

The move-submission endpoint sends gameplay actions to a remote server. That is core to the product, but it is still sensitive because moves, prompts, or structured actions in games like Trading, Negotiation, and Code Challenge may reveal strategies or proprietary content to the third party.

Content

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

4. Make a Move

bash
curl -s -X POST "$BASE_URL/api/play/YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"move": "e2e4"}' | jq .

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

Registration sends agent name and optional description to the external platform. This is not inherently malicious, but it is a real exposure point because users may include identifying, proprietary, or sensitive descriptive text without understanding it will be stored by a third party.

Content

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

Register agent:

bash
curl -s -X POST "$BASE_URL/api/agents/register" \
  -H "Content-Type: application/json" \
  -d '{"name": "my-agent", "description": "optional description"}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
94% confidence
Finding

This queue-join example again sends agent identifiers and game preferences externally. The context makes the transmission expected rather than suspicious, but the lack of accompanying disclosure means it still poses a privacy and governance risk.

Content

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

Join queue (auto-matches with waiting opponent):

bash
curl -s -X POST "$BASE_URL/api/matchmaking/join" \
  -H "Content-Type: application/json" \
  -d '{"agent_id": 1, "type": "chess"}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

Direct game creation transmits player identifiers and selected game type to the remote service. This can expose relationship data between agents and operational behavior, and there is no warning about the third-party nature of the destination or downstream retention.

Content

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

Create a game between two specific agents (skip matchmaking):

bash
curl -s -X POST "$BASE_URL/api/games/create" \
  -H "Content-Type: application/json" \
  -d '{"type": "chess", "player1_id": 1, "player2_id": 2}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

This gameplay POST sends move data to the tokenized play endpoint. Although necessary for operation, the token itself is sensitive and the skill does not warn users to protect it; anyone with the token may potentially read or act in the game session.

Content

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

Make move:

bash
curl -s -X POST "$BASE_URL/api/play/YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"move": "e2e4"}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

The full gameplay loop example includes external registration and operational use of a third-party service. The risk is amplified by showing end-to-end automation without any accompanying warning about data disclosure, storage, or token sensitivity.

Content

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

md
BASE_URL="https://agent-arcade-production.up.railway.app"

# Register
AGENT=$(curl -s -X POST "$BASE_URL/api/agents/register" \
  -H "Content-Type: application/json" \
  -d '{"name": "my-chess-bot"}')
AGENT_ID=$(echo $AGENT | jq -r '.id')

External Transmission

Medium
Category
Data Exfiltration
Confidence
94% confidence
Finding

This matchmaking request is another concrete external transmission point in the automation example. It is contextually legitimate, but still a true finding because it enables repeated automated sending of agent metadata to a remote platform with no explicit privacy or consent language.

Content

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

md
AGENT_ID=$(echo $AGENT | jq -r '.id')

# Join matchmaking
MATCH=$(curl -s -X POST "$BASE_URL/api/matchmaking/join" \
  -H "Content-Type: application/json" \
  -d "{\"agent_id\": $AGENT_ID, \"type\": \"chess\"}")

External Transmission

Medium
Category
Data Exfiltration
Confidence
96% confidence
Finding

This example posts moves to a play URL derived from a bearer token, which makes the transmission sensitive beyond normal gameplay data. In addition to external disclosure, accidental logging or sharing of the token could allow unauthorized access to game state or move submission.

Content

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

md
echo $STATE | jq '{your_turn, your_color, move_count: .move_history | length}'

# Make a move when it's your turn
RESULT=$(curl -s -X POST "$BASE_URL$PLAY_URL" \
  -H "Content-Type: application/json" \
  -d '{"move": "e2e4"}')
echo $RESULT | jq '{valid, game_over, your_turn}'