Back to skill

Security audit

Mobula - Crypto Prices & Market Data

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward read-only crypto market-data integration, with a credential-handling documentation weakness users should avoid.

Install only if you are comfortable sending token lookup queries and your Mobula API key to Mobula. Avoid printing the full API key in a terminal or storing it in shared shell config; use a secret manager or protected environment setup when possible, and rotate the key if you accidentally expose it.

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
README.md:63
Finding

Insecure Plaintext Storage and Disclosure of the Mobula API Key

Content
View full analysis

Vulnerability Details

File Location: README.md:63, README.md:192, and SKILL.md:184
Vulnerability Type: Plaintext sensitive-data storage and exposure
Risk Level: Medium

Vulnerable Code

README.md:63:

bash
echo 'export MOBULA_API_KEY="your_key"' >> ~/.zshrc

README.md:192:

bash
echo $MOBULA_API_KEY

SKILL.md:184:

bash
echo $MOBULA_API_KEY

Technical Analysis

The documentation recommends appending the Mobula API key directly to ~/.zshrc. This stores the credential as plaintext in a commonly readable and routinely backed-up configuration file. The key may be exposed to other processes operating under the user's account, local diagnostic tools, shell-configuration collectors, backups, or support bundles.

The troubleshooting instructions also print the complete credential to standard output. This can disclose the key through terminal scrollback, screen sharing, screenshots, command transcripts, CI logs, remote-session recordings, or copied troubleshooting output.

Although the documented API is read-only and does not provide wallet or transaction-signing privileges, MOBULA_API_KEY remains an authentication credential and should not be unnecessarily displayed or stored in an inadequately protected location.

Attack Path

  1. A user follows the setup instructions and appends MOBULA_API_KEY to ~/.zshrc.
  2. An attacker, malicious process, compromised user-level application, or exposed backup obtains the shell startup file.
  3. Alternatively, the user follows the troubleshooting instructions and prints the complete API key in a logged, shared, or recorded terminal session.
  4. The attacker extracts the credential from the shell file or terminal output.
  5. The attacker supplies the stolen value in the Mobula Authorization header.
  6. The attacker makes unauthorized API requests using the victim's account and consumes the victim's request quota until ...[truncated 666 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove instructions that print the complete API key. Validate only whether the variable is present, for example:

    bash
    if [ -n "${MOBULA_API_KEY:-}" ]; then
      echo "MOBULA_API_KEY is configured"
    else
      echo "MOBULA_API_KEY is not configured"
    fi
    
  2. If partial identification is necessary, display only a short redacted prefix or suffix and never the entire credential.

  3. Prefer an operating-system credential manager, encrypted secret store, or runtime secret injection mechanism instead of storing the key in ~/.zshrc.

  4. If a local environment file must be supported, keep it outside version control and restrict its permissions:

    bash
    install -m 600 /dev/null ~/.config/mobula.env
    
  5. Explicitly warn users not to commit the key, paste it into support requests, include it in screenshots, or expose it through logs.

  6. Document key revocation and rotation procedures for users who may already have exposed the credential.

  7. Recommend checking shell history, terminal logs, backups, and repository history after accidental disclosure.

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)

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · README.md (reported line 40)May include surrounding context.

Via URL:

text
Tell your agent: "Install skill from https://raw.githubusercontent.com/Flotapponnier/Crypto-date-openclaw/main/skills/mobula-prices/SKILL.md"

2. Get Your Free API Key

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

md
### Get Token Prices (`mobula_market_data`)

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

Get current price, volume, market cap, and liquidity for any token.

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

md
### Get Token Prices (`mobula_market_data`)

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

Get current price, volume, market cap, and liquidity for any token.

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

md
### Get Token Prices (`mobula_market_data`)

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

Get current price, volume, market cap, and liquidity for any token.

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

md
### Get Token Prices (`mobula_market_data`)

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

Get current price, volume, market cap, and liquidity for any token.

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

md
### Get Token Prices (`mobula_market_data`)

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

Get current price, volume, market cap, and liquidity for any token.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The documentation explicitly tells users to run echo $MOBULA_API_KEY, which increases the chance of exposing the credential in shared terminals, shell logs, screen recordings, or support transcripts. This is not an active secret exfiltration mechanism, but it is an insecure handling practice that can lead to accidental disclosure of the API key.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.