Back to skill

Security audit

Clawcast - Cast Ethereum Wallet for Agents

Security checks across malware telemetry and agentic risk

Overview

This is a real EVM wallet helper, but it handles wallet-control secrets in risky local files and can modify the host during setup.

Install only if you deliberately want a local hot-wallet agent and understand that files under ~/.agent-wallet and Foundry keystores may enable wallet use. Do not import a valuable existing seed phrase or private key. Review the Foundry install and any sudo prompt before proceeding, inspect and delete plaintext mnemonic/password files, and treat logs/tx_mentions.log as sensitive financial metadata.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
Findings (16)

Lp3

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding
The skill directs the agent to read and write local files and execute shell scripts, but it declares no permissions or equivalent user-facing disclosure. That gap increases the chance that sensitive operations like software installation, wallet setup, credential storage, or file deletion occur without adequate review or consent.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The skill’s stated purpose sounds like a wallet helper, but the documented behavior extends into high-risk operations: installing software, persisting secrets on disk, modifying bundled assets, and deleting local wallet material. That mismatch can mislead reviewers and users about the real trust boundary and causes sensitive actions to be triggered under a deceptively narrow description.

Context-Inappropriate Capability

Medium
Confidence
84% confidence
Finding
The skill instructs persistent logging of wallet addresses, transaction hashes, and narrative descriptions into a workspace file, even though that retention is not clearly justified by the core wallet-management purpose. This creates an avoidable privacy and operational security risk because transaction activity becomes discoverable in local logs beyond the immediate task context.

Context-Inappropriate Capability

Medium
Confidence
92% confidence
Finding
The script installs the 'at' package and schedules an OS-level job solely to delete a mnemonic file later. Even though the purpose is cleanup, package installation and job scheduling exceed the minimum privileges expected for wallet setup and create avoidable system modification and execution surfaces, especially when run with sudo.

Context-Inappropriate Capability

Medium
Confidence
98% confidence
Finding
The script writes the newly generated mnemonic to a plaintext file on disk and only plans to delete it about an hour later. Mnemonic phrases are wallet root secrets; any local compromise, backup process, shell access, or forensic recovery during that window can result in total wallet takeover.

Intent-Code Divergence

Low
Confidence
88% confidence
Finding
The script warns that the mnemonic file will be deleted in about one hour regardless of whether scheduling actually succeeded, because the message is emitted after capturing function output rather than branching on success. This can mislead users into believing a highly sensitive seed phrase will be removed automatically when it may remain on disk indefinitely.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill tells the agent to store transaction details persistently without warning the user that wallet activity will be retained on disk. Even if the data is public on-chain, linking addresses, timestamps, and reasons in a local log can expose sensitive behavioral context and increase privacy leakage.

Missing User Warnings

High
Confidence
99% confidence
Finding
The skill instructs the agent to write a generated mnemonic seed phrase to a local file, even temporarily, without a strong safety warning or hard protections. Seed phrases are equivalent to full wallet control, so any local disclosure, backup sync, shell history leak, or delayed cleanup failure can directly compromise all funds.

Missing User Warnings

High
Confidence
99% confidence
Finding
The skill states that the keystore password is saved to a local helper file without a clear warning, which defeats much of the protection provided by encrypting the keystore. If an attacker or another local process can read both the keystore and the plaintext password file, the wallet can be decrypted and used immediately.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The function derives a raw private key directly from a supplied mnemonic and returns it to the caller without any warning, confirmation, or minimization controls. In a wallet-management skill, exposing private key material in plaintext materially increases the chance of accidental disclosure via logs, shell history, downstream command usage, or unsafe storage by other functions.

Ssd 3

Medium
Confidence
90% confidence
Finding
Natural-language logs of transaction mentions create a durable record that can reveal wallet ownership patterns, payment intent, counterparties, and operator behavior. This is especially risky in crypto workflows, where contextual metadata is often more sensitive than the raw transaction hash alone.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
4. **Onboarding flow** (automatic when no wallet exists). If the readiness check exits with 1, walk through the scripted steps in order, mirroring their prompts and explicitly asking the user for every required piece of information before running the next script. After the key-material step finishes, share the derived address immediately so the user sees it before we ask them for anything in step 3:
   1. Installation — explain that the script will ensure Foundry/cast is installed so every mentioned `cast` command works before proceeding.
   2. Key material — before running the wallet step, ask whether they want to create a new hot keypair, import a 12/24-word MetaMask-compatible mnemonic (`m/44'/60'/0'/0/0`), or import a private key. Collect the chosen secret, confirm the resulting address right after the step finishes, and tell the user that address before moving on. When generating a new keypair, capture the mnemonic displayed by `cast wallet new`, save it to `~/.agent-wallet/mnemonic-words-<timestamp>.txt`, and tell the user the exact path plus the fact that a job (via `at now + 1 hour` if available or a background `sleep` fallback) will delete that file after 60 minutes so the seed phrase does not linger.
   3. Password — only ask for the keystore password once (there is no confirmation prompt, no save/remember question, and the account name is forced to “agent”). The script saves that password to the local helper file and uses it when creating the keystore, so nothing else is needed from the user for this step.
   4. Network — read aloud the default network list derived from `assets/evm-networks.json`, ask which numbered network they want, and note that the script now auto-selects the first RPC URL from that entry (it saves the matching `CHAIN_ID`/`ETH_RPC_URL` and then just shows the RPC so the user can see which endpoint is being used).
   5. Tokens — the script now prints the token table derived from `assets/evm-network-tokens.json` so it appears directly i
...[truncated 25 chars]
Confidence
87% confidence
Finding
no confirmation

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
return 1
  fi
  if [[ -x "/usr/bin/sudo" ]]; then
    if ! sudo sh -c "$installer > /tmp/at-install.log 2>&1"; then
      warn "Failed to install 'at' with sudo; mnemonic cleanup will be manual."
      return 1
    fi
Confidence
94% confidence
Finding
sudo

Session Persistence

Medium
Category
Rogue Agent
Content
## Scripts

- **Step scripts** — `scripts/01_install_cast.sh`..`06_finish.sh` cover the onboarding flow described in the README: install Foundry/cast, create or import a key, encrypt the keystore, choose network/RPC/tokens (sourced from the JSON assets), and show the resulting address and balance. Run them in order when the user requests onboarding. Each script already prompts for the necessary inputs (mnemonic/private key, password, RPC URL, token details), so relaying the same questions to the user and then running the next script is the recommended approach.
- **Wallet health check** — `scripts/check_wallet.sh` inspects the shared state and reports whether a keystore/address pair already exists; it returns success (0) when a wallet is present and 1 otherwise.
- **Network status** — `scripts/show_network.sh` prints the active network name, chainId, and RPC URL from `~/.agent-wallet/state.env`, or warns if the configuration is incomplete.
- **Wallet removal** — `scripts/remove_wallet.sh` safely deletes the keystore, password stash, and metadata from `~/.agent-wallet/state.env` after an explicit confirmation.
Confidence
88% confidence
Finding
create or import a key, encrypt the keystore, choose network/RPC/tokens (sourced from the JSON assets), and show the resulting address and balance. Run them in order when the user requests onboarding.

External Script Fetching

High
Category
Supply Chain
Content
exit 0
fi
if ! has_cmd curl; then
  err "curl is required but not found. Install curl and re-run."
  exit 1
fi
warn "cast not found. Installing Foundry..."
Confidence
98% confidence
Finding
curl is required but not found. Install curl and re-run." exit 1 fi warn "cast not found. Installing Foundry..." curl -L https://foundry.paradigm.xyz | bash

Chaining Abuse

High
Category
Tool Misuse
Content
exit 1
fi
warn "cast not found. Installing Foundry..."
curl -L https://foundry.paradigm.xyz | bash
enable_strict_path
if ! has_cmd foundryup; then
  for p in "${HOME}/.bashrc" "${HOME}/.zshrc" "${HOME}/.profile"; do
Confidence
99% confidence
Finding
| bash

VirusTotal

66/66 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

No suspicious patterns detected.