Back to skill

Security audit

ERC-8004 Trustless Agents

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent for Ethereum agent registration, but it handles wallet keys and mainnet transactions too broadly and includes unsafe installer guidance.

Review this skill before installing. Use a dedicated low-balance wallet, prefer Sepolia/testnet first, avoid passing private keys on the command line, avoid storing broad-use deployer keys in the documented default path, and install Foundry through a verifiable method rather than piping a remote script into bash. Treat any mainnet register, set-uri, or feedback command as a real transaction that may cost ETH and cannot be undone.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (3)

T03 · Remote Payload Retrieval and Execution

Error
Location
README.md:33
Finding

Unverified Remote Installer Is Downloaded and Executed Directly

Content
View full analysis
/dev/null; then echo "cast (foundry) required. Install: curl -L https://foundry.paradigm.xyz | bash" exit 1 fi ``` ### Technical Analysis The installation guidance pipes a remote HTTP response directly into `bash`. Although the specified domain appears associated with the Foundry project, the downloaded payload is mutable and is neither pinned to a reviewed version nor verified using a cryptographic checksum or signature. Consequently, the code that users execute can differ from the content available when the Skill was audited. HTTPS protects the connection under normal conditions but does not address compromise of the hosting service, DNS or certificate infrastructure, distribution account, or upstream installer itself. This behavior is not necessary for the Skill’s core functionality. The Skill only requires a compatible `cast` executable; it does not require arbitrary remote code to be executed directly. ### Attack Path 1. A user follows the prerequisite instructions or copies the command printed by `common.sh`. 2. The user runs `curl -L https://foundry.paradigm.xyz | bash`. 3. The remote endpoint, redirect target, hosting infrastructure, or served installer has been compromised or changed maliciously. 4. The response is immediately interpreted by the user’s shell without an opportunity for inspection. 5. Attacker-controlled commands execute with the user’s privileges. 6. Those commands can access wallet files, env ...[truncated 676 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
scripts/common.sh:36
Finding

Read-Only Query Operations Unnecessarily Load and Export a Wallet Private Key

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/register.sh:69
Finding

Raw Private Keys Are Accepted and Transmitted Through Command-Line Arguments

Content
View full analysis
Remediation
View remediation
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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (10)

External Script Fetching

High
Category
Supply Chain
Confidence
98% confidence
Finding

The command pipes a remotely fetched script directly into bash, giving the remote server full code execution on the user's machine without an opportunity to inspect the content. If the hosting endpoint, transport, or upstream distribution is compromised, users could execute arbitrary malicious code during installation.

Content

Scanner excerpt · README.md (reported line 35)May include surrounding context.

bash
# Install Foundry (cast)
curl -L https://foundry.paradigm.xyz | bash
foundryup

# Install jq

Chaining Abuse

High
Category
Tool Misuse
Confidence
99% confidence
Finding

The use of | bash is a classic command-chaining anti-pattern because it immediately executes untrusted network content in a shell. In security-sensitive tooling for Ethereum agents, this is especially dangerous because affected developer machines may also hold wallets, private keys, or deploy credentials.

Content

Scanner excerpt · README.md (reported line 35)May include surrounding context.

bash
# Install Foundry (cast)
curl -L https://foundry.paradigm.xyz | bash
foundryup

# Install jq

External Script Fetching

High
Category
Supply Chain
Confidence
98% confidence
Finding

The documentation recommends piping a remote script directly into bash, which executes network-fetched code without prior inspection or integrity verification. This is especially dangerous in a security-sensitive skill involving wallets and blockchain tooling, because a compromised installer source or MITM-style delivery issue could lead to arbitrary code execution and credential theft.

Content

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

md
## Dependencies

- `cast` (Foundry) - `curl -L https://foundry.paradigm.xyz | bash`
- `jq` - `brew install jq`
- Private key in `~/.clawdbot/wallets/.deployer_pk` or `PRIVATE_KEY` env
- IPFS: Set `PINATA_JWT` for uploads, or upload manually

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · scripts/common.sh (reported line 18)May include surrounding context.

sh
fi
    
    if ! command -v cast &>/dev/null; then
        echo "cast (foundry) required. Install: curl -L https://foundry.paradigm.xyz | bash"
        exit 1
    fi

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The README instructs users to run mainnet registration and feedback commands without an explicit warning that these actions broadcast real Ethereum transactions, consume gas, and are generally irreversible. In a blockchain workflow this omission can mislead users into spending funds or permanently writing data on-chain before they understand the consequences.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill includes shell command usage but does not declare any tool scope or allowed-tools boundary, which can cause an agent runtime to over-assume what execution is permitted. In this context, the commands include blockchain interactions and credential-dependent operations, so missing permission scoping increases the risk of unintended command execution or unsafe automation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill presents mainnet registration and update commands as quick-reference examples without warning that they can submit irreversible on-chain transactions and incur real gas costs. Because this skill is specifically for Ethereum agent registration and reputation workflows, omission of transaction-risk warnings makes accidental real-world asset impact more likely.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The utility automatically reads a private key from a fixed path in the user's home directory and exports it into the shell environment. That expands the skill's access beyond simple registry/discovery operations into local secret harvesting and signing capability, which is sensitive in an agent-executed context because any downstream command or sourced script can reuse the key.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
82% confidence
Finding

This function transmits a user-supplied file to a third-party service (Pinata) over the network. In a trustless agent skill, automatic off-host transmission is security-relevant because sensitive metadata or unintended files could be uploaded if callers do not strictly control the input file.

Content

Scanner excerpt · scripts/common.sh (reported line 78)May include surrounding context.

sh
local file="$1"
    
    if [[ -n "${PINATA_JWT:-}" ]]; then
        local response=$(curl -s -X POST "https://api.pinata.cloud/pinning/pinFileToIPFS" \
            -H "Authorization: Bearer $PINATA_JWT" \
            -F "file=@$file")
        echo "ipfs://$(echo "$response" | jq -r '.IpfsHash')"

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The documentation tells users to store a private key and PINATA JWT in standard locations or environment variables without any warning about secrecy, leakage, or least-privilege handling. In an agent skill, this is risky because users may expose credentials to logs, prompts, subprocesses, or shared environments.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.