Back to skill

Security audit

Erc8004 Reputation

Security checks for vulnerabilities and agentic risk

Overview

The skill is purpose-aligned, but it needs review because it can immediately sign and broadcast blockchain transactions using wallet secrets without an explicit confirmation step.

Review before installing. Use an isolated virtual environment, prefer pinned and hashed dependencies, and use a dedicated low-value wallet. Do not expose a primary mnemonic or private key to the runtime. Treat `give` and `revoke` as real blockchain transactions that spend gas and may be hard to undo, and treat leaderboard results as third-party Agentscan data.

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
README.md:16
Finding

Unpinned Third-Party Python Dependencies

Content
View full analysis

Vulnerability Details

File Location: README.md:16
Vulnerability Type: Supply-chain exposure through unpinned dependencies
Risk Level: Medium

Vulnerable code snippet:

bash
# Install dependencies
pip install web3 eth-account

The same unsafe installation command is also documented in SKILL.md:180:

bash
pip install web3 eth-account

Technical Analysis

The installation instructions retrieve web3, eth-account, and their transitive dependencies without exact version constraints, package hashes, or a reviewed lockfile. Consequently, the installed code can change between installations even when the audited project itself remains unchanged.

Python package installation may execute package build hooks, and installed dependencies execute in the same process as scripts/reputation.py. This is security-sensitive because the application imports these packages and later reads ERC8004_MNEMONIC or ERC8004_PRIVATE_KEY when signing write transactions. A compromised direct or transitive dependency could therefore run with the invoking user's privileges and access secrets available to the process.

This finding does not establish that the currently published dependencies are malicious. It identifies the mutable and insufficiently verified dependency acquisition process as the vulnerability.

Attack Path

  1. An attacker compromises a direct dependency, one of its transitive dependencies, a future package release, or the package-index delivery path.
  2. The attacker publishes malicious package code or installation hooks under a version satisfying the unconstrained installation command.
  3. A user follows the documented pip install web3 eth-account instruction.
  4. pip resolves and installs the attacker-controlled version without validating it against project-supplied hashes.
  5. Malicious code executes during installation or when scripts/reputation.py imports the affected package.

...[truncated 984 chars]

Remediation
View remediation

Remediation Suggestions

  1. Create a dependency lock or requirements file containing reviewed, exact versions for all direct and transitive dependencies.
  2. Generate and record cryptographic hashes for every distribution, then install with hash enforcement:
    bash
    python -m pip install --require-hashes -r requirements.txt
    
  3. Replace the documentation command with installation from the reviewed requirements or lockfile rather than resolving package versions dynamically.
  4. Use an isolated virtual environment and explicitly warn users not to install the dependencies with administrator privileges:
    bash
    python -m venv .venv
    . .venv/bin/activate
    python -m pip install --require-hashes -r requirements.txt
    
  5. Add automated dependency vulnerability and integrity scanning to CI, and review lockfile changes before merging updates.
  6. Prefer trusted package-index configuration and prohibit unreviewed additional indexes to reduce dependency-confusion risk.
  7. Update both README.md:16 and SKILL.md:180 so all documented installation paths use the same verified dependency set.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (8)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The README includes commands for giving and revoking feedback on-chain, including use of a private key environment variable, but it does not clearly warn that these actions submit blockchain transactions that can incur gas costs and may be irreversible once confirmed. In a skill intended for agent use, this omission increases the chance of accidental fund expenditure or unintended state changes by users who may treat the commands like harmless read-only operations.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill documents commands that use network access and environment-sourced secrets, but it does not declare any explicit tool scope or permissions boundary. In an agent ecosystem, this can cause the runtime or reviewer to underestimate the skill's capabilities, increasing the chance of unintended secret access or outbound interactions when the skill is invoked.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill describes write operations like giving and revoking feedback without clearly warning that they trigger blockchain transactions, consume gas, and may be difficult or impossible to undo fully. Users or autonomous agents could invoke these commands assuming they are ordinary reversible API actions, leading to unexpected cost, irreversible state changes, or accidental on-chain submissions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documentation instructs users to export a mnemonic or private key directly into environment variables without an explicit security warning or safer handling guidance. Because this skill performs blockchain write operations, compromise of those credentials could let an attacker spend funds, impersonate the operator on-chain, or permanently alter reputation records tied to that wallet.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The give-feedback flow signs and broadcasts a state-changing blockchain transaction immediately after showing gas information, without an explicit yes/no confirmation from the user. In an agent or scripted context, this increases the risk of accidental, socially engineered, or unintended on-chain actions using the configured wallet.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The revoke command likewise signs and submits a state-changing transaction without an explicit user confirmation step. Because revocation alters on-chain reputation records irreversibly from the user's perspective, a mistaken invocation or prompt-injection-driven call could cause unintended loss of reputation evidence or workflow disruption.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The leaderboard command claims to represent ERC-8004 reputation data, but it actually fetches and ranks agents from a third-party Agentscan API. This creates a trust-boundary mismatch: users may believe they are viewing authoritative on-chain registry results when the output can be incomplete, manipulated, stale, or filtered by the external service.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

Most commands interact directly with supported blockchains' RPC endpoints to read or write ERC-8004 reputation data. The leaderboard command instead reaches out to an unrelated external web API, expanding the skill's capabilities beyond straightforward registry interaction and introducing dependence on a separate service not mentioned in the manifest.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.