Back to skill

Security audit

Ethereum Wingman

Security checks for vulnerabilities and agentic risk

Overview

This Ethereum helper is mostly coherent, but it needs review because it tells agents to run mutable remote setup code and can persist rules into Cursor.

Review before installing. Use this skill only for Ethereum/Scaffold-ETH 2 work, pin or manually verify create-eth before running the scaffold command, and run project generation in a clean workspace without wallet secrets or publishing tokens. If you use Cursor, be aware that setup-cursor.sh persists this skill's AGENTS.md as .cursorrules until you remove or replace that symlink.

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

Warning
Location
scripts/init-project.sh:29
Finding

Unpinned npm CLI Package Allows Mutable Supply-Chain Code Execution

Content
View full analysis
&2 npx create-eth@latest --project "$PROJECT_NAME" --skip-install ``` `SKILL.md:23-25`: ```bash npx create-eth@latest # Select: foundry (recommended), target chain, project name ``` `AGENTS.md:18-20`: ```bash npx create-eth@latest # Select: foundry (recommended), target chain, project name ``` ### Technical Analysis The initialization script directly executes `create-eth@latest` through `npx`. The `latest` distribution tag is mutable and is resolved from the npm registry at execution time. Consequently, the code executed by this reviewed skill is not fixed to the code that existed when the skill was audited. No exact package version, lockfile, package digest, or integrity verification is applied before execution. If the upstream package, maintainer account, publishing credentials, npm registry response, or a newly published transitive dependency is compromised, invoking the script can execute attacker-controlled JavaScript. The same unsafe command is presented as the default project-creation workflow in both agent instruction files. An agent following those instructions can therefore introduce the same risk even without directly invoking `scripts/init-project.sh`. This is an insecure dependency and supply-chain boundary rather than evidence that the current `create-eth` package is malicious. ### Attack Path 1. An attacker compromises the upstream npm package, a maintainer publishing account, or a dependency included by a future release. 2. The attacker publishes a malicious release and assigns or causes it to receive the mutable `latest` tag. 3. A use ...[truncated 1212 chars]
Remediation
View remediation
\ --project "$PROJECT_NAME" \ --skip-install ``` 2. Record the selected version centrally so the script and agent instructions cannot drift. Do not use version ranges, `latest`, `next`, or other mutable distribution tags. 3. Prefer installing dependencies through a committed lockfile with integrity hashes, then invoke the locally installed binary: ```bash npm ci npx --no-install create-eth --project "$PROJECT_NAME" --skip-install ``` 4. For stronger assurance, vendor the reviewed generator or obtain its package tarball from a trusted release process and verify a pinned cryptographic checksum before execution. 5. Review the exact package release and its transitive dependency tree before updating the pin. Treat updates as security-sensitive changes requiring review. 6. Run project generation in a sandbox or disposable container with: - No wallet private keys or seed phrases - No npm publishing token - No SSH agent forwarding - Minimal filesystem access - Restricted network access where practical - A non-privileged user 7. Update `SKILL.md` and `AGENTS.md` to use the same pinned and verified workflow so AI agents do not bypass the hardened script. ]]>
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (14)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared description presents a broad Ethereum development assistant for Scaffold-ETH 2 that can help build or create dApps and smart contracts and always tests in fork mode against live protocol state. The supplied code chunk instead implements a narrow static analysis utility: it searches Solidity files for patterns like type(uint256).max, tx.origin, 1e18, low-level .call usage, missing ReentrancyGuard, and getReserves/getSpotPrice, then outputs warnings and a JSON count. This is materially different from the stated primary purpose. There is no evidence of tutoring behavior, project generation/building, Scaffold-ETH 2 integration, trigger handling, or fork-mode execution against real Ethereum state.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The description presents a broad Ethereum development tutor/builder that always uses fork mode for testing against real protocol state. The supplied code is much narrower: it only creates a Scaffold-ETH 2 project skeleton with npx create-eth, skips dependency installation, and prints manual next steps. While this is related to Ethereum/Scaffold-ETH 2 development, the 'always uses fork mode' claim is inaccurate because the script does not invoke fork mode at all; it merely suggests a later command. The code also does not implement tutoring functionality or general blockchain task handling beyond project initialization. Therefore, the declared description overstates the actual behavior in material ways.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The declared description presents the skill as an Ethereum development assistant focused on Scaffold-ETH 2, Solidity, dApps, and fork-based testing. The provided code does not implement tutoring, smart contract building, blockchain interaction, or protocol-state testing. Instead, it performs local environment setup for Cursor by finding AGENTS.md and linking it to .cursorrules, including prompting to overwrite an existing file. This is a materially different primary purpose and introduces filesystem/configuration behavior not reflected in the description.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

The skill instructs agents to execute npx create-eth@latest, which pulls and runs the newest package version at runtime without pinning an exact trusted release. This creates a supply-chain risk: a compromised publisher account, malicious new release, or breaking change could cause arbitrary code execution on the developer machine or silently alter generated project contents.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The trigger list is extremely broad and includes common terms like 'build', 'create', 'Ethereum', and 'web3', which can cause the skill to activate in contexts where the user did not intend blockchain scaffolding or command execution guidance. In an agent environment, over-triggering increases the chance of unsolicited shell commands, browser automation, or unsafe setup instructions being introduced into unrelated tasks.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

The skill instructs agents to execute npx create-eth@latest, which fetches and runs remote code at the latest published version without pinning or integrity controls. In an agent context this creates a supply-chain risk: a compromised package, typo-squat, or malicious upstream update could cause arbitrary code execution during project setup.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · AGENTS.md (reported line 272)May include surrounding context.

3. ERC-20 Approve Pattern Required

CRITICAL: Contracts cannot pull tokens without approval!

text
Two-step process:

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · references/critical-gotchas.md (reported line 67)May include surrounding context.

3. ERC-20 Approve Pattern Required

CRITICAL: Contracts cannot pull tokens without approval!

text
Two-step process:

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The file states that the Alchemix incident was not caused by a precision error, but the accompanying vulnerable and fix examples teach it as a precision/rounding issue. In a security-training skill, this is dangerous because it can miseducate users about the real failure mode, leading them to apply the wrong mitigations and miss actual logic/accounting bugs in smart contracts.

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.

Rp1

Medium
Category
MCP Rug Pull
Confidence
97% confidence
Finding

The script runs npx create-eth@latest, which executes the latest published version of a package at runtime rather than a pinned, reviewed version. This creates a supply-chain risk: if the upstream package is compromised or a breaking/malicious release is published, users of this skill will automatically execute untrusted code. The skill context increases danger because this is an initialization script likely to be run by developers on their workstation, where it can write files and influence subsequent blockchain project code.

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.

Static analysis

No suspicious patterns detected.