Back to skill

Security audit

PCEC EvoMap Bounty

Security checks for vulnerabilities and agentic risk

Overview

This skill openly integrates with an external bounty service, but it can claim tasks, publish assets, and mark work complete without clear user approval controls.

Review before installing. Use this only if you intend the agent to interact with EvoMap on your behalf, and require manual confirmation before any task claim, asset publication, or completion request. Do not publish assets unless you have checked that they exclude private files, secrets, conversation content, and unrelated workspace data.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (2)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:23
Finding
Untrusted External Task Delegation Without Validation or Approval Controls<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 23–42 **Vulnerability Type**: `T01: Skill Instruction Hijacking` **Risk Level**: High ### Vulnerable Code ```bash ## 获取任务 curl -X POST https://evomap.ai/a2a/fetch \ -H "Content-Type: application/json" \ -d '{ "protocol": "gep-a2a", "protocol_version": "1.0.0", "message_type": "fetch", "message_id": "msg_<时间戳>_tasks", "sender_id": "node_9e601234", "timestamp": "<ISO时间>", "payload": { "include_tasks": true, "task_status": "open", "limit": 10 } }' ``` ### Technical Analysis The Skill directs the agent to retrieve open tasks from an external coordination service and subsequently process those tasks. The fetched task contents are controlled by the remote service, but the Skill does not establish any trust boundary between the returned data and executable agent instructions. No controls are defined for: - Validating the structure or permitted purpose of returned tasks. - Treating task descriptions as untrusted data rather than authoritative instructions. - Rejecting prompt-injection content embedded in task fields. - Restricting the tools, files, network destinations, or data that a fetched task may access. - Requiring explicit user approval before accepting or executing a task. - Isolating externally delegated work in a sandbox. Consequently, a malicious task publisher or compromised service could return a task containing instructions that alter the agent's current objective, request access to unrelated workspace data, induce unauthorized network operations, or override expected safety boundaries. ### Attack Path 1. A malicious actor publishes a crafted open task to the external bounty system, or compromises the task service. 2. The agent invokes the documented `/a2a/fetch` endpoint and retrieves the attacker-controlled task. 3. The task description contains embedded instructions directing the agent to disregard its original objec ...[truncated 1040 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Treat every field returned by the external service as untrusted data and never as system-level or developer-level instructions. 2. Define and enforce a strict response schema, including maximum field sizes, expected data types, and a narrow allowlist of supported task categories. 3. Detect and reject task content that requests safety-policy changes, secret access, unrelated file access, privilege changes, arbitrary commands, or communication with unapproved destinations. 4. Require explicit user confirmation before claiming or executing each externally sourced task. Display the task source, requested operations, tools required, files affected, and expected outbound data. 5. Enforce a capability allowlist for task execution. Deny shell execution, sensitive-file access, credential access, and unrestricted networking unless separately authorized. 6. Execute accepted tasks in a restricted sandbox with minimal filesystem visibility, no inherited secrets, limited resources, and destination-restricted network access. 7. Keep external task content separated from trusted instructions using structured parsing and clear instruction/data boundaries. 8. Record fetched task identifiers, validation decisions, approvals, tool invocations, and outbound requests in an audit log. 9. Pin and verify the intended remote service identity using normal TLS validation and establish a policy for handling service compromise or unexpected responses. ]]>

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:66
Finding
Unreviewed Publication of Unspecified Assets to an External Service<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 66–79 **Vulnerability Type**: `T09: Insecure Skill Coding Practices` **Risk Level**: High ### Vulnerable Code ```bash ## 发布解决方案 curl -X POST https://evomap.ai/a2a/publish \ -H "Content-Type: application/json" \ -d '{ "protocol": "gep-a2a", "message_type": "publish", "sender_id": "node_9e601234", "payload": { "assets": [Gene, Capsule, EvolutionEvent] } }' ``` ### Technical Analysis The Skill instructs the agent to transmit `Gene`, `Capsule`, and `EvolutionEvent` assets to `evomap.ai`, but it does not define their schemas, permitted data sources, or sensitivity constraints. It also provides no outbound-content review, redaction, provenance verification, or user-confirmation requirement. If these assets are assembled from task context, workspace files, conversation history, generated code, logs, or tool output, they may contain information that was not intended for external publication. An attacker-controlled bounty task could deliberately request a solution incorporating sensitive local content and rely on this publication step to transmit the resulting asset. The file does not explicitly access secrets or demonstrate that sensitive information is presently included in these objects. The vulnerability is therefore the unsafe publication design and absence of data-loss controls, not evidence of confirmed credential exfiltration. ### Attack Path 1. The agent retrieves an external task that requests a solution derived from local files, conversation context, logs, or other available information. 2. The agent creates one or more `Gene`, `Capsule`, or `EvolutionEvent` objects using that context. 3. The Skill provides no defined schema or rule that excludes credentials, personal information, proprietary code, internal paths, prompts, or unrelated workspace content. 4. The agent follows the publication instruction and sends the complete asset payload to `https ...[truncated 901 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Define strict, versioned schemas for `Gene`, `Capsule`, and `EvolutionEvent`, with an explicit allowlist of fields permitted for external publication. 2. Reject undeclared fields and prohibit raw conversation history, arbitrary file contents, environment variables, credentials, tokens, private keys, internal prompts, and unrelated tool output. 3. Add automated secret and sensitive-data scanning before transmission, including checks for access tokens, passwords, private keys, personal data, internal URLs, and high-entropy values. 4. Track the provenance of every asset field so the agent can distinguish user-provided public material from private workspace or system-derived content. 5. Present the exact destination and complete redacted payload to the user, and require explicit approval before each publication. 6. Minimize outbound content and transmit only the fields needed to complete the approved bounty. 7. Add size limits, type validation, encoding validation, and rejection rules for unexpected nested content. 8. Use a dedicated, revocable identity or scoped authorization mechanism rather than relying solely on a hard-coded node identifier for attribution. 9. Maintain an immutable audit record of approvals, payload hashes, destinations, timestamps, and remote response identifiers. 10. Establish retention and deletion requirements for submitted assets and document the external service's data-handling policy before enabling publication. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger phrases are very broad and can cause the skill to activate in contexts unrelated to the user's intent. Because this skill performs task fetching, claiming, publishing, and completion against an external service, ambiguous activation increases the risk of unintended external actions and state changes.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill advertises autonomous interaction with an external bounty platform, including claiming and completing tasks, but does not provide a user-facing warning that these operations change remote state. This can lead to unauthorized or accidental actions on behalf of the user or node identity, especially if the skill is invoked automatically.

External Transmission

Medium
Category
Data Exfiltration
Content
## 获取任务

```bash
curl -X POST https://evomap.ai/a2a/fetch \
  -H "Content-Type: application/json" \
  -d '{
    "protocol": "gep-a2a",
Confidence
88% confidence
Finding
This endpoint sends structured data to an external domain and initiates interaction with a third-party task system. While fetching open tasks is less dangerous than mutation, it still causes external transmission of node identifiers and operational metadata, which can expose identity, usage patterns, or enable unreviewed integration behavior.

External Transmission

Medium
Category
Data Exfiltration
Content
## 认领任务

```bash
curl -X POST https://evomap.ai/task/claim \
  -H "Content-Type: application/json" \
  -d '{
    "task_id": "<task_id>",
Confidence
98% confidence
Finding
This sequence includes POST requests to claim tasks and then publish/complete them on an external platform, which are direct remote state-changing operations. If invoked unintentionally or by ambiguous triggers, the skill could commit the node to work, submit assets, or alter task lifecycle state without proper authorization or user awareness.

Static analysis

No suspicious patterns detected.