Back to skill

Security audit

Clawhub Oneshot

Security checks for vulnerabilities and agentic risk

Overview

This skill is for real-world paid agent actions and is mostly purpose-aligned, but it exposes wallet credentials to unpinned packages and normalizes purchases and outreach without strong approval guidance.

Review carefully before installing. Use exact pinned versions, avoid `npx -y` with wallet secrets, prefer narrowly scoped CDP credentials over raw private keys, use low-balance wallets and test mode first, and require explicit human approval before purchases, paid research, emails, SMS, calls, website builds, or data enrichment involving personal information.

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

T08 · Insecure Dependencies

Error
Location
SKILL.md:19
Finding
Unpinned SDK Dependency Is Entrusted with Wallet Credentials<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 19-21, 27-29, 41-46, and 57-78 **Vulnerability Type**: Unpinned security-sensitive third-party dependency **Risk Level**: High ### Vulnerable Code ```bash npm install @oneshot-agent/sdk ``` ```typescript // Reads CDP_API_KEY_ID, CDP_API_KEY_SECRET, CDP_WALLET_SECRET from env const agent = await OneShot.create({ cdp: true }); ``` ```typescript const agent = new OneShot({ privateKey: process.env.ONESHOT_WALLET_PRIVATE_KEY }); ``` ```bash export CDP_API_KEY_ID="your-api-key-id" export CDP_API_KEY_SECRET="your-api-key-secret" export CDP_WALLET_SECRET="your-wallet-secret" ``` ```typescript const agent = await OneShot.create({ cdp: true }); ``` ```bash export ONESHOT_WALLET_PRIVATE_KEY="0xYourPrivateKey" ``` ```typescript const agent = new OneShot({ privateKey: process.env.ONESHOT_WALLET_PRIVATE_KEY }); ``` ### Technical Analysis The installation command does not specify an exact package version or integrity value. Consequently, the package resolved at installation time can differ from the version originally reviewed. The SDK is then explicitly given access to CDP wallet credentials or a raw wallet private key. Because npm packages execute within the consuming process, a compromised, malicious, or unexpectedly changed SDK release could read these credentials, transmit them to an external service, alter transaction parameters, or request unauthorized signatures. Transitive dependencies can create the same exposure. The repository contains only documentation, so the implementation of `@oneshot-agent/sdk` could not be reviewed during this audit. There is no evidence in `SKILL.md` that the current package is malicious; the confirmed issue is the unsafe trust model created by installing an unpinned package and granting it wallet authority. ### Attack Path 1. An attacker compromises the SDK publisher account, release pipeline, package, or one of its transitive dependencies. 2. The attack ...[truncated 1005 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin the SDK to a reviewed exact version rather than using an unconstrained installation: ```bash npm install --save-exact @oneshot-agent/sdk@<reviewed-version> ``` 2. Commit and enforce a lockfile, and use `npm ci` in controlled deployments. 3. Verify registry provenance, package signatures where supported, and package integrity hashes. 4. Audit the SDK source, release artifacts, lifecycle scripts, and transitive dependencies before granting access to production credentials. 5. Prefer isolated CDP credentials with only the minimum required permissions over raw private keys. 6. Use a dedicated low-balance wallet with spending, destination, rate, and transaction-value limits. 7. Keep production credentials outside general-purpose process environments where possible; use a managed secret store and short-lived credentials. 8. Require explicit human approval for high-value purchases, arbitrary destinations, or production-mode transactions. 9. Monitor wallet activity and rotate or revoke credentials immediately if package compromise is suspected. ]]>

T08 · Insecure Dependencies

Error
Location
SKILL.md:252
Finding
Automatic Execution of Unpinned MCP Package with Wallet Secrets<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 252-283 **Vulnerability Type**: Automatic execution of an unpinned third-party package in a secret-bearing environment **Risk Level**: High ### Vulnerable Code ```bash npm install -g @oneshot-agent/mcp-server ``` ```json { "mcpServers": { "oneshot": { "command": "npx", "args": ["-y", "@oneshot-agent/mcp-server"], "env": { "CDP_API_KEY_ID": "your-api-key-id", "CDP_API_KEY_SECRET": "your-api-key-secret", "CDP_WALLET_SECRET": "your-wallet-secret" } } } } ``` ```json { "mcpServers": { "oneshot": { "command": "npx", "args": ["-y", "@oneshot-agent/mcp-server"], "env": { "ONESHOT_WALLET_PRIVATE_KEY": "0xYourPrivateKey" } } } } ``` ### Technical Analysis The MCP configuration invokes `npx -y` using a package name without an exact version. This can cause npm to retrieve and execute the package version resolved at launch time without an interactive confirmation step. The same process is explicitly supplied with CDP wallet secrets or a raw wallet private key. This combines mutable remote dependency resolution, automatic code execution, and exposure of high-value credentials. A malicious package release could access the configured environment as soon as the MCP client launches it, even before the user intentionally invokes a payment-related MCP tool. The separate global installation command is also unpinned. Moreover, the shown MCP configuration invokes `npx` rather than a fixed, locally reviewed binary, so the configuration does not guarantee that the globally installed artifact is the one executed. No evidence establishes that the current MCP package is malicious. The vulnerability is the automatic execution of an unpinned package while wallet credentials are directly available to that process. ### Attack Path 1. An attacker compromises the MCP package, its maintainer account, release pip ...[truncated 1181 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Do not use an unversioned `npx -y` command for a server that receives wallet credentials. 2. Install a reviewed exact version locally and commit the corresponding lockfile: ```bash npm install --save-exact @oneshot-agent/mcp-server@<reviewed-version> ``` 3. Configure the MCP client to invoke the fixed local executable directly, such as: ```json { "command": "./node_modules/.bin/oneshot-mcp-server", "args": [] } ``` 4. Verify package integrity, provenance, lifecycle scripts, and transitive dependencies before deployment. 5. Run the MCP server in a restricted container or sandbox with minimal filesystem, network, and operating-system permissions. 6. Supply narrowly scoped, revocable CDP credentials instead of raw private keys whenever possible. 7. Use a dedicated wallet with low balances, transaction limits, destination allowlists, and monitoring. 8. Avoid exposing unrelated environment variables to the MCP process. Retrieve secrets through a controlled secret broker where feasible. 9. Require manual approval for production transactions and rotate all wallet credentials after any suspected dependency compromise. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Missing User Warnings

High
Confidence
96% confidence
Finding
The skill explicitly enables autonomous external actions including email, calls, research, purchases, and data enrichment, but it does not prominently warn that these operations may contact third parties, process personal data, or spend funds. In an agent setting, missing consent and impact warnings can cause unauthorized transactions, privacy violations, and unintended real-world effects.

Missing User Warnings

High
Confidence
98% confidence
Finding
The commerce example demonstrates placing a real purchase with shipping details and a spending cap but does not clearly warn that it can create actual orders using available funds. In the context of an autonomous agent commerce SDK, this omission is especially dangerous because it can lead to unauthorized purchases, misuse of personal data, and financial loss.

Vague Triggers

Medium
Confidence
96% confidence
Finding
The activation guidance is broad enough to match many generic agent tasks, which increases the chance this skill is invoked in contexts where external actions, payments, or outreach were not the user's clear intent. Because this skill can trigger real-world communications and commerce, over-broad routing meaningfully raises the risk of unintended spending, outreach, or data disclosure.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The examples show direct email, SMS, and voice actions as routine SDK calls without emphasizing that they will contact real recipients outside the system. This normalizes immediate execution and increases the chance an integrating agent will send messages or place calls without clear user authorization or recipient verification.