Back to skill

Security audit

moltycash

Security checks for vulnerabilities and agentic risk

Overview

This skill is a real-money crypto payment helper, but it exposes raw wallet private keys to an unpinned npm CLI and does not require clear transaction confirmation safeguards.

Review carefully before installing. Use only a pinned and verified CLI version, avoid funded primary wallets, prefer a low-balance dedicated payment wallet or external signer, and require manual confirmation of recipient, network, amount, fees, and final broadcast before any transaction.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Error
Location
SKILL.md:16
Finding
Unpinned npm Package Executes with Access to Cryptocurrency Private Keys## Vulnerability Details **File Location**: `SKILL.md:16-38` **Vulnerability Type**: Unpinned third-party dependency with access to high-value credentials **Risk Level**: High ### Vulnerable Code ```bash # For Base export EVM_PRIVATE_KEY="your_base_private_key" # For Solana export SVM_PRIVATE_KEY="your_solana_private_key" ``` Send your first payment: ```bash npx moltycash send KarpathyMolty 1¢ ``` ## Install ```bash # Run directly (recommended) npx moltycash --help # Or install globally npm install -g moltycash ``` ### Technical Analysis The Skill directs users to place raw Base or Solana wallet private keys in environment variables and then execute `moltycash` through an unpinned `npx` command. The command does not specify a reviewed package version, integrity hash, lockfile, or immutable source. Depending on local npm behavior and cache state, `npx moltycash` can retrieve the current package release from the configured npm registry and execute it. That process inherits the caller's environment, including `EVM_PRIVATE_KEY` and `SVM_PRIVATE_KEY`. Consequently, any package version executed this way can read and transmit the private keys or use them to sign transactions. Access to signing material is functionally necessary for the documented payment workflow, but providing an externally retrieved CLI with unrestricted raw private keys is broader than the safer minimum privilege. A restricted signer, hardware-wallet approval flow, or narrowly scoped delegated wallet would reduce the authority exposed to the dependency. The alternative global installation command also introduces a mutable third-party executable into the user's environment. The reviewed project contains no bundled implementation through which the package's behavior could be independently verified. The later recommendation to store credentials in `~/.openclaw/.env` with file mode `600` and directory mode `700` is a reasonable local-ac ...[truncated 2285 chars]
Remediation
## Remediation Suggestions 1. Pin the CLI to a specifically reviewed version instead of executing the latest release: ```bash npx --yes moltycash@2.0.0 --help npx --yes moltycash@2.0.0 send KarpathyMolty 1¢ ``` Version pinning reduces unexpected updates but does not alone establish trust. 2. Publish or include auditable source code, a lockfile, package provenance, and documented release artifacts. Verify registry signatures or provenance and integrity metadata before execution. 3. Prefer a local, locked installation followed by dependency review over downloading code at payment time. Avoid recommending global installation unless operationally necessary. 4. Do not expose a primary or high-value wallet's raw private key. Use a dedicated low-balance payment wallet with only the funds required for the intended transaction. 5. Prefer hardware-wallet signing, an operating-system-backed keystore, an external signer, or a delegated wallet with explicit spending limits. The CLI should request signing without receiving exportable private-key material. 6. Require an explicit confirmation displaying the resolved recipient address, network, token, amount, fees, and total authorization before signing or broadcasting a transaction. 7. Document dependency-verification procedures and warn users that any process launched with these environment variables can access the keys. 8. Retain the recommended `chmod 600 ~/.openclaw/.env` and `chmod 700 ~/.openclaw` controls, while clarifying that filesystem permissions do not protect secrets from authorized processes executed under the same user account. 9. Rotate wallet credentials and transfer remaining assets to a new wallet immediately if an untrusted package version may have received the private key.
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
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (10)

Missing User Warnings

High
Confidence
97% confidence
Finding
The skill describes sending USDC but does not prominently warn that blockchain transfers are irreversible and that the tool uses highly sensitive wallet private keys from environment variables. In this context, missing warnings materially increase the likelihood of user mistakes, mis-sends, and unsafe secret handling with permanent financial consequences.

Vague Triggers

Medium
Confidence
88% confidence
Finding
The description 'Use when the user wants to send cryptocurrency payments, tip someone, or pay a molty username' is broad enough that an agent may trigger this skill for loosely related payment requests without a sufficiently explicit user confirmation flow. Because the skill can cause real-value cryptocurrency transfers, overbroad routing increases the chance of accidental invocation and unintended financial actions.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
Using `npx moltycash` without pinning a specific package version causes the latest package from the npm registry to be fetched and executed at runtime. In a skill that handles cryptocurrency transfers and relies on wallet private keys in environment variables, a compromised or malicious package update could immediately gain access to secrets and trigger unauthorized payments.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
This example invokes `npx moltycash` without a pinned version, which delegates trust to whatever package version is current in the registry when the command is run. Because the tool is explicitly used with `EVM_PRIVATE_KEY` or `SVM_PRIVATE_KEY`, a supply-chain compromise could expose private keys or submit fraudulent irreversible transfers.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The unversioned `npx moltycash` example can execute newly published code without review. In the context of a payment skill that accesses blockchain wallet credentials and performs irreversible asset transfers, that materially raises the risk of secret theft and financial loss.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
This sample command executes an unpinned npm package, exposing users to package substitution or malicious update risk. Since the tool sends USDC and uses private keys from environment variables, exploitation could lead directly to wallet compromise or unauthorized transfers.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
Running `npx moltycash` without version pinning means the executed code may change over time, including potentially malicious registry content. In a crypto-payment workflow, that creates a direct pathway to stealing wallet keys, altering payment destinations, or draining funds.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The final example also relies on unpinned `npx` resolution, which is dangerous because it executes code retrieved from the registry at runtime. Given the documented use of private keys and irreversible blockchain transfers, any upstream compromise would have severe financial consequences.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
### Security Best Practices

1. **File permissions**: `chmod 600 ~/.openclaw/.env`
2. **State directory**: `chmod 700 ~/.openclaw`
3. **Run security audit**: `openclaw security audit --deep`
4. **Never commit** credentials to version control
Confidence
80% confidence
Finding
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
### Security Best Practices

1. **File permissions**: `chmod 600 ~/.openclaw/.env`
2. **State directory**: `chmod 700 ~/.openclaw`
3. **Run security audit**: `openclaw security audit --deep`
4. **Never commit** credentials to version control
Confidence
80% confidence
Finding
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Static analysis

No suspicious patterns detected.