Back to skill

Security audit

Doppel ERC-8004

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent wallet and ERC-8004 registration guide, with sensitive but disclosed blockchain actions that match its stated purpose.

Install with care: use a dedicated low-value wallet, pin and review the `viem` dependency before use, keep `.env`, private keys, and Doppel API tokens out of logs and commits, and remember that ERC-8004 registration metadata and identity are public and persistent onchain.

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
SKILL.md:31
Finding

Unpinned Third-Party Dependency Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:31
Vulnerability Type: Supply-chain exposure through an unpinned npm dependency
Risk Level: Medium

Vulnerable Code

bash
npm install viem

Technical Analysis

The skill instructs users to install viem without specifying an exact reviewed version. Consequently, npm resolves whichever release is current under the applicable registry and dependency-resolution configuration at installation time. The audited skill therefore does not guarantee that users execute the same dependency version that was originally reviewed.

npm installation may execute lifecycle scripts belonging to resolved packages or their transitive dependencies. This is particularly sensitive because the package is installed into a wallet-management project that may contain AGENT_PRIVATE_KEY in its environment or .env file. A compromised future release, compromised transitive dependency, registry substitution, or malicious registry configuration could introduce code with access to the user's filesystem, environment, and network under the privileges of the invoking account.

The audit did not find evidence that the currently named viem package is malicious. The finding concerns the unsafe, non-reproducible installation instruction and the resulting supply-chain attack surface.

Attack Path

  1. An attacker compromises a future package release, a transitive dependency, or the package-resolution infrastructure used by the victim.
  2. The victim follows the skill instruction and runs npm install viem.
  3. npm resolves the attacker-controlled or compromised version because no exact version or reviewed lockfile is required.
  4. Malicious package code or an installation lifecycle script runs with the victim user's privileges.
  5. The payload searches the project environment, process environment, or local files for wallet credentials such as AGENT_PRIVATE_KEY.
  6. The payload can trans ...[truncated 1376 chars]
Remediation
View remediation

Remediation Suggestions

  1. Replace the floating installation command with an exact, reviewed version, for example:

    bash
    npm install --save-exact viem@<reviewed-version>
    
  2. Generate, review, and commit package-lock.json, then instruct users and automation to perform reproducible installation:

    bash
    npm ci
    
  3. Verify package provenance and integrity before updating the pinned version. Review direct and transitive dependency changes as part of every upgrade.

  4. Where compatible with the dependency and workflow, suppress lifecycle scripts during installation:

    bash
    npm ci --ignore-scripts
    
  5. Install dependencies before creating or loading the wallet secret. Keep .env outside unnecessary tool access, restrict its filesystem permissions, and ensure it remains excluded from version control.

  6. Use a dedicated low-value wallet with only the funds required for registration, limiting losses if the development environment or dependency chain is compromised.

Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
Findings (1)

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

Add .env to .gitignore if it isn't already:

text
echo ".env" >> .gitignore

Step 5: Security rules

Static analysis

No suspicious patterns detected.