Back to skill

Security audit

Dogecoin Node

Security checks for vulnerabilities and agentic risk

Overview

This Dogecoin node skill has a coherent purpose, but it can send real cryptocurrency through unsafe shell commands without confirmation and asks users to install wallet-related executables without integrity checks.

Review this skill carefully before installing. Only use it with a wallet/account you are prepared to expose to the skill, add manual transaction confirmation before any send operation, validate all Dogecoin addresses and amounts, verify downloaded Dogecoin binaries with official checksums or signatures, and avoid scheduling mutable workspace scripts unless permissions and ownership are locked down.

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

T09 · Insecure Skill Coding Practices

Error
Location
package.json:33
Finding

Shell Command Injection Through Unquoted User-Controlled Parameters

Content
View full analysis

Vulnerability Details

File Location: package.json, lines 33–65
Vulnerability Type: OS command injection through unsafe template interpolation
Risk Level: High
Category: T09: Insecure Skill Coding Practices

Vulnerable Code

json
{
  "trigger": "/dogecoin-node balance",
  "description": "Fetch the balance of a specific Dogecoin address",
  "parameters": [
    { "name": "address", "type": "string", "required": true }
  ],
  "handler": "bash",
  "script": "$HOME/dogecoin-cli -datadir=$HOME/.dogecoin getreceivedbyaddress {{address}}"
},
{
  "trigger": "/dogecoin-node send",
  "description": "Send DOGE to a recipient",
  "parameters": [
    { "name": "recipient", "type": "string", "required": true },
    { "name": "amount", "type": "number", "required": true }
  ],
  "handler": "bash",
  "script": "$HOME/dogecoin-cli -datadir=$HOME/.dogecoin sendtoaddress {{recipient}} {{amount}}"
},
{
  "trigger": "/dogecoin-node txs",
  "description": "List recent transactions for an address",
  "parameters": [
    { "name": "address", "type": "string", "required": true }
  ],
  "handler": "bash",
  "script": "$HOME/dogecoin-cli -datadir=$HOME/.dogecoin listreceivedbyaddress 1 true true {{address}}"
}

Technical Analysis

The address, recipient, and amount parameters are inserted directly into command strings handled by Bash. They are not safely passed as discrete process arguments, shell-escaped, quoted, or validated against strict Dogecoin address and amount formats.

If the OpenClaw template engine performs direct substitution before invoking Bash, shell metacharacters embedded in an argument can alter the command structure. Declaring a parameter as a JSON string or number does not by itself establish that runtime input is syntactically safe for a shell.

This is particularly severe for the send handler because it operates against a wallet-enabled Dogec ...[truncated 1817 chars]

Remediation
View remediation

Remediation Suggestions

  1. Do not construct wallet commands through Bash string interpolation. Invoke dogecoin-cli using an API that accepts an executable and an argument array.
  2. Validate recipient and address inputs before execution:
    • Require the expected Dogecoin address encoding and length.
    • Reject whitespace, shell metacharacters, control characters, and trailing data.
    • Prefer an authoritative Dogecoin address-validation routine over a permissive regular expression.
  3. Parse amounts into a decimal or fixed-point representation and enforce explicit minimum, maximum, precision, and balance limits.
  4. Add transaction confirmation or approval for all fund-transfer operations.
  5. Run wallet commands under a dedicated, minimally privileged account.
  6. Restrict the RPC interface to the exact commands needed by the Skill and protect the wallet with appropriate operational controls.
  7. Add security tests containing spaces, quotes, command separators, substitutions, redirections, and newline characters to confirm that inputs can never affect command structure.

T08 · Insecure Dependencies

Warning
Location
SKILL.md:47
Finding

Dogecoin Executables Downloaded and Installed Without Integrity Verification

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 47–66
Vulnerability Type: Unverified executable dependency installation
Risk Level: Medium
Category: T08: Insecure Dependencies

Vulnerable Code

bash
cd ~/downloads
curl -L -o dogecoin-1.14.9-x86_64-linux-gnu.tar.gz \
  [https://github.com/dogecoin/dogecoin/releases/download/v1.14.9/dogecoin-1.14.9-x86_64-linux-gnu.tar.gz](https://github.com/dogecoin/dogecoin/releases/download/v1.14.9/dogecoin-1.14.9-x86_64-linux-gnu.tar.gz)
bash
tar xf dogecoin-1.14.9-x86_64-linux-gnu.tar.gz
mkdir -p ~/bin/dogecoin-1.14.9
cp -r dogecoin-1.14.9/* ~/bin/dogecoin-1.14.9/
ln -sf ~/bin/dogecoin-1.14.9/bin/dogecoind ~/dogecoind
ln -sf ~/bin/dogecoin-1.14.9/bin/dogecoin-cli ~/dogecoin-cli

Technical Analysis

The documented installation flow downloads an archive containing native executables and immediately extracts and installs them without checking an official cryptographic checksum or release signature.

The intended host is the official github.com/dogecoin/dogecoin project rather than a personal repository or pastebin. Nevertheless, TLS and a recognizable source URL do not verify that the retrieved archive is the exact artifact expected by the Skill. A compromised release account, substituted artifact, unsafe redirect, local archive replacement, or download-path compromise could result in malicious binaries being installed.

The source command also incorrectly embeds a Markdown link in a shell code block. Copied literally, that text is not a valid plain URL argument and may cause installation failure. Users might manually alter the command or obtain the archive through an unreviewed source as a workaround, further weakening provenance.

Attack Path

  1. A user follows the documented setup procedure.
  2. The download endpoint, release artifact, redirect target, network environment, or pre-existing local archive supplies a modified t ...[truncated 1306 chars]
Remediation
View remediation

Remediation Suggestions

  1. Replace the Markdown-formatted link with a plain, fixed HTTPS URL suitable for shell use.
  2. Publish or reference the official SHA-256 digest for the exact release artifact and verify it before extraction.
  3. Verify the release manifest or archive using the official Dogecoin release-signing keys and document how users authenticate those keys.
  4. Make installation fail closed if either checksum or signature verification fails.
  5. Download into a newly created directory with restrictive permissions and reject unexpected pre-existing files.
  6. Inspect the archive member paths before extraction and use extraction options that prevent path traversal and unsafe ownership changes.
  7. Prefer a trusted operating-system package source where available, while still pinning an approved version and validating repository provenance.
  8. Document a controlled upgrade process so executable versions cannot change silently.

T09 · Insecure Skill Coding Practices

Warning
Location
package.json:67
Finding

Execution and Periodic Scheduling of a Mutable Workspace Script

Content
View full analysis

Vulnerability Details

File Location: package.json, lines 67–72; related setup in SKILL.md, lines 153–217; scheduling guidance in HEARTBEAT.md, lines 43–45
Vulnerability Type: Untrusted mutable script execution
Risk Level: Medium
Category: T09: Insecure Skill Coding Practices

Vulnerable Code

json
{
  "trigger": "/dogecoin-node health",
  "description": "Run the automated health check script",
  "handler": "bash",
  "script": "bash $HOME/.openclaw/workspace/archive/health/doge_health_check.sh"
}

The Skill creates the script in a general workspace and marks it executable:

bash
mkdir -p ~/.openclaw/workspace/archive/health/

cat > ~/.openclaw/workspace/archive/health/doge_health_check.sh <<'EOF'
#!/bin/bash

# --- Dogecoin Health Check Automation ---
echo "Starting Health Check: $(date)"
DOGE_CLI="$HOME/dogecoin-cli"
DATA_DIR="$HOME/.dogecoin"
...
EOF

chmod +x ~/.openclaw/workspace/archive/health/doge_health_check.sh

HEARTBEAT.md then recommends periodic execution:

markdown
### Automation & Cron Setup
- **Automated Health Script:** `~/.openclaw/workspace/archive/health/doge_health_check.sh`
- **Dashboard Integration:** Navigate to the [Cron Jobs](http://localhost:18789/cron-jobs) tab and add a new entry pointing to the health script.
- **Recommended Interval:** `*/30 * * * *` (Every 30 minutes).

Technical Analysis

The health command does not execute immutable code from the reviewed package. It executes a script from ~/.openclaw/workspace/archive, a location intended for workspace data and potentially writable by the gateway account, other Skills, or processes operating as the same user.

The code does not verify the script's owner, permissions, content hash, signature, or canonical path before passing it to Bash. Consequently, modification of that file converts a legitimate health operation into an arbitrary code-exec ...[truncated 1695 chars]

Remediation
View remediation

Remediation Suggestions

  1. Ship the health-check implementation inside the versioned Skill package rather than creating it in a general writable workspace.
  2. Execute it through a fixed canonical path owned by the Skill installation account.
  3. Restrict file and parent-directory permissions so unrelated Skills and processes cannot modify the script.
  4. Before execution, verify ownership, reject symbolic links, and validate a package-pinned cryptographic hash or signature.
  5. Prefer implementing the health check directly in reviewed application code without invoking Bash.
  6. If scheduling is necessary, configure a dedicated minimally privileged service account and reference only immutable packaged code.
  7. Ensure the scheduled task cannot access wallet-spending operations when it only needs node status, disk usage, price data, and database integrity checks.
  8. Document removal and upgrade procedures for the scheduled task to prevent stale scripts from continuing to execute.
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
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (14)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The /dogecoin-node send command directly invokes sendtoaddress with user-supplied recipient and amount and provides no confirmation, dry-run, or warning before transferring funds. In a cryptocurrency-management skill, this makes accidental or socially engineered irreversible fund transfers much more likely, especially because blockchain transactions cannot usually be undone.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
80% confidence
Finding

The manifest describes a Dogecoin Core full node skill with RPC access, blockchain tools, and optional tipping. This heartbeat file operationalizes additional components such as a dedicated SQLite tipping database and Telegram command parsing workflows, making those broader integrations part of the expected behavior rather than merely optional support.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This markdown file includes the sendtoaddress <address> <amount> command, which can transfer cryptocurrency and affect user funds, but it provides no warning about irreversibility, address verification, or the need to confirm intent. For markdown files, omission of warnings about actions that can affect user data or system integrity qualifies as a missing user warning.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill exposes commands for sending DOGE and logging tipping activity without prominently warning that cryptocurrency transfers are irreversible and that transaction/tipping records are persisted. In a wallet-management context, missing safety warnings increase the chance of accidental fund loss, privacy surprises, and unsafe operator use.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

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

md
1. A fully synced Dogecoin Core RPC node.
2. Dogecoin `rpcuser` and `rpcpassword` configured in `dogecoin.conf`.
3. OpenClaw Gateway up-to-date.
4. `jq` installed on the host (`sudo apt install jq`).


### Steps to Configure Node

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

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

bash
tar xf dogecoin-1.14.9-x86_64-linux-gnu.tar.gz
mkdir -p ~/bin/dogecoin-1.14.9
cp -r dogecoin-1.14.9/* ~/bin/dogecoin-1.14.9/
ln -sf ~/bin/dogecoin-1.14.9/bin/dogecoind ~/dogecoind
ln -sf ~/bin/dogecoin-1.14.9/bin/dogecoin-cli ~/dogecoin-cli

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill advertises a tipping feature that implies DOGE transfers, but the provided Python code only records metadata in SQLite and never invokes Dogecoin RPC/CLI to move funds. This mismatch can cause operators or users to wrongly believe payments were executed, creating financial integrity issues, disputes, and unsafe downstream automation.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

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

md
### Tipping Script Setup:


# 1. To enable the tipping feature, create dogecoin_tipping.py at:
# ~/.openclaw/workspace/archive/tipping/ with the following code:

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

md
"trigger": "/dogecoin-node price",
      "description": "Fetch the current DOGE/USD price via CoinGecko",
      "handler": "bash",
      "script": "curl -s 'https://api.coingecko.com/api/v3/simple/price?ids=dogecoin&vs_currencies=usd' | jq -r '.dogecoin.usd'"
    },
    {
      "trigger": "/dogecoin-node send",

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 · package.json (reported line 46)May include surrounding context.

json
"trigger": "/dogecoin-node price",
      "description": "Fetch the current DOGE/USD price via CoinGecko",
      "handler": "bash",
      "script": "curl -s 'https://api.coingecko.com/api/v3/simple/price?ids=dogecoin&vs_currencies=usd' | jq -r '.dogecoin.usd'"
    },
    {
      "trigger": "/dogecoin-node send",

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
94% confidence
Finding

The sample workflow prints 'Sending tips...' even though the function only appends rows to a local database. This is misleading behavior that can reinforce a false belief that transfers occurred and may lead to accounting errors or user deception.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
97% confidence
Finding

The /dogecoin-node help command claims the available commands are prefixed with '/dogecoin ...', but the manifest-defined triggers elsewhere in the file use '/dogecoin-node ...'. This is an active documentation contradiction that could mislead users about how to invoke wallet and node-management actions.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
89% confidence
Finding

The dependency version is specified with a caret (^5.1.7), which allows newer minor/patch releases to be installed without strict reproducibility. In security-sensitive software that can send cryptocurrency transactions, unpinned dependencies increase supply-chain risk and make it harder to verify exactly which code is running.

Content

Scanner excerpt · package.json (reported line 81)May include surrounding context.

json
}
  ],
  "dependencies": {
    "sqlite3": "^5.1.7"
  },
  "author": "GreatApe42069",
  "license": "MIT"

Unverifiable Dependency: sqlite3 has 2 known advisory(ies) (CVE-2022-21227 (Denial-of-Service when binding invalid parameters in sqlite3); CVE-2022-43441 (sqlite vulnerable to code execution due to Object coercion)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
78% confidence
Finding

The manifest references sqlite3 without pinning an exact version, and the package family has known advisories; this leaves uncertainty about whether deployments may resolve to a vulnerable release. In a skill that handles wallet-adjacent operations and can execute local commands, avoidable dependency ambiguity increases the chance of introducing a vulnerable component into a sensitive environment.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.