Back to skill

Security audit

Storyclaw X2c Publish

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent for X2C publishing and wallet use, but it handles powerful credentials and wallet-moving actions without enough endpoint or confirmation safeguards.

Install only if you trust the X2C API setup and can enforce the official HTTPS endpoint. Use narrowly scoped API keys, protect any credential file from other users and version control, and require explicit confirmation of amount, asset, network, fees, and full destination address before any swap or withdrawal.

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

API Credential Exposure Through a User-Controlled API Base URL

Content
View full analysis
` ### Get Categories ```bash curl -m 60 -X POST "$X2C_API_BASE_URL" \ -H "Content-Type: application/json" \ -H "X-API-Key: $X2C_API_KEY" \ -d '{"action": "distribution/categories", "lang": "zh-CN"}' ``` ``` ### Technical Analysis The skill instructs the agent to obtain the request destination directly from the `X2C_API_BASE_URL` environment variable and attach the sensitive `X2C_API_KEY` credential to requests sent to that destination. The supplied project does not define the expected production endpoint, require HTTPS, validate the hostname, or establish an allowlist of trusted origins. An attacker who can influence the environment variable or relevant OpenClaw configuration can redirect requests to a server under their control. Because the API key is sent in a request header, the attacker-controlled server can capture it without needing to intercept encrypted traffic. The same request pattern is documented for publishing and wallet functionality. A stolen key may therefore expose all capabilities granted to that credential rather than only the category endpoint shown above. ### Attack Path 1. The attacker influences `X2C_API_BASE_URL` through environment configuration, deployment configuration, or another configuration injection vector. 2. The value is changed to an attacker-controlled HTTP or HTTPS endpoint. 3. A user invokes any documented X2C operation. 4. The agent executes `curl` and attaches `X2C_API_KEY` to the request. 5. The attacker-controlled endpoint records the `X-API-Key` header. 6. The attacker reu ...[truncated 612 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:182
Finding

Asset Swaps and Withdrawals Lack Mandatory Transaction Confirmation

Content
View full analysis
Remediation
View remediation
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 (5)

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

md
## Critical Rules

- Complete ALL workflow steps in order — never skip steps
- Always add timeout to curl commands: `-m 60`
- NEVER retry failed requests — report error and ask user
- Check project status before publishing to avoid duplicates
- Cover URL must be an image (jpg/png/webp), never a video URL

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill instructs users to store an API key in a local JSON file but does not warn that the key is a secret requiring filesystem protections. This can lead to credential exposure through weak file permissions, accidental commits, backups, or multi-user system access, which could let an attacker publish content or perform wallet operations via the API.

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

Query Status

bash
curl -m 60 -X POST "$X2C_API_BASE_URL" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $X2C_API_KEY" \
  -d '{"action": "distribution/query", "project_id": "uuid"}'

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The wallet section documents asset-moving operations such as claim, swap, and withdrawal without any explicit warning that these actions may be irreversible and have financial consequences. In an agent skill context, this increases the risk of accidental or insufficiently confirmed transfers, especially because the skill exposes direct API calls that can move funds off-platform.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The example request for categories sets "lang": "zh-CN" directly, which implies a fixed language/locale choice. There is no nearby explanation that the skill is region-specific or that the user can choose a different locale, so this appears to violate the language/locale policy requirement.

Content

No source excerpt is available for this finding.