Back to skill

Security audit

clawSpace

Security checks for vulnerabilities and agentic risk

Overview

This appears to be a real game-bridge skill, but it exposes unauthenticated game-control and game-state APIs that need Review.

Review before installing. Use only if you want an agent to control a game character and read game-world state. Run the bridge only on trusted machines/networks, stop it when done, avoid untrusted browsing while it is running, clear workspace memory/logs if needed, and update or remove the vulnerable ws dependency before regular use.

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 (2)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
scripts/OpenClawGameBridge.js:34
Finding

Unauthenticated WebSocket Control Plane Permits Client Impersonation and Game Control

Content
View full analysis
{ for (const [playerUid, clientWs] of this.clients) { if (clientWs.readyState === WebSocket.OPEN) { // 发送ping保持连接 clientWs.ping(); } } }, 30000); // 每30秒发送一次ping this.wss.on('connection', (ws) => { console.log('[Bridge] 新客户端连接'); ws.isAlive = true; ws.on('pong', () => { ws.isAlive = true; }); ws.on('message', (data) => { try { const msg = JSON.parse(data); console.log('[Bridge] 收到消息:', msg.type, JSON.stringify(msg).substring(0, 200)); this.handleMessage(msg, ws); } catch (error) { console.error('[Bridge] 消息解析错误:', error); } }); ``` The command relay accepts a player identifier supplied by the requesting client: ```javascript onBridgeSendCommand(ws, msg) { const playerUid = msg.playerUid; const command = msg.command; if (!playerUid || !command) { console.log(`[Bridge] sendCommand 缺少参数: playerUid=${playerUid}, command=`, command); return; } const targetWs = this.clients.get(playerUid); if (!targetWs || targetWs.readyState !== WebSocket.OPEN) { console.log(`[Bridge] sendCommand 玩家不在线: ${playerUid}`); return; } // 包装成 ai_control 消息发给游戏客户端 targetWs.send(JSON.stringify({ type: 'ai_control', playerUid: playerUid, command: command })); con ...[truncated 3325 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
scripts/OpenClawGameBridge.js:1450
Finding

Wildcard CORS Exposes the Unauthenticated Local HTTP API to Arbitrary Websites

Content
View full analysis
{ // CORS 预检 if (req.method === 'OPTIONS') { res.writeHead(204, { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS', 'Access-Control-Allow-Headers': 'Content-Type' }); res.end(); return; } // 强制 JSON 输出 res.setHeader('Content-Type', 'application/json; charset=utf-8'); res.setHeader('Access-Control-Allow-Origin', '*'); const url = req.url.split('?')[0]; const self = this; try { if (req.method === 'GET' && url === '/health') { this.httpHealth(res); } else if (req.method === 'GET' && url === '/clients') { this.httpListClients(res); } else if (req.method === 'GET' && url.startsWith('/clients/')) { const parts = url.split('/'); if (parts[3] === 'perception') { this.httpGetPerception(parts[2], res); } else if (parts[3] === 'mapInfo') { this.httpGetMapInfo(parts[2], res); } else { this.httpNotFound(res, url); } } else if (req.method === 'GET' && url.startsWith('/mapId/')) { const mapId = parseInt(url.split('/')[2]); if (!isNaN(mapId)) { this.httpGetTransportPoints(mapId, res); } else { this.httpError(res, 400, 'Invalid mapId'); } } else if (req.method === 'POST' && url === '/command') { let body = ''; req.on('data', chunk => { body += chunk; }); req.on('end', () => { try { const data = JSON.parse(body); ...[truncated 4872 chars]
Remediation
View remediation
` on read and write endpoints. - Compare tokens using a timing-safe method. - Do not place the token in URLs, logs, or game chat. 3. **Separate read and control privileges** - Use distinct scopes for status, perception, and commands. - Require the strongest authorization for `/command`. - Bind an authorized controller to specific player identifiers. 4. **Enforce command schemas** - Maintain an explicit allowlist of command types. - Validate required fields and reject extra fields. - Validate coordinates, NPC identifiers, and dialogue length. - Do not forward caller-provided command objects unchanged. 5. **Limit request bodies** ```javascript const MAX_BODY_SIZE = 16 * 1024; let size = 0; let body = ''; req.on('data', chunk => { size += chunk.length; if (size > MAX_BODY_SIZE) { req.destroy(); return; } body += chunk; }); ``` 6. **Add rate limiting and audit logging** - Rate-limit requests by endpoint and authenticated principal. - Record rejected authentication attempts and privileged commands. - Avoid logging full sensitive perception or dialogue content. 7. **Retain loopback binding** - Continue binding the HTTP API explicitly to `127.0.0.1`. - Treat loopback binding as defense in depth, not as authentication. ]]>
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
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (49)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The documentation describes a bridge/control service with client listing, perception access, and command dispatch, which is much more powerful than a social-space launcher. This matters because it exposes surveillance and control functionality that could be abused if a user believes they are only opening a game space.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The documentation describes a bridge/control service with client listing, perception access, and command dispatch, which is much more powerful than a social-space launcher. This matters because it exposes surveillance and control functionality that could be abused if a user believes they are only opening a game space.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The documentation describes a bridge/control service with client listing, perception access, and command dispatch, which is much more powerful than a social-space launcher. This matters because it exposes surveillance and control functionality that could be abused if a user believes they are only opening a game space.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The documentation describes a bridge/control service with client listing, perception access, and command dispatch, which is much more powerful than a social-space launcher. This matters because it exposes surveillance and control functionality that could be abused if a user believes they are only opening a game space.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The documentation describes a bridge/control service with client listing, perception access, and command dispatch, which is much more powerful than a social-space launcher. This matters because it exposes surveillance and control functionality that could be abused if a user believes they are only opening a game space.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The documentation describes a bridge/control service with client listing, perception access, and command dispatch, which is much more powerful than a social-space launcher. This matters because it exposes surveillance and control functionality that could be abused if a user believes they are only opening a game space.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The documentation describes a bridge/control service with client listing, perception access, and command dispatch, which is much more powerful than a social-space launcher. This matters because it exposes surveillance and control functionality that could be abused if a user believes they are only opening a game space.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The documentation describes a bridge/control service with client listing, perception access, and command dispatch, which is much more powerful than a social-space launcher. This matters because it exposes surveillance and control functionality that could be abused if a user believes they are only opening a game space.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| `scripts/ai_loop_ws.js` | AI 循环主体(WS 事件驱动 + HTTP 轮询) |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| `scripts/ai_launcher.js` | 交互式启动器 |

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The HTTP server binds to 127.0.0.1 but exposes unauthenticated endpoints that let any local process list clients, read perception and map data, request telemetry, and send arbitrary ai_control commands to connected players. On a multi-process desktop environment, malware, browser-based local service abuse, or another untrusted local app could use these endpoints to hijack gameplay behavior and exfiltrate in-game state without user consent.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The manifest describes an automatic startup/bridge connection workflow, but this file implements a persistent autonomous agent that reads perception data and issues movement, dialogue, and interaction commands. That mismatch is dangerous because users enabling a launcher skill would not reasonably expect bot-like in-game control or ongoing autonomous behavior.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The code can autonomously move the player, send dialogue, and interact with NPCs, which materially exceeds the stated purpose of opening clawSpace. In context, this makes the skill more dangerous because it can perform unintended actions inside the game world under the guise of a simple launch helper, potentially causing account misuse, harassment, or policy violations.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

This section actively sends gameplay commands over WebSocket, including movement, dialogue, and interaction, driven by autonomous decision logic rather than direct user initiation. In the context of a skill advertised as only opening and connecting clawSpace, this is especially dangerous because it enables undisclosed agentic control of the user's in-game character and can produce unapproved actions, spam, or policy-violating behavior.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: ws==8.20.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
95% confidence
Finding

The lockfile pins the skill to ws 8.20.0, and the supplied advisory data indicates this version is affected by an uninitialized memory disclosure and a memory-exhaustion denial of service. Because this skill appears to launch and connect a bridge service, a network-facing WebSocket dependency is directly relevant and could allow a remote peer to crash the bridge or potentially expose process memory.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: ws==8.20.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
99% confidence
Finding

The package declares ws 8.20.0, which is flagged with known vulnerabilities including memory disclosure and memory-exhaustion denial of service. Because this skill's bridge is explicitly a WebSocket service and is auto-started as part of the workflow, the vulnerable dependency is directly exposed in a security-sensitive role, making exploitation more plausible and impactful.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
83% confidence
Finding

The skill advertises executable capabilities and operational behavior but declares no explicit tool scope or permission boundaries. That increases the chance an agent will invoke environment/process capabilities implicitly, especially because the document instructs starting local processes, opening Chrome, and interacting with local services.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The activation phrase '打开 clawSpace' is broad and lacks guardrails, while the described actions include starting processes and opening a browser. A low-friction trigger for high-impact side effects raises the risk of accidental execution or prompt-triggered misuse.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The description does not clearly warn that using the skill may start local processes and open Chrome automatically. Hidden side effects of that kind undermine informed consent and can surprise users in security-sensitive or shared environments.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The bridge broadcasts chat, perception, movement, and client data across connected OpenClaw clients, but the description lacks a clear privacy warning. This is risky because users may expose gameplay telemetry and conversation data to other local or connected controllers without realizing it.

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 76)May include surrounding context.

md
| GET | `/clients/:uid/perception` | 查询感知缓存 | `curl http://localhost:18766/clients/2016386a4_10001/perception` |
| GET | `/clients/:uid/mapInfo` | 查询地图信息 | `curl http://localhost:18766/clients/2016386a4_10001/mapInfo` |
| GET | `/mapId/:mapId/transportPoints` | 查询传送门缓存 | `curl http://localhost:18766/mapId/2000/transportPoints` |
| POST | `/command` | 发送控制指令 | `curl -X POST http://localhost:18766/command -d '{"playerUid":"...","command":{"type":"move","x":25,"y":30}}'` |
| POST | `/perception/request` | 请求感知推送 | `curl -X POST http://localhost:18766/perception/request -d '{"playerUid":"...","category":"npcs"}'` |

**发送控制指令示例 (PowerShell):**

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 77)May include surrounding context.

| GET | /clients/:uid/mapInfo | 查询地图信息 | curl http://localhost:18766/clients/2016386a4_10001/mapInfo | | GET | /mapId/:mapId/transportPoints | 查询传送门缓存 | curl http://localhost:18766/mapId/2000/transportPoints | | POST | /command | 发送控制指令 | curl -X POST http://localhost:18766/command -d '{"playerUid":"...","command":{"type":"move","x":25,"y":30}}' | | POST | /perception/request | 请求感知推送 | curl -X POST http://localhost:18766/perception/request -d '{"playerUid":"...","category":"npcs"}' |

发送控制指令示例 (PowerShell):

powershell

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill claims a narrow startup purpose but later instructs persistent autonomous gameplay and memory retention. This scope drift is dangerous because it encourages long-running behavior and ongoing data collection beyond what a user would expect from a simple launcher.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Including a combat/'打怪' capability is outside the stated social-space purpose and expands the action surface into potentially disruptive autonomous behavior. While not inherently malicious, this unjustified capability broadens what the agent can do without clear need or disclosure.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill directs retention and summarization of conversations and interaction data in plain language, creating privacy and sensitivity risks if the stored files are accessed or reused. Persistent conversational summaries can reveal identities, behavior patterns, and prior interactions well beyond immediate operational need.

Content

No source excerpt is available for this finding.