Back to skill

Security audit

ETHSkills

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a disclosed Ethereum documentation helper, but it asks agents to trust mutable remote skill instructions and run an unpinned package installer.

Review fetched ethskills.com documents before letting an agent act on them, do not allow remote guidance to override user intent or safety rules, and only run create-eth in a disposable workspace after pinning or verifying the package version and protecting wallets, secrets, and environment variables.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T03 · Remote Payload Retrieval and Execution

Warning
Location
SKILL.md:32
Finding
Mutable Remote Skill Instructions Cross the Local Audit Boundary<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:32-42` **Vulnerability Type**: Mutable remote instruction retrieval **Risk Level**: Medium ### Vulnerable Code ```markdown ```bash curl -s https://ethskills.com/ship/SKILL.md ``` Need a specific topic? Fetch only what's relevant: ```bash curl -s https://ethskills.com/gas/SKILL.md # Gas & real costs curl -s https://ethskills.com/security/SKILL.md # Security patterns curl -s https://ethskills.com/standards/SKILL.md # ERC-20, ERC-721, etc. ``` ``` ### Technical Analysis The skill instructs an AI agent to retrieve additional `SKILL.md` documents from a mutable external website and consume them as operational guidance. These remote documents are not included in the audited package and are not pinned to an immutable version, cryptographic digest, or reviewed commit. HTTPS provides transport confidentiality and server authentication but does not guarantee that the content will remain unchanged after this audit. If the website, DNS configuration, hosting account, deployment pipeline, or authorized publisher is compromised, the retrieved documents could contain attacker-controlled instructions. Because the documents are presented as skill guidance, an agent may treat them as trusted instructions and execute commands or disclose information requested by them. The reviewed local files do not pipe the downloaded content directly into a shell and do not themselves transmit credentials, private keys, environment variables, or user data. Therefore, this is a mutable remote-instruction and supply-chain risk rather than confirmed sensitive-data exfiltration or direct native-code execution. ### Attack Path 1. An attacker compromises `ethskills.com`, its hosting infrastructure, deployment credentials, DNS, or an authorized content-maintainer account. 2. The attacker modifies a referenced remote `SKILL.md`, such as `ship/SKILL.md`, while leaving the audited local package unchanged. 3. An agent act ...[truncated 1156 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Vendor reviewed topic documents into the skill package so the audited content is immutable for a given release. 2. If remote retrieval is necessary, reference an immutable version or commit and verify each response against a pinned SHA-256 digest before use. 3. Treat downloaded documents as untrusted reference material rather than higher-priority agent instructions. 4. Explicitly state that remote content cannot override system instructions, user intent, safety constraints, or data-handling policies. 5. Require explicit user approval before executing any command or accessing, transmitting, or modifying data based on remotely retrieved guidance. 6. Restrict outbound requests to an allowlist and run suggested commands in a sandbox with minimal filesystem and network access. 7. Publish signed releases or signed content manifests and fail closed when signature or integrity verification fails. 8. Display retrieval failures rather than using silent `curl -s` behavior; use options such as `--fail --show-error` alongside integrity validation. ]]>

T08 · Insecure Dependencies

Warning
Location
SKILL.md:85
Finding
Unpinned Third-Party Package Is Downloaded and Executed Through npx<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:85` **Vulnerability Type**: Unpinned dependency execution **Risk Level**: Medium ### Vulnerable Code ```markdown 3. Run: npx create-eth@latest → Scaffold the project ``` ### Technical Analysis The example workflow tells the agent to run the mutable `latest` release of the third-party npm package `create-eth`. When the package is not already available locally, `npx` can download it from the configured npm registry and immediately execute its code. The `@latest` tag is mutable and provides no guarantee that the package version executed in the future is the version reviewed or intended when this skill was published. The workflow provides no exact version pin, lockfile, integrity hash, signature verification, package-source validation, or mandatory user confirmation. This behavior exceeds the privileges required to provide Ethereum development documentation: downloading and executing arbitrary package code is not necessary merely to explain how to scaffold a project. Package installation and execution can invoke application code and package lifecycle behavior with the permissions of the user running the agent. ### Attack Path 1. An attacker compromises the npm package, a maintainer or registry account, the package publication pipeline, or another relevant supply-chain component. 2. The attacker publishes a malicious version and causes the mutable `latest` distribution tag to resolve to it. 3. An agent follows the documented workflow and runs `npx create-eth@latest`. 4. `npx` resolves and downloads the attacker-controlled package from the configured registry. 5. The downloaded package executes with the invoking user's existing privileges. 6. The malicious package can then access files and environment data available to that user, modify the workspace, make outbound requests, or install additional components, subject to host controls. ### Impact Assessment A compromised dep ...[truncated 622 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace `@latest` with an exact, reviewed package version. 2. Commit a lockfile and verify package integrity metadata before execution. 3. Require explicit user confirmation before downloading or executing any third-party package. 4. Configure the package manager to use a trusted registry and review its effective registry configuration before installation. 5. Execute scaffolding tools in a disposable sandbox or container with minimal filesystem, credential, and network access. 6. Review package provenance, maintainers, release signatures, lifecycle behavior, and published contents before updating the pinned version. 7. Where possible, separate package download and inspection from execution rather than allowing `npx` to download and immediately run mutable code. 8. Document a controlled upgrade process so version changes receive a new security review. ]]>
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

Vague Triggers

Medium
Confidence
93% confidence
Finding
The README states that the skill should be used whenever an agent encounters any Ethereum, Solidity, or dApp task, which is a very broad activation scope. Overly broad triggering can cause the agent to over-rely on remote, untrusted documentation for a wide range of tasks, increasing prompt-injection and supply-chain exposure whenever the skill is invoked.

Vague Triggers

Medium
Confidence
94% confidence
Finding
The activation criteria are very broad, covering nearly any web3/blockchain/onchain development task, including common requests about wallets, tokens, gas, and smart contracts. Broad routing increases the chance this skill is invoked in ambiguous situations and then influences downstream behavior with external-fetch instructions and operational guidance, expanding attack surface and the likelihood of unsafe tool use.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The skill instructs agents to run `npx create-eth@latest`, which fetches and executes remote package code without pinning to a specific reviewed version. In an agent context, this creates a supply-chain execution risk: a compromised publisher account, malicious release, or dependency hijack could lead to arbitrary code execution on the host.

Rp1

Medium
Category
MCP Rug Pull
Confidence
97% confidence
Finding
The example workflow explicitly tells the agent to run `npx create-eth@latest`, again causing execution of unpinned remote code. Because this appears in a procedural workflow, it is especially likely to be followed automatically by an agent, increasing the chance of real exploitation through a malicious or altered upstream package.

Static analysis

No suspicious patterns detected.