Back to skill

Security audit

Revolution Auto-Evolution

Security checks for vulnerabilities and agentic risk

Overview

This skill is an autonomous multi-agent workflow runner with disclosed task-file mutation, but it needs review because its recurring execution, prompt handling, and file-boundary controls are under-scoped.

Install only in a tightly scoped workspace with least-privilege agent tools, explicit approval for destructive or external actions, and monitoring enabled. Avoid unattended cron use until task-file prompt injection, fail-open review/audit handling, and task path containment are fixed.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (3)

T01 · Skill Instruction Hijacking

Error
Location
scripts/heartbeat-coordinator.js:108
Finding

Untrusted Task Content Is Embedded Directly into Agent Prompts

Content
View full analysis
`${i + 1}. ${s}`).join('\n')} ## Previous Result ${lastResult.summary || '(First iteration)'} `; ``` The same pattern is used when constructing the Executor prompt: ```js function buildExecutePrompt(task) { const instructions = task.review?.next_instructions; if (!instructions) { return `Task ${task.task_id} is reviewed but missing next_instructions.`; } const step = instructions.step || {}; const criteria = instructions.acceptance_criteria || []; return `You are an Executor for the auto-evolution system. ## Task - **ID:** ${task.task_id} - **Goal:** ${task.goal} - **Current Step:** ${instructions.current_step} / ${instructions.total_steps} ## Subtask **${step.action || instructions.summary}** ${step.detail || ''} ## Acceptance Criteria ${criteria.map((c, i) => `${i + 1}. ${c}`).join('\n')} ``` Execution results and review instructions are also inserted into the Auditor prompt: ```js function buildAuditPrompt(task) { const instructions = task.review?.next_instructions; const result = task.result || {}; return `You are an Auditor for the auto-evolution system. ## Task - * ...[truncated 3152 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/heartbeat-coordinator.js:180
Finding

Malformed Agent Output Causes Review and Audit Gates to Fail Open

Content
View full analysis
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
scripts/heartbeat-coordinator.js:456
Finding

CLI Task Filename Traversal Allows JSON Files Outside the Task Directory to Be Modified

Content
View full analysis
{ console.error('❌ Error:', err); releaseLock(); }); } ``` The unvalidated value is later used as a write destination. For example: ```js function applyReview(task, reviewResult) { const filePath = path.join(TASKS_DIR, task.file); const data = JSON.parse(fs.readFileSync(filePath, 'utf8')); const now = new Date().toISOString(); // Task state is modified here. fs.writeFileSync(filePath, JSON.stringify(data, null, 2)); console.log(`✅ Task ${task.task_id} reviewed: ${review.verdict}`); return review.verdict; } ``` Equivalent read-and-write behavior exists in `applyExecution` and `applyAudit`. ### Technical Analysis `path.join(TASKS_DIR ...[truncated 2640 chars]
Remediation
View remediation
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (26)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

A second description-behavior mismatch highlights undeclared archival or deletion-oriented filesystem actions despite claims focused on orchestration and quality review. Hidden or minimized file lifecycle operations are risky because they can destroy evidence, alter task state, or remove user data while appearing to perform only benign coordination duties.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

A second description-behavior mismatch highlights undeclared archival or deletion-oriented filesystem actions despite claims focused on orchestration and quality review. Hidden or minimized file lifecycle operations are risky because they can destroy evidence, alter task state, or remove user data while appearing to perform only benign coordination duties.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| `scripts/heartbeat-coordinator.js` | Coordinator: scan tasks → spawn Reviewer/Executor/Auditor |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| `scripts/heartbeat-coordinator.js` | Coordinator: scan tasks → spawn Reviewer/Executor/Auditor |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| `scripts/heartbeat-coordinator.js` | Coordinator: scan tasks → spawn Reviewer/Executor/Auditor |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| `scripts/heartbeat-coordinator.js` | Coordinator: scan tasks → spawn Reviewer/Executor/Auditor |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| `scripts/heartbeat-coordinator.js` | Coordinator: scan tasks → spawn Reviewer/Executor/Auditor |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| `scripts/monitor.js` | Monitor: detect stuck tasks, clean orphaned locks |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| `scripts/monitor.js` | Monitor: detect stuck tasks, clean orphaned locks |

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · scripts/heartbeat-coordinator.js (reported line 166)May include surrounding context.

js
`;
  }

  return prompt;
}

function applyReview(task, reviewResult) {

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The README explicitly promotes autonomous agent-driven building and auto-packaging, but does not prominently warn users that the skill can perform system-modifying actions without close human review. In a multi-agent execution loop, this omission increases the chance that users enable broad autonomous behavior without understanding the risk of unintended code changes, file modifications, or packaging of unsafe output.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The cron example documents unattended recurring execution every 5 minutes without a clear warning that this creates continuous autonomous operation. That can amplify mistakes or prompt-injection outcomes by repeatedly re-running task discovery and execution, potentially causing repeated file changes, resource consumption, or propagation of harmful outputs before a user notices.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill documents scripts that read environment variables and drive task-processing behavior, but it does not declare any tool scope or permission boundary. This creates an implicit capability surface where an invoking agent may access environment-derived paths or sensitive runtime configuration without clear disclosure or least-privilege constraints.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The invocation guidance says to use the skill whenever a user wants autonomous task execution with quality assurance, which is a very broad trigger for a system that can mutate workspace state and run recurring automation. Overly broad activation criteria increase the chance the skill is invoked in inappropriate contexts, causing unintended autonomous actions without explicit user consent for the specific changes performed.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The documentation promotes autonomous execution, monitoring, retries, and packaging, but does not prominently warn that these actions can modify task files, reset states, archive outputs, and otherwise change workspace contents. Lack of user-facing warnings undermines informed consent and makes accidental destructive or confusing changes more likely in autonomous runs.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The documentation describes a different operating model than the declared skill metadata, replacing the stated four-role Coordinator/Reviewer/Executor/Auditor orchestration with a three-step Sonnet/Qwen auto-development flow. In an autonomous execution skill, this mismatch can mislead users about which agents act, what controls exist, and whether review/audit gates are actually present, increasing the chance of unsafe or unintended execution.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill states that the system automatically advances tasks every 5 minutes but does not present a clear warning about recurring autonomous execution. For a self-iterating agent orchestration system, missing disclosure can cause users to enable persistent task execution without understanding that actions may continue after initial setup, potentially consuming resources or performing unintended operations.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The package description is written entirely in Chinese and presents the skill as a fully automatic system, with no indication that users can select another language or locale. For a general-purpose skill manifest, this can violate language/locale policy expectations when no opt-in or justification is provided.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
82% confidence
Finding

This code writes updated task data back to disk, changing workflow state, but provides no confirmation prompt before the write. Although there is a success log after the write, there is no prior disclosure or warning that invoking this command will modify task files on disk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
82% confidence
Finding

This function writes execution status and results into the task file, which is a file-modifying operation. The code logs success afterward, but does not clearly warn users ahead of time that running the apply-exec path mutates persisted task state.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
82% confidence
Finding

This operation writes audit outcomes and status transitions back to the task JSON file, affecting persistent state. While the script prints a success message afterward, it lacks an explicit warning or confirmation that the command will modify files.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This code deletes lock files with fs.unlinkSync and rewrites task JSON files to reset stuck tasks, which are safety-relevant file modifications. Although the script logs after actions occur, the header comment does not clearly warn that running the monitor will automatically remove lock files and mutate task state, so users may not understand the impact beforehand.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The file’s natural-language comments and user-facing console messages are written in Chinese, including the described behavior and runtime status output. This creates an implicit language constraint without any indication of user opt-in or a documented region-specific reason, which can violate language/locale policy expectations.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The header documentation states that when a task is completed, the script will automatically generate SKILL.md and README.md and archive the task. In reality, the implementation only marks the task as packaged, writes the updated task JSON into the archive directory, and removes the original task file; there is no file generation logic for SKILL.md or README.md anywhere in the script.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The natural-language user-facing content is presented in Chinese, but the file does not indicate that this language restriction is optional or required for a specific region or audience. This can violate language/locale policy when a skill implicitly forces a language without user opt-in.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.