Back to skill

Security audit

Clawarcade

Security checks for vulnerabilities and agentic risk

Overview

The skill can play ClawArcade games, but it also ships under-disclosed admin, payout, credential, and backend code with exposed secrets and unsafe credential handling.

Review this package carefully before installing or running it. Do not provide a Moltbook API key or wallet private key until the publisher documents the exact credential flow, removes committed credentials and admin keys, patches vulnerable dependencies, and fixes the backend authentication and SQL/password/token-generation issues. Any exposed bot, admin, JWT, server, or wallet credentials should be revoked and rotated.

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

T05 · Unauthorized Access and Privilege Escalation

Error
Location
agent-client/register-bot.js:30
Finding

Third-Party Moltbook API Credential Transmitted to a Project-Controlled Service

Content
View full analysis
{ const data = JSON.stringify({ botName, operatorName, moltbookApiKey }); const url = new URL(`${API_BASE}/api/auth/register-bot`); const options = { hostname: url.hostname, port: 443, path: url.pathname, method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(data), }, }; const req = https.request(options, (res) => { let body = ''; res.on('data', (chunk) => body += chunk); res.on('end', () => { try { resolve(JSON.parse(body)); } catch (e) { reject(new Error(`Invalid response: ${body}`)); } }); }); req.on('error', reject); req.write(data); req.end(); }); } ``` ### Technical Analysis The registration client accepts a reusable Moltbook API key and serializes the full credential into a request sent to the project-controlled ClawArcade API. The credential is therefore disclosed to infrastructure outside Moltbook's trust boundary. This behavior is not necessary for the current registration implementation. The corresponding legacy endpoint states that it no longer requires Moltbook API keys and directs users to a post-based challenge flow in `api-worker/src/index.js:466-479`. A challenge-response process can prove account control without granting ClawArcade possession of a reusable third-party bearer credential. The script also asks users to provide the key as a command-line argument. Command-line arguments may be exposed through shell history, process inspection, terminal logs, CI logs, or monitoring softw ...[truncated 1141 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
api-worker/wrangler.toml:12
Finding

Administrative, JWT, and Internal Server Secrets Hardcoded in the Repository

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
agent-client/config.json:1
Finding

Reusable Bot API Credential Committed to Version Control

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
api-worker/src/index.js:1262
Finding

SQL Injection in Public Tournament Status Filter

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
api-worker/src/index.js:20
Finding

Passwords Hashed with a Single Fast SHA-256 Operation and a Global Static Salt

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
api-worker/src/index.js:109
Finding

Bot Bearer Credentials Generated with Non-Cryptographic Math.random

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
agent-client/register-bot.js:151
Finding

Generated Bot Credentials Written to a Predictable Plaintext Repository File

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • 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
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (112)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

This is a clear description/behavior mismatch. The code's primary purpose is a WebSocket chess bot for ClawArcade, which partially matches the chess/multiplayer portion of the description. However, key declared capabilities are unsupported or inaccurate: there is no Snake implementation, no Moltbook integration, no mandatory API-key enforcement, and no SOL/prize-handling logic. The WebSocket multiplayer aspect is accurate, but the overall description overstates and misstates important functionality.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The description presents a game-playing skill for participating in Snake and Chess tournaments over WebSocket. The actual code chunk instead performs bot registration and credential provisioning: it posts registration data to /api/auth/register-bot and writes the resulting account data and API key to a local config file. While Moltbook API key verification is consistent with part of the description, the primary purpose of this code chunk is account registration, not playing competitive games. Key declared behaviors such as real-time multiplayer, WebSocket support, and gameplay for Snake/Chess are not implemented in the supplied code.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The code clearly implements a single-purpose Snake bot. It connects to a specific Snake WebSocket endpoint, joins a game, processes snake game state, and sends move commands. There is no Chess logic, no multi-game framework, and no Moltbook API integration. While the description mentions WebSocket multiplayer, that part is consistent, but the broader declared purpose materially overstates the functionality and authentication method. Therefore the description does not accurately represent the supplied code.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding

The description overstates and misrepresents the code’s behavior. The WebSocket multiplayer aspect is accurate, and the code does authenticate and play Snake. However, the supplied code chunk is specifically a Snake bot client only. It does not implement Chess, does not reference Moltbook at all, and does not interact with SOL, wallets, payouts, or prize distribution. These are material discrepancies in supported games, authentication mechanism, and reward model, so this should be flagged as a mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The description only presents this as a skill to play competitive games at ClawArcade with Snake and Chess tournaments and WebSocket multiplayer. The supplied code is instead a large general-purpose backend API for the platform, covering registration/login, bot verification, tournament management, leaderboards, wallet management, health checks, prize-pool querying, and even pong support. Those are materially broader capabilities than the declared purpose. Additionally, the description suggests WebSocket multiplayer support, but this worker does not implement WebSocket handling; it only provides HTTP endpoints and references external WebSocket servers. Finally, the Moltbook API-key requirement is only partially accurate: one agent-join flow requires an API key, but the bot registration flow explicitly says the old API-key requirement was removed in favor of verification by posting a code. Overall, the declared description does not accurately represent the actual code behavior.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The code substantially matches part of the description in that it provides real-time multiplayer chess over WebSockets and integrates with ClawArcade-related authentication/reporting APIs. However, the declared description claims broader functionality than the code actually provides: there is no Snake implementation at all, and the authentication mechanism is not specifically a Moltbook API verification flow but rather calls ClawArcade API validation endpoints using bearer tokens or X-API-Key headers. The code also includes additional behaviors such as spectating, matchmaking, room listing, and health endpoints. Most importantly, the declared purpose suggests a multi-game competitive prize-playing skill, while the supplied chunk is specifically a chess server. That makes the description materially inaccurate for this code chunk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The description presents a multiplayer competitive gaming skill with prize payouts, API-key-based verification, and WebSocket-backed tournaments. The supplied code does none of that. It is a standalone front-end leaderboard component: it saves top scores locally in the browser, renders leaderboard UI, shows a game-over modal, and opens a Twitter/X share URL. There is no evidence of tournament matchmaking, multiplayer communication, API authentication, prize distribution, or support specific to Snake or Chess. This is a strong description-behavior mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description presents a gameplay skill for participating in ClawArcade competitions, including Snake and Chess, with Moltbook-based agent verification and real-time multiplayer via WebSocket. The actual code is instead an administrative utility script whose sole purpose is to create a chess tournament record via the ClawArcade API. It uses a privileged hardcoded admin key and posts tournament configuration to /api/tournaments. This is a materially different primary purpose and includes an undeclared administrative capability. Several described features—Moltbook verification, Snake support, and WebSocket multiplayer—are absent from the code chunk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description presents a player-facing skill for participating in Snake and Chess tournaments with agent verification and WebSocket multiplayer. The actual code does not implement gameplay, multiplayer, or agent verification. Instead, it performs a privileged administrative action: creating a Pong tournament through an API using a hardcoded admin key. This is a materially different primary purpose and uses inconsistent resources/credentials from those declared.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description portrays a gameplay skill for participating in ClawArcade tournaments, with agent verification via Moltbook, support for Snake and Chess, and real-time multiplayer over WebSocket. The supplied code does none of that. Instead, it is an administrative tournament-creation script that calls an API with an X-Admin-Key header containing a hardcoded key, creates one Snake high-score tournament, and specifies USDC prizes on Polygon. This is a materially different primary purpose and includes an undeclared sensitive capability: privileged tournament creation using admin credentials. The absence of Moltbook verification, Chess support, and WebSocket behavior further confirms the mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The declared description presents an end-user gameplay skill focused on participating in multiplayer tournaments for prizes. The supplied code does not play games, interact with Snake or Chess logic, use WebSockets, or perform Moltbook-based verification. Instead, it is an operational deployment script for backend/database/site infrastructure and tournament setup. That is a materially different primary purpose and includes undeclared infrastructure capabilities, so this is a clear mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description says this skill lets users play competitive games on ClawArcade, specifically Snake and Chess tournaments with real-time multiplayer via WebSocket, and mentions Moltbook API key verification. The supplied code does none of the gameplay functionality: it does not launch or play Snake or Chess, does not use WebSockets, and does not participate in tournaments as a player. Instead, it is an admin-side payout tool that retrieves winners from an API, checks anti-cheat and Moltbook verification metadata, and sends USDC token transfers on Polygon from a locally controlled wallet. This is a materially different primary purpose and includes sensitive undeclared capabilities such as blockchain transfers, credential loading, admin API access, and file logging. While Moltbook verification is mentioned in both, that overlap is incidental and does not make the overall description accurate.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description is about a gaming skill with tournament play, WebSocket multiplayer, and API-key-based verification. The supplied code does none of that. Instead, it is an administrative shell utility that updates subdomain references in files under a local project directory using find, sed, and grep. This is a materially different primary purpose and involves filesystem modification capabilities not reflected in the description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The description is only partially accurate. The code clearly matches a real-time multiplayer Snake tournament server with WebSocket support and ClawArcade integration, but it does not support Chess at all, making that a material mismatch. It also does more than the description suggests by performing authentication, tournament auto-registration, leaderboard score submission, match reporting, and anti-cheat telemetry collection via external API calls. While these may support the core game service, they are undeclared capabilities touching external resources. Additionally, the description states a Moltbook API key is required for agent verification, but the implementation accepts bearer tokens or API keys and only enforces Moltbook verification for specific AI-only tournament scenarios, not universally.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description is about gameplay functionality, agent verification, and real-time multiplayer tournaments. The supplied code does not implement any game logic, SOL prize handling, API key verification, WebSocket multiplayer, Snake, or Chess features. Instead, it is a service worker concerned with PWA behavior and caching/network request interception. This is a materially different primary purpose, so the description does not accurately represent the code chunk.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
95% confidence
Finding

The document explicitly references a local private-key credential file used for prize distribution. Even though this is documentation rather than executable code, directing operators to access long-lived wallet credentials from a predictable filesystem path creates a dangerous pattern around sensitive secret handling and real-money transfers.

Content

Scanner excerpt · TOURNAMENT.md (reported line 107)May include surrounding context.

md
### Requirements
- Node.js 18+
- ethers.js v6 (`npm install ethers@6`)
- Private key at `~/.config/polymarket/credentials.json`
- Sufficient USDC balance in wallet

## Configuration

Credential Access

High
Category
Privilege Escalation
Confidence
95% confidence
Finding

The configuration section repeats the credential file location alongside a live payout wallet address and funding instructions. This compounds operational risk by normalizing direct access to signing credentials for a wallet expected to hold transferable assets, making fund theft or accidental misuse more likely if the environment is compromised.

Content

Scanner excerpt · TOURNAMENT.md (reported line 121)May include surrounding context.

md
The prize distribution wallet:
- Address: `0x4Cd0c601a3b7E6EdA932765fbB8563138C1cdd24`
- Network: Polygon
- Credentials: `~/.config/polymarket/credentials.json`

Ensure this wallet has:
- MATIC for gas fees

Known Vulnerable Dependency: ws==8.19.0 — 2 advisory(ies): CVE-2026-45736 (ws: Uninitialized memory disclosure); CVE-2026-48779 (ws: Memory exhaustion DoS from tiny fragments and data chunks)

High
Category
Supply Chain
Confidence
98% confidence
Finding

The lockfile pins the WebSocket library ws to version 8.19.0, and the supplied advisory data indicates this version is affected by an uninitialized memory disclosure and a memory-exhaustion denial of service. In this skill, ws is central to real-time multiplayer communication, so a remotely reachable flaw in WebSocket frame handling is especially relevant and could let an attacker crash the bot/client or potentially expose process memory during gameplay traffic.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: ws==8.19.0 — 2 advisory(ies): CVE-2026-45736 (ws: Uninitialized memory disclosure); CVE-2026-48779 (ws: Memory exhaustion DoS from tiny fragments and data chunks)

High
Category
Supply Chain
Confidence
80% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: defu==6.1.4 — 1 advisory(ies): CVE-2026-35209 (defu: Prototype pollution via `__proto__` key in defaults argument)

High
Category
Supply Chain
Confidence
91% confidence
Finding

The lockfile pins defu 6.1.4, which is reported as vulnerable to prototype pollution via a proto key in merge defaults. If untrusted input can reach code paths using this package, attackers may tamper with object prototypes and potentially alter application behavior, bypass logic, or trigger downstream security issues. In this skill context, the package is a transitive development dependency rather than obviously exposed runtime logic, which slightly reduces exploitability but does not negate the supply-chain risk.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: sharp==0.33.5 — 2 advisory(ies): GHSA-f88m-g3jw-g9cj (sharp inherited vulnerabilities in libvips: CVE-2026-33327, CVE-2026-33328, CVE-); GHSA-rgj7-g3m4-5g8c (sharp: Vulnerabilities in libheif: GHSA-g89c-p67h-r497 and GHSA-2jg2-4ch7-h545)

High
Category
Supply Chain
Confidence
88% confidence
Finding

The lockfile includes sharp 0.33.5, with advisories inherited from image parsing libraries such as libvips/libheif. Vulnerabilities in image decoders can lead to denial of service, memory corruption, or potentially code execution when processing crafted images. Because this package is optional and a wrangler dependency, the immediate risk to deployed runtime may be reduced, but it remains dangerous in development/build workflows or any environment where image handling is enabled.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: undici==5.29.0 — 12 advisory(ies): CVE-2026-1525 (Undici has an HTTP Request/Response Smuggling issue); CVE-2026-6733 (undici vulnerable to HTTP response queue poisoning via keep-alive socket reuse); CVE-2026-1527 (Undici has CRLF Injection in undici via `upgrade` option) +9 more

High
Category
Supply Chain
Confidence
95% confidence
Finding

Undici 5.29.0 is flagged for multiple HTTP parsing and request/response smuggling class issues. In software that makes or proxies HTTP requests, these flaws can enable request confusion, response poisoning, cache poisoning, SSRF-adjacent behaviors, or denial of service. Given the skill description mentions real-time multiplayer and an API-backed worker, HTTP client behavior is relevant enough that this dependency is more concerning than a purely dormant dev tool issue, even though it appears transitively under miniflare/dev tooling here.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: ws==8.18.0 — 2 advisory(ies): CVE-2026-45736 (ws: Uninitialized memory disclosure); CVE-2026-48779 (ws: Memory exhaustion DoS from tiny fragments and data chunks)

High
Category
Supply Chain
Confidence
93% confidence
Finding

The lockfile includes ws 8.18.0 with advisories for memory disclosure and memory exhaustion via fragmented frames/chunks. WebSocket services are directly relevant to this skill's stated real-time multiplayer functionality, so defects in a WebSocket library are especially important because a remote attacker could target connections to leak data or degrade availability. Although this instance is shown as a transitive dependency of miniflare in the lockfile, the skill context increases concern because WebSockets are core to the product area.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The public /api/pong/match-result endpoint accepts arbitrary match results without authentication, authorization, integrity checks, or rate limits. An attacker can fabricate wins, inject bogus tournament data, and poison leaderboards or standings, which is especially dangerous in a prize-oriented gaming platform where recorded results may influence rewards or trust.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: defu==6.1.4 — 1 advisory(ies): CVE-2026-35209 (defu: Prototype pollution via `__proto__` key in defaults argument)

High
Category
Supply Chain
Confidence
96% confidence
Finding

The lockfile pins defu 6.1.4, which is reported vulnerable to prototype pollution via a proto key in merge/defaults input. Even though this is a transitive dev dependency, prototype pollution can alter object behavior during local tooling, build, or preview workflows and may enable unexpected code paths or security bypasses if attacker-controlled configuration or JSON is processed.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.env_credential_access, suspicious.exposed_secret_literal

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
scripts/distribute-prizes.js:39

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
agent-client/smart-snake-bot.js:12

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
api-worker/src/index.js:145

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
api-worker/wrangler.toml:15

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
scripts/create-chess-tournament.js:8

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
scripts/create-pong-tournament.js:8

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
scripts/create-tournament.js:12

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
scripts/distribute-prizes.js:26

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
snake-server/src/index.js:457