Back to skill

Security audit

Bot World Mining

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent Bot World game integration, but it teaches an agent to perform real cryptocurrency-related actions without enough authentication, confirmation, or withdrawal-safety guidance.

Review this skill carefully before installing. Use it only if you trust the wirx.xyz Bot World service, and require manual confirmation before any join, swap, PvP-related action, or withdrawal. Verify wallet addresses and amounts independently, and do not let an agent autonomously move or withdraw real-value tokens based only on these examples.

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

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:51
Finding
State-Changing Cryptocurrency API Requests Lack Documented Authentication## Vulnerability Details **File Location**: `SKILL.md:51-54`, `SKILL.md:61-64`, `SKILL.md:83-86`, and `SKILL.md:113-116` **Vulnerability Type**: Missing authentication and authorization for state-changing API operations **Risk Level**: High The Skill documents requests that register wallets, control agents, exchange cryptocurrency assets, and initiate withdrawals. The examples provide only an agent name or wallet address and do not include an authorization token, wallet signature, nonce, session credential, or other proof of ownership. ### Vulnerable Code Wallet registration at `SKILL.md:51-54`: ```bash curl -s -X POST https://wirx.xyz/botworld/crust/api/join \ -H "Content-Type: application/json" \ -d '{"name": "YourAgent", "wallet": "your_solana_address"}' ``` Agent movement at `SKILL.md:61-64`: ```bash curl -s -X POST https://wirx.xyz/botworld/crust/api/move \ -H "Content-Type: application/json" \ -d '{"name": "YourAgent", "direction": "right"}' ``` Cross-chain asset exchange at `SKILL.md:83-86`: ```bash curl -s -X POST https://wirx.xyz/botworld/exchange/swap \ -H "Content-Type: application/json" \ -d '{"from": "CRUST", "to": "WIR", "amount": 100, "agent": "YourAgent"}' ``` Token withdrawal at `SKILL.md:113-116`: ```bash curl -s -X POST https://wirx.xyz/botworld/crust/api/withdraw \ -H "Content-Type: application/json" \ -d '{"name": "YourAgent", "amount": 50}' ``` ### Technical Analysis The documented API design identifies an account using an agent name but does not demonstrate that the caller is authorized to act for that account. An agent name is an identifier, not an authentication secret. Public wallet addresses likewise cannot prove control of their associated private keys. This is especially significant for the swap and withdrawal endpoints because they change balances or trigger transfers involving cryptocurrency. If the service operates exactly as documented and lacks additional server-side controls, an attacker could subm ...[truncated 2154 chars]
Remediation
## Remediation Suggestions 1. Require authentication for every state-changing endpoint, including registration, movement, swaps, and withdrawals. 2. Use wallet-based challenge signing: - Generate a server-issued random nonce. - Require the wallet owner to sign a domain-separated message containing the nonce, agent name, intended action, chain ID, and expiration time. - Verify the signature server-side before issuing a short-lived session token. 3. Bind each authenticated session to a specific agent and wallet. Do not treat an agent name or public wallet address as an authorization credential. 4. Require fresh authorization for sensitive operations such as swaps, wallet changes, and withdrawals. 5. Add nonce consumption, expiration timestamps, request identifiers, and replay protection. 6. Implement server-side ownership checks and reject attempts to act on agents owned by another wallet. 7. Prevent agent-name squatting and wallet rebinding through uniqueness constraints and signed ownership confirmation. 8. Apply withdrawal limits, swap limits, rate limiting, anomaly detection, and optional confirmation delays. 9. Return explicit authorization errors without disclosing unnecessary account information. 10. Update all Skill examples to include the required authentication headers or signed request fields so agents do not rely on an insecure name-only authorization pattern. 11. Commission a separate assessment of the remote `wirx.xyz` implementation to verify that these controls are enforced server-side rather than merely documented.
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 (2)

External Transmission

Medium
Category
Data Exfiltration
Content
emoji: "\u26CF\uFE0F"
    requires:
      bins:
        - curl
---

# Bot World Mining Games
Confidence
81% confidence
Finding
The skill explicitly requires curl and documents multiple POST requests to external services at wirx.xyz, including wallet registration, movement, swaps, and withdrawals. External network transmission is expected for this skill, but it still creates a real risk because an agent may send identifying wallet information or initiate financially meaningful actions against a third-party service without clear trust, consent, or validation boundaries.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill instructs users to withdraw cryptocurrency from a hot wallet to a registered wallet address, but provides no warning about irreversible transfers, address verification, authentication requirements, limits, or the financial risk of sending funds to the wrong destination. In an agent-executed context, these instructions could normalize or automate real-value transfers without adequate human confirmation, increasing the chance of loss or abuse.

Static analysis

No suspicious patterns detected.