Back to skill

Security audit

Skill Clawether

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent game integration, but it exposes an authentication token in normal output and can send that token to a configurable endpoint.

Review before installing. Use a pseudonymous CLAWETHER_AGENT_ID, assume gameplay sessions and scores are public, avoid sharing transcripts that include tool output, and do not use a production CLAWETHER_AGENT_TOKEN unless the token-output issue is fixed or tokens can be rotated. Only set CLAWETHER_ENDPOINT to a trusted HTTPS ClawAether-compatible service.

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

T09 · Insecure Skill Coding Practices

Error
Location
src/index.ts:173
Finding

Bearer Token Exposed in Model-Visible Tool Output

Content
View full analysis
` to impersonate the agent. ### Impact Assessment An attacker who obtains the token may issue authenticated ClawAether API requests as the affected agent. Within the API permissions g ...[truncated 352 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
src/index.ts:89
Finding

Bearer Token Can Be Forwarded to an Unrestricted Configurable Endpoint

Content
View full analysis
(path: string, method = 'GET', body?: unknown): Promise { const token = store.get('agentToken') let res: Response try { res = await fetch(`${ENDPOINT}${path}`, { method, headers: { 'Content-Type': 'application/json', ...(token ? { Authorization: `Bearer ${token}` } : {}), }, ...(body ? { body: JSON.stringify(body) } : {}), }) ``` ### Technical Analysis The destination origin is taken directly from `CLAWETHER_ENDPOINT`, while the stored bearer token is automatically attached to every request whenever present. The code does not require HTTPS, validate the parsed URL, restrict the destination to an approved host, or bind a token to the origin that issued it. Custom endpoint support is documented and may be legitimate for development or self-hosting. However, automatically forwarding an existing production credential to any configured origin exceeds the minimum safe privilege needed for that feature. A typo, insecure configuration, compromised deployment setting, or malicious environment injection can redirect the credential to a third-party or plaintext HTTP server. Because an actor capable of modifying process environment variables may already have substantial deployment access, exploitability depends on the hosting model. Nevertheless, credential forwarding should be prevented through destination and origin validation. ### Attack Path 1. A valid token is supplied through `CLAWETHER_AGENT_TOKEN` or received from a previous session and retained in the runtime store. 2. `CLAWETHER_ENDPOINT` is configured as an attacker-controlled URL or an insecure `http://` URL. 3. Any register ...[truncated 871 chars]
Remediation
View remediation
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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (9)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The tool response explicitly includes the server-issued bearer token in plain text without warning or masking. Because tool outputs are often visible to users, stored in transcripts, or accessible to other components, this creates an immediate credential exposure path that can enable unauthorized API access and impersonation of the agent.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill documents network access and use of environment variables for authentication, but it does not declare any explicit tool scope such as permissions or allowed-tools. That creates a least-privilege failure: an agent may be granted broader env/network capabilities than users expect, making outbound requests and token handling less transparent and harder to constrain.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill states that every session is recorded, scores are public, and games are spectatable live, yet the quickstart encourages immediate use without a prominent privacy warning. Users may unknowingly transmit prompts, behavioral data, agent identifiers, or gameplay-derived metadata into a public and persistent system, creating a consent and privacy risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The api helper sends HTTP requests to an external endpoint and may include the bearer agent token in the Authorization header as well as JSON request bodies. There is no confirmation prompt, user-facing log, or warning in this file disclosing that gameplay identifiers and authentication data are sent to a remote service.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The new-session tool returns data.agent_token directly in user-visible output, exposing a bearer credential that can authorize subsequent API actions. In an agent/plugin environment, tool outputs may be logged, shown to end users, or consumed by other tools, so revealing the token materially increases the risk of credential theft and session/account misuse.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 8)May include surrounding context.

json
"main": "./src/index.ts",
  "types": "./src/index.ts",
  "devDependencies": {
    "typescript": "^5.7.2",
    "@sinclair/typebox": "^0.34.0"
  },
  "peerDependencies": {

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 9)May include surrounding context.

json
"types": "./src/index.ts",
  "devDependencies": {
    "typescript": "^5.7.2",
    "@sinclair/typebox": "^0.34.0"
  },
  "peerDependencies": {
    "openclaw": "*"

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
98% confidence
Finding

The peer dependency on "openclaw" is completely unpinned using "*", allowing installation with any version, including vulnerable or incompatible releases. In this skill context, that is more dangerous because the package is intended to connect an agent to an external game/API platform, so consuming an arbitrary host-provided OpenClaw version can expose the skill to known upstream security issues or unexpected behavior.

Content

Scanner excerpt · package.json (reported line 12)May include surrounding context.

json
"@sinclair/typebox": "^0.34.0"
  },
  "peerDependencies": {
    "openclaw": "*"
  }
}

Unverifiable Dependency: openclaw has 16 known advisory(ies) (CVE-2026-53846 (OpenClaw: Workspace .env npm_execpath could influence bundled runtime dependency); CVE-2026-32064 (OpenClaw's andbox browser noVNC observer lacked VNC authentication); CVE-2026-32006 (OpenClaw has a BlueBubbles group allowlist mismatch via DM pairing-store fallbac) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
97% confidence
Finding

The manifest depends on "openclaw" without pinning a version even though that package has multiple known advisories. Because the allowed version is unconstrained, consumers may install vulnerable releases and the skill's role as an agent integration with external APIs increases exposure to upstream flaws affecting environment handling, remote access, or sandbox components.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.env_credential_access

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
src/index.ts:5