Back to skill

Security audit

Mobula - Crypto Market Data & Wallet Intelligence

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed Mobula API integration for crypto price, wallet, and token analytics, with a credential-handling documentation issue users should avoid.

Install only if you are comfortable sending token names, contract addresses, and queried wallet addresses to Mobula. Do not enter private keys or seed phrases. Configure MOBULA_API_KEY through a protected secret manager or environment file, avoid pasting real keys into shell history, and do not use `echo $MOBULA_API_KEY`; verify only that the variable is set. Use a separate, revocable Mobula key for this skill, especially for testing.

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

Warning
Location
SKILL.md:303
Finding

API Key Exposure Through Unsafe Shell Setup and Troubleshooting Instructions

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 303–318 and line 510
Vulnerability Type: Credential exposure through shell history and plaintext terminal output
Risk Level: Medium

Vulnerable Code

markdown
**Setup:**
1. Get a free API key at **https://mobula.io** (100 requests/minute free tier)
2. Set environment variable:
   ```bash
   export MOBULA_API_KEY="your_key_here"
   ```
3. Restart OpenClaw agent

**Header format:**

Authorization: ${MOBULA_API_KEY}

text

**If authentication fails (401/403):**
- Verify key is set: `echo $MOBULA_API_KEY`
- Regenerate key at https://mobula.io if expired
- Check rate limits (100 req/min free, upgrade for more)

The same unsafe setup pattern is repeated at line 510:

markdown
- **No key set:** "I need a Mobula API key to fetch crypto data. Get one free at https://mobula.io then add it to your environment with `export MOBULA_API_KEY='your_key'`"

Technical Analysis

The Skill instructs users to place the Mobula API key directly in an interactive shell command. Depending on shell configuration, the complete command and credential may be retained in shell history. It also recommends echo $MOBULA_API_KEY when troubleshooting, which prints the entire secret in plaintext.

Printing the secret can expose it through terminal scrollback, command transcripts, Agent conversation context, CI logs, support records, screen sharing, or screen recordings. Merely confirming whether the variable exists does not require revealing its value.

Sending the key to Mobula in an authentication header is necessary for the declared functionality and is not independently a vulnerability. The problem is the local setup and diagnostic procedure unnecessarily exposing the credential.

Attack Path

  1. A user follows the documented setup command and substitutes a real Mobula API key.
  2. The shell records the command, including the key, in h ...[truncated 989 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove the instruction to print the secret. Test only whether the variable is populated:

    bash
    if [ -n "${MOBULA_API_KEY:-}" ]; then
      echo "MOBULA_API_KEY is set"
    else
      echo "MOBULA_API_KEY is missing"
    fi
    
  2. Avoid placing the key directly on an interactive command line. Use hidden input where appropriate:

    bash
    read -rsp "Mobula API key: " MOBULA_API_KEY
    echo
    export MOBULA_API_KEY
    
  3. Prefer a supported secret manager or a protected environment file excluded from version control. Restrict any credential file to the owning user, such as with mode 0600.

  4. Ensure the Agent, shell, CI system, and HTTP client redact MOBULA_API_KEY and Authorization header values from logs and transcripts.

  5. Replace the line 510 setup guidance with a reference to secure credential configuration rather than embedding an export command containing the key.

  6. Document immediate rotation and revocation procedures for credentials that have been printed, committed, recorded, or otherwise exposed.

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

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 61)May include surrounding context.

md
### 1. Market Data (`mobula_market_data`)

**Endpoint:** `GET https://api.mobula.io/api/1/market/data`

Get real-time price, volume, market cap, and liquidity for any token across all supported chains.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 99)May include surrounding context.

md
### 1. Market Data (`mobula_market_data`)

**Endpoint:** `GET https://api.mobula.io/api/1/market/data`

Get real-time price, volume, market cap, and liquidity for any token across all supported chains.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 140)May include surrounding context.

md
### 1. Market Data (`mobula_market_data`)

**Endpoint:** `GET https://api.mobula.io/api/1/market/data`

Get real-time price, volume, market cap, and liquidity for any token across all supported chains.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 173)May include surrounding context.

md
### 1. Market Data (`mobula_market_data`)

**Endpoint:** `GET https://api.mobula.io/api/1/market/data`

Get real-time price, volume, market cap, and liquidity for any token across all supported chains.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 207)May include surrounding context.

md
### 1. Market Data (`mobula_market_data`)

**Endpoint:** `GET https://api.mobula.io/api/1/market/data`

Get real-time price, volume, market cap, and liquidity for any token across all supported chains.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 244)May include surrounding context.

md
### 1. Market Data (`mobula_market_data`)

**Endpoint:** `GET https://api.mobula.io/api/1/market/data`

Get real-time price, volume, market cap, and liquidity for any token across all supported chains.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 272)May include surrounding context.

md
### 1. Market Data (`mobula_market_data`)

**Endpoint:** `GET https://api.mobula.io/api/1/market/data`

Get real-time price, volume, market cap, and liquidity for any token across all supported chains.

Static analysis

No suspicious patterns detected.