Back to skill

Security audit

EvoMap

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent EvoMap marketplace integration, but it needs review because it encourages account-linked task automation and unverified continuous client execution.

Review before installing or enabling automation. Use direct, user-approved EvoMap API calls where possible; avoid running the optional Evolver client in --loop unless you have reviewed and pinned the code and dependencies, verified integrity, and run it with minimal access to local files and secrets. Require confirmation before claiming bounties, publishing assets, completing tasks, registering webhooks, or decomposing tasks into swarms.

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

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:366
Finding

Unverified Remote Payload Retrieval and Continuous Execution

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 366-380
Vulnerability Type: Remote code retrieval and execution without integrity verification
Risk Level: High

bash
git clone https://github.com/autogame-17/evolver.git
cd evolver
npm install
node index.js --loop
bash
TAG=$(curl -sL https://api.github.com/repos/autogame-17/evolver/releases/latest | grep '"tag_name"' | cut -d'"' -f4)
curl -fsSL -o evolver.zip "https://github.com/autogame-17/evolver/archive/refs/tags/${TAG}.zip"
unzip evolver.zip
cd evolver-${TAG#v}
npm install
node index.js --loop

Technical Analysis

The Skill instructs users to retrieve mutable source code from an external, personal GitHub repository and execute it locally. The clone workflow does not pin a reviewed commit, while the archive workflow dynamically resolves the latest release tag. Neither workflow verifies a cryptographic checksum or signature before execution.

Although the downloaded ZIP contains source code rather than a native binary, it is an executable payload because the instructions subsequently invoke npm install and node index.js --loop. Package installation may also execute dependency lifecycle scripts. Consequently, the code that ultimately runs can change after the Skill itself has been audited.

The network download is relevant to the advertised optional Evolver client, but executing an unverified client continuously is not the minimum privilege necessary to use the documented EvoMap HTTP protocol. Direct, user-approved API operations can provide the core functionality with substantially less supply-chain exposure.

Attack Path

  1. An attacker compromises the referenced GitHub account, repository, release tag, or one of the client's resolved dependencies.
  2. The attacker modifies the client, package metadata, dependency graph, or an installation lifecycle script.
  3. A user follows the Skill's instructions and retrieves t ...[truncated 1238 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin the client to a specific, reviewed commit rather than cloning the repository's mutable default branch or dynamically selecting the latest release.
  2. Publish release artifacts with SHA-256 checksums and a verifiable maintainer signature. Verify both before extracting or executing the artifact.
  3. Commit and review an exact dependency lockfile. Use npm ci rather than unconstrained dependency installation.
  4. Use npm ci --ignore-scripts where functionality permits. If lifecycle scripts are necessary, document and review each required script before allowing execution.
  5. Run the client in a restricted container or sandbox with a dedicated unprivileged account, a read-only filesystem where practical, no inherited secrets, and narrowly scoped outbound network access.
  6. Require explicit user approval before installing the external client or enabling --loop; do not present continuous execution as necessary for basic protocol access.
  7. Prefer implementing the required HTTPS protocol calls directly in a reviewed local component when only registration, publishing, or fetching is needed.
  8. Document the data and filesystem resources the external client requires, and deny access to credentials, unrelated repositories, home-directory data, and privileged sockets by default.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (8)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill encourages periodic sync, task discovery, claiming, publishing, and optional webhook registration as part of continuous operation, but it does not clearly warn that this causes recurring external network transmissions and potentially ongoing account-linked activity. In an agent setting, this can lead to silent background data exchange, persistent third-party interaction, and user surprise about automation scope.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
86% confidence
Finding

The workflow describes automatic approval of decompositions, automatic creation of aggregation tasks, and solver agents discovering and claiming subtasks, which encourages autonomous task progression without explicit human checkpoints. In a marketplace context tied to external actions and rewards, that can cause unintended commitments, external side effects, or agent behavior drifting beyond the user's expectations.

Content

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

md
### How it works

1. **Claim** the parent task: `POST /task/claim`
2. **Propose decomposition**: `POST /task/propose-decomposition` with at least 2 subtasks. The decomposition is auto-approved -- subtasks are created immediately.
3. **Solver agents** discover and claim subtasks via `POST /a2a/fetch` (with `include_tasks: true`) or `GET /task/list`. Each subtask has `swarm_role: "solver"` and a `contribution_weight`.
4. Each solver completes their subtask: publish solution via `POST /a2a/publish`, then `POST /task/complete`.
5. When **all solvers** complete, an **aggregation task** is automatically created. Only agents with reputation >= 60 can claim it.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

The auto_approved: true behavior confirms that swarm decomposition is immediately accepted and acted upon, reducing opportunities for review before external task fan-out occurs. That increases the risk of unintended autonomous coordination, resource consumption, and downstream publication or completion actions in response to a single agent decision.

Content

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

md
- Total solver weight must not exceed 0.85 (the remaining 0.15 goes to proposer + aggregator)
- Cannot decompose a subtask (only top-level tasks)

**Response:** Returns the created subtasks and `auto_approved: true`.

### Webhook notifications for swarm

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill provides copy-paste commands to clone or download and run a third-party evolver client in --loop mode, including dynamic release discovery via GitHub API, without a prominent warning that this executes unreviewed external code continuously. That creates a meaningful supply-chain and persistence risk, especially because the loop mode implies recurring network activity and ongoing autonomous behavior.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

This line instructs use of curl against the GitHub API and then downloads a release zip from GitHub, which is an external transmission and remote artifact retrieval path. In context, the danger is not the mere presence of network access but that the skill normalizes pulling code from third parties for execution without emphasizing trust, integrity verification, or user approval.

Content

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

Or download the latest release as a zip:

bash
TAG=$(curl -sL https://api.github.com/repos/autogame-17/evolver/releases/latest | grep '"tag_name"' | cut -d'"' -f4)
curl -fsSL -o evolver.zip "https://github.com/autogame-17/evolver/archive/refs/tags/${TAG}.zip"
unzip evolver.zip
cd evolver-${TAG#v}

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
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.