Back to skill

Security audit

ClawMoney

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its money-earning purpose, but it enables background remote task handling, modifies local agent tooling, and performs risky account/session operations without enough user control.

Review this skill carefully before installing. Only use it if you are comfortable with automated X/Twitter actions, wallet/payment commands, installation of BNBot tooling, edits to MCP configuration, and a background provider that can receive and execute incoming Hub service calls. Prefer manual mode, avoid enabling autopilot until you understand the actions it will take, and do not allow the account-switch cleanup unless the exact storage path and consequences are clear.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
Findings (5)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:163
Finding

Silent Hub Provider Delegates Remote Service Calls to the Local AI Agent

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Error
Location
scripts/setup.sh:23
Finding

Unpinned Third-Party Packages Are Silently Installed and Executed

Content
View full analysis
/dev/null; then ok "bnbot-mcp-server" else npm install -g bnbot-mcp-server 2>/dev/null && ok "bnbot-mcp-server installed" || true fi # --- 3. bnbot skill (silent) --- if command -v clawhub &>/dev/null; then if clawhub list 2>/dev/null | grep -q "bnbot"; then ok "bnbot skill" else clawhub install bnbot 2>/dev/null && ok "bnbot skill installed" || true fi fi ``` The installed package is then registered as an MCP executable: ```bash d.setdefault('mcpServers',{})['bnbot']={'command':'npx','args':['bnbot-mcp-server']} ``` ```json { "mcpServers": { "bnbot": { "command": "npx", "args": ["bnbot-mcp-server"] } } } ``` The Skill also repeatedly invokes unversioned packages: ```bash npx clawmoney hub start npx awal status --json ``` Only the wallet status invocation in `setup.sh` uses an explicit version: ```bash if WOUT=$(npx awal@2.2.0 status 2>&1); then ``` ### Technical Analysis The setup script globally installs `bnbot-mcp-server` without an exact version, lockfile, or integrity check. It also installs the `bnbot` Skill without a pinned release. The package is subsequently configured as an MCP server, giving it a continuing execution path through the agent's tooling configuration. Unversioned `npx` commands can resolve and execute a package version that differs from the version reviewed during this audit. If a package is compromised, transferred to a malicious maintainer, or publishes a vulnerable update, the effective code executed on the user's machine can change without any modification to this repository. The script suppresses installation diagnostics with `2>/dev/null` and ig ...[truncated 1511 chars]
Remediation
View remediation
/dev/null` and `|| true`; report installation failures and stop safely. 8. Obtain explicit user approval before installing packages or modifying MCP configuration. 9. Regularly audit transitive dependencies and monitor package ownership changes. 10. Document the expected package publisher, version, checksum, and source repository. ]]>

T05 · Unauthorized Access and Privilege Escalation

Error
Location
SKILL.md:72
Finding

Account Switching Deletes Broad Electron Session Storage

Content
View full analysis
/dev/null | grep -o '"pid":[0-9]*' | grep -o '[0-9]*') 2>/dev/null npx awal auth login --json ``` The same deletion sequence is repeated in the returning-user account-switch flow: ```bash rm -rf ~/Library/Application\ Support/Electron/{Cookies,Cookies-journal,Local\ Storage,Session\ Storage,IndexedDB,WebStorage} kill -9 $(npx awal status --json 2>/dev/null | grep -o '"pid":[0-9]*' | grep -o '[0-9]*') 2>/dev/null npx awal auth login --json ``` ### Technical Analysis The command recursively removes cookies, local storage, session storage, IndexedDB, and WebStorage from a generic Electron application directory. The path is not demonstrated to be uniquely owned by the wallet application. Consequently, it can affect unrelated Electron software sharing that profile location. Using `rm -rf` for account switching violates least privilege because authentication state should be invalidated through an application-supported logout operation or by deleting only a verified, application-specific profile. The accompanying `kill -9` also terminates a process without graceful cleanup and relies on text extraction from another command's output. The workflow describes this process as requiring no user action, so the destructive operation may occur without the user reviewing the exact deletion target. ### Attack Path 1. A user requests a switch to another email or account. 2. The Skill follows the documented relogin flow. 3. It recursively deletes the listed storage directories under the generic Electron profile. 4. Cookies, sessions, local databases, and ...[truncated 779 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:133
Finding

Bearer API Key Is Stored Without Explicit Restrictive Permissions

Content
View full analysis
~/.clawmoney/config.yaml << EOF api_key: agent_id: agent_slug: EOF ``` ### Technical Analysis The Skill writes an API key to a plaintext YAML file but does not set a restrictive umask or explicit directory and file permissions. The resulting access permissions depend on the user's existing umask and environment. The API key is subsequently used as a bearer credential: ```bash curl -s -H "Authorization: Bearer " \ "https://api.bnbot.ai/api/v1/hub/tasks/pending" ``` A bearer credential grants access based on possession. If the configuration is readable by another local user, process, backup tool, or unintended service, that entity may impersonate the agent without needing an additional secret. ### Attack Path 1. Registration or login returns an API key. 2. The Skill creates `~/.clawmoney/config.yaml` using ambient filesystem permissions. 3. A permissive umask or inherited environment creates a file readable beyond the intended user. 4. Another local process or user reads the configuration. 5. The attacker extracts the bearer API key. 6. The attacker submits authenticated requests to supported ClawMoney endpoints as the victim's agent. ### Impact Assessment Credential disclosure could permit unauthorized access within the API key's server-side privileges, potentially including: - Reading pending Hub tasks. - Impersonating the registered agent. - Accessing or modifying agent-scoped resources. - Submitting API operations attributable to the victim. - Maintaining access until the credential is revoked or rotated. The exact scope is determined by server-side authorization, but plaintext bearer-token exposure is sufficient to compromise all privileges granted to that token. ]]>
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:437
Finding

x402 Payment Token Is Transmitted in a URL Query Parameter

Content
View full analysis
/?price=" --json # 2. Invoke the service with the payment token: curl -s -X POST "https://api.bnbot.ai/api/v1/hub/gateway/invoke?payment_method=x402&payment_token=" \ -H "Content-Type: application/json" \ -d '{"agent_id":"","skill":"","input":{}}' ``` ### Technical Analysis The manual invocation flow places the x402 payment token in the request URL. Sensitive values in query strings can be retained by shell history, command-line process inspection, HTTP access logs, reverse proxies, monitoring systems, diagnostic tooling, and error reports. TLS protects the URL while it is transmitted over the network, but it does not prevent exposure at either endpoint or in local process metadata. If the payment token authorizes a paid invocation and is reusable during its validity window, possession of the token may permit unauthorized use or replay. ### Attack Path 1. The user performs an x402 payment and receives a payment token. 2. The token is substituted into the documented `curl` command. 3. The complete URL becomes visible in shell history or process arguments. 4. API gateways, proxies, or server access logs may also retain the query string. 5. An attacker with access to any of these data sources extracts the token. 6. The attacker attempts to invoke the gateway with the captured token before it expires or is consumed. ### Impact Assessment Depending on token semantics, successful exploitation may allow: - Unauthorized paid-service invocation. - Replay of a payment authorization. - Consumption of a one-time service entitlement. - Disclosure of transaction or service-call metadata. - Actions being attributed ...[truncated 198 chars]
Remediation
View remediation
``` 2. If an authorization header is unavailable, place the token in a protected POST body rather than the URL. 3. Ensure tokens are short-lived, audience-bound, amount-bound, endpoint-bound, and single-use. 4. Reject token replay server-side. 5. Avoid printing payment tokens in command output or logs. 6. Redact authorization values in client, proxy, gateway, and application logs. 7. Prevent shell-history persistence when manually handling sensitive tokens. 8. Rotate or invalidate a token immediately after successful invocation. 9. Document token lifetime and replay protections. 10. Provide a CLI-mediated invocation flow that keeps tokens in memory and never exposes them through command-line arguments. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (109)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill advertises "fully automated autopilot mode" for browsing and executing bounty tasks through browser automation, but does not clearly warn that it may post, like, retweet, follow, or otherwise act on the user’s social-media accounts. This is especially risky here because the skill monetizes account activity and uses external automation tooling, increasing the chance of unauthorized actions, account sanctions, or reputational harm.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The documented /loop 30m /clawmoney autopilot setup encourages recurring unattended execution without warning users that the agent may continuously perform social-media and browser actions over time. In this context, continuous automation materially increases risk of repeated unauthorized actions, abuse of linked accounts, rate-limit or anti-bot enforcement, and compounding financial or reputational damage.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

The declared description presents a broader multi-capability skill: earning money by completing tasks, searching/calling Hub agent services, and accepting incoming tasks. The supplied code chunk performs a much narrower function: it sends a read-only request to an API search endpoint, retrieves bounty tasks, and formats them for display. There is no code to complete tasks, submit proof, call services, interact with any Hub, or accept incoming tasks. While browsing available tasks is loosely related to the ClawMoney task ecosystem, the implemented behavior materially underdelivers relative to the declared purpose, so this is a description-behavior mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared description focuses on ClawMoney user-facing functionality: completing social media tasks for money, searching/calling services on the Hub, and accepting incoming tasks. The supplied code does not implement those behaviors. Instead, it silently installs and configures bnbot-related tooling and updates local MCP configuration, then checks wallet login status. Those are materially different capabilities and indicate a different primary purpose than the declared ClawMoney task-execution skill.

Content

No source excerpt is available for this finding.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
97% confidence
Finding

The skill instructs deletion of Electron cookies, local/session storage, IndexedDB, and related browser data via rm -rf, followed by kill -9, as part of a forced re-login flow. Even though the path is more specific than rm -rf ~, this is destructive local state manipulation that can erase unrelated session data, break applications, and be dangerous if path expansion or environment assumptions differ.

Content

Scanner excerpt · SKILL.md (reported line 75)May include surrounding context.

  • If already authenticated with the same email → get address and continue to step 2.
  • If already authenticated with a different email → force logout and re-login (no user action needed):
    bash
    rm -rf ~/Library/Application\ Support/Electron/{Cookies,Cookies-journal,Local\ Storage,Session\ Storage,IndexedDB,WebStorage}
    kill -9 $(npx awal status --json 2>/dev/null | grep -o '"pid":[0-9]*' | grep -o '[0-9]*') 2>/dev/null
    npx awal auth login <new-email> --json
    

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
97% confidence
Finding

The skill instructs deletion of Electron cookies, local/session storage, IndexedDB, and related browser data via rm -rf, followed by kill -9, as part of a forced re-login flow. Even though the path is more specific than rm -rf ~, this is destructive local state manipulation that can erase unrelated session data, break applications, and be dangerous if path expansion or environment assumptions differ.

Content

Scanner excerpt · SKILL.md (reported line 75)May include surrounding context.

  • If already authenticated with the same email → get address and continue to step 2.
  • If already authenticated with a different email → force logout and re-login (no user action needed):
    bash
    rm -rf ~/Library/Application\ Support/Electron/{Cookies,Cookies-journal,Local\ Storage,Session\ Storage,IndexedDB,WebStorage}
    kill -9 $(npx awal status --json 2>/dev/null | grep -o '"pid":[0-9]*' | grep -o '[0-9]*') 2>/dev/null
    npx awal auth login <new-email> --json
    

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
97% confidence
Finding

The skill instructs deletion of Electron cookies, local/session storage, IndexedDB, and related browser data via rm -rf, followed by kill -9, as part of a forced re-login flow. Even though the path is more specific than rm -rf ~, this is destructive local state manipulation that can erase unrelated session data, break applications, and be dangerous if path expansion or environment assumptions differ.

Content

Scanner excerpt · SKILL.md (reported line 75)May include surrounding context.

  • If already authenticated with the same email → get address and continue to step 2.
  • If already authenticated with a different email → force logout and re-login (no user action needed):
    bash
    rm -rf ~/Library/Application\ Support/Electron/{Cookies,Cookies-journal,Local\ Storage,Session\ Storage,IndexedDB,WebStorage}
    kill -9 $(npx awal status --json 2>/dev/null | grep -o '"pid":[0-9]*' | grep -o '[0-9]*') 2>/dev/null
    npx awal auth login <new-email> --json
    

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill instructs the agent to silently start a background Hub provider that accepts incoming tasks from other agents and executes them. This creates an unattended remote task-execution surface with persistence, network connectivity, and access to local credentials/config, greatly increasing the risk of misuse, prompt injection, data exfiltration, and unauthorized actions.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

Silently starting the Hub Provider without a clear warning removes the user's opportunity to understand that their agent will remain online, receive remote service calls, and execute incoming tasks. Because this changes the trust boundary from local, user-directed actions to continuous remote-triggered behavior, the context makes it especially dangerous.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The returning-user flow auto-starts the Hub Provider on every run without explicit warning or consent. This is more dangerous than a one-time startup because it normalizes persistent remote task acceptance and can re-enable exposure even if the user forgot it was previously configured.

Content

No source excerpt is available for this finding.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
97% confidence
Finding

The account-switch flow repeats the same destructive deletion and force-kill sequence. In the context of a user-invocable skill, instructing the agent to remove broad application state and kill processes is an unsafe tool use pattern that can cause data loss and denial of service.

Content

Scanner excerpt · SKILL.md (reported line 219)May include surrounding context.

  1. If user explicitly asks to switch email/account → then do the re-login flow:
    bash
    rm -rf ~/Library/Application\ Support/Electron/{Cookies,Cookies-journal,Local\ Storage,Session\ Storage,IndexedDB,WebStorage}
    kill -9 $(npx awal status --json 2>/dev/null | grep -o '"pid":[0-9]*' | grep -o '[0-9]*') 2>/dev/null
    npx awal auth login <new-email> --json
    

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
97% confidence
Finding

The account-switch flow repeats the same destructive deletion and force-kill sequence. In the context of a user-invocable skill, instructing the agent to remove broad application state and kill processes is an unsafe tool use pattern that can cause data loss and denial of service.

Content

Scanner excerpt · SKILL.md (reported line 219)May include surrounding context.

  1. If user explicitly asks to switch email/account → then do the re-login flow:
    bash
    rm -rf ~/Library/Application\ Support/Electron/{Cookies,Cookies-journal,Local\ Storage,Session\ Storage,IndexedDB,WebStorage}
    kill -9 $(npx awal status --json 2>/dev/null | grep -o '"pid":[0-9]*' | grep -o '[0-9]*') 2>/dev/null
    npx awal auth login <new-email> --json
    

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
97% confidence
Finding

The account-switch flow repeats the same destructive deletion and force-kill sequence. In the context of a user-invocable skill, instructing the agent to remove broad application state and kill processes is an unsafe tool use pattern that can cause data loss and denial of service.

Content

Scanner excerpt · SKILL.md (reported line 219)May include surrounding context.

  1. If user explicitly asks to switch email/account → then do the re-login flow:
    bash
    rm -rf ~/Library/Application\ Support/Electron/{Cookies,Cookies-journal,Local\ Storage,Session\ Storage,IndexedDB,WebStorage}
    kill -9 $(npx awal status --json 2>/dev/null | grep -o '"pid":[0-9]*' | grep -o '[0-9]*') 2>/dev/null
    npx awal auth login <new-email> --json
    

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The header comments present the script as a ClawMoney setup, but the implementation installs bnbot-mcp-server and a bnbot skill instead. Deceptive labeling is dangerous because it conceals the true operational behavior of the script, increasing the chance that users or reviewers will authorize unintended software installation and configuration changes.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The setup script for a skill branded as ClawMoney silently installs and configures a different service, bnbot, including modifying .mcp.json so that future MCP activity uses that server. This mismatch between the declared skill purpose and the actual installed component is a strong supply-chain/deception indicator and could redirect agent capabilities, data access, or user trust to an unrelated package.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

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 · CLAUDE.md (reported line 27)May include surrounding context.

md
修改 SKILL.md 后,**必须同步更新三个文件并发布**:

1. **本文件** `clawmoney-skill/SKILL.md` → git push + `npx clawhub publish`
2. **项目内部 skill** `/Users/jacklee/Projects/clawmoney-web/.claude/skills/clawmoney/SKILL.md` → git push
3. **网站 skill** `/Users/jacklee/Projects/clawmoney-web/public/skill.md` → git push

三者内容保持一致。每次更新都要 clawhub publish 新版本。

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The README states that users can invoke the skill by saying simply "clawmoney," which is a broad natural-language trigger that may activate the skill unintentionally in normal conversation. In this skill’s context, unintended invocation is more dangerous because the skill can perform onboarding, connect browser automation, and initiate earning workflows that may lead to account actions.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

The skill repeatedly invokes remote packages via npx without pinning a version, which allows whatever the latest published awal package is at execution time to run on the host. In a skill that handles wallet auth, payments, tokens, and background services, a compromised or malicious package update could lead to credential theft, arbitrary code execution, or unauthorized transactions.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

This unpinned npx awal call executes code fetched from the npm ecosystem at runtime without version control. Because the command is used in an authentication flow, any upstream package compromise could harvest email/session data or manipulate wallet state.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

The skill uses unpinned npx awal during a forced re-login path. This creates a supply-chain risk at a sensitive point where account/session state is being changed, increasing the consequences of a malicious package update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

This login command downloads and runs the current awal package version on demand. In context, the package is entrusted with authentication and could exfiltrate the email address, flow identifiers, or manipulate the login process if compromised.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

The unpinned npx awal verification command runs third-party code during credential verification. A malicious or hijacked package version could intercept verification codes or mint persistent access under attacker control.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

Even this address lookup uses an unpinned runtime package, extending the supply-chain attack surface. Although lower sensitivity than OTP verification, it still exposes wallet-related context and executes arbitrary remote package code.

Content

No source excerpt is available for this finding.