Back to skill

Security audit

Virtuals Protocol Acp Egip31

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent ACP marketplace CLI, but it needs Review because it combines financial/agent-commerce actions with plaintext credential storage, a long-running seller process, and confirmed unsafe local path handling.

Install only if you intend to let this agent transact through Virtuals ACP. Keep config.json private, avoid shared or indexed workspaces, review every token/job/seller action before execution, do not run seller offerings from untrusted names, and upgrade dependencies plus fix path validation before using it with valuable wallets or autonomous services.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (2)

T09 · Insecure Skill Coding Practices

Error
Location
src/commands/sell.ts:57
Finding

Path Traversal Allows File Creation Outside Seller Directories

Content
View full analysis
{ if (!offeringName) { output.fatal("Usage: acp sell init "); } const dir = resolveOfferingDir(offeringName); if (fs.existsSync(dir)) { output.fatal(`Offering directory already exists: ${dir}`); } fs.mkdirSync(dir, { recursive: true }); const offeringJson: Record = { name: offeringName, description: "", jobFee: null, jobFeeType: null, requiredFunds: null, requirement: {}, }; fs.writeFileSync( path.join(dir, "offering.json"), JSON.stringify(offeringJson, null, 2) + "\n" ); const handlersTemplate = `import type { ExecuteJobResult, ValidationResult } from "../../runtime/offeringTypes.js"; // Required: implement your service logic here export async function executeJob(request: any): Promise { // TODO: Implement your service return { deliverable: "TODO: Return your result" }; } // Optional: validate incoming requests export function validateRequirements(request: any): ValidationResult { // Return { valid: true } to accept, or { valid: false, reason: "explanation" } to reject return { valid: true }; } // Optional: provide custom payment request message export function requestPayment(request: any): string { // Return a custom message/reason for the payment request return "Request accepted"; } `; fs.writeFileSync(path.join(dir, "handlers.ts"), handlersTemplate); } ``` The same issue exists in resource creation: ```ts function ...[truncated 4316 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
src/lib/config.ts:35
Finding

Session Tokens and API Keys Are Stored Without Enforced Restrictive Permissions

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (53)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The documented behavior includes local filesystem writes to config.json, environment/API-key handling, and local state changes, which are materially different from a pure marketplace client. When a skill's description focuses on ACP commerce but underplays local secret storage and host-side mutation, agents may run it in contexts where such side effects are unexpected and risky.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The documented behavior includes local filesystem writes to config.json, environment/API-key handling, and local state changes, which are materially different from a pure marketplace client. When a skill's description focuses on ACP commerce but underplays local secret storage and host-side mutation, agents may run it in contexts where such side effects are unexpected and risky.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The documented behavior includes local filesystem writes to config.json, environment/API-key handling, and local state changes, which are materially different from a pure marketplace client. When a skill's description focuses on ACP commerce but underplays local secret storage and host-side mutation, agents may run it in contexts where such side effects are unexpected and risky.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The documented behavior includes local filesystem writes to config.json, environment/API-key handling, and local state changes, which are materially different from a pure marketplace client. When a skill's description focuses on ACP commerce but underplays local secret storage and host-side mutation, agents may run it in contexts where such side effects are unexpected and risky.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

The documented behavior includes local filesystem writes to config.json, environment/API-key handling, and local state changes, which are materially different from a pure marketplace client. When a skill's description focuses on ACP commerce but underplays local secret storage and host-side mutation, agents may run it in contexts where such side effects are unexpected and risky.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The documented behavior includes local filesystem writes to config.json, environment/API-key handling, and local state changes, which are materially different from a pure marketplace client. When a skill's description focuses on ACP commerce but underplays local secret storage and host-side mutation, agents may run it in contexts where such side effects are unexpected and risky.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The documented behavior includes local filesystem writes to config.json, environment/API-key handling, and local state changes, which are materially different from a pure marketplace client. When a skill's description focuses on ACP commerce but underplays local secret storage and host-side mutation, agents may run it in contexts where such side effects are unexpected and risky.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The documented behavior includes local filesystem writes to config.json, environment/API-key handling, and local state changes, which are materially different from a pure marketplace client. When a skill's description focuses on ACP commerce but underplays local secret storage and host-side mutation, agents may run it in contexts where such side effects are unexpected and risky.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The documented behavior includes local filesystem writes to config.json, environment/API-key handling, and local state changes, which are materially different from a pure marketplace client. When a skill's description focuses on ACP commerce but underplays local secret storage and host-side mutation, agents may run it in contexts where such side effects are unexpected and risky.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
90% confidence
Finding

The documented behavior includes local filesystem writes to config.json, environment/API-key handling, and local state changes, which are materially different from a pure marketplace client. When a skill's description focuses on ACP commerce but underplays local secret storage and host-side mutation, agents may run it in contexts where such side effects are unexpected and risky.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The documented behavior includes local filesystem writes to config.json, environment/API-key handling, and local state changes, which are materially different from a pure marketplace client. When a skill's description focuses on ACP commerce but underplays local secret storage and host-side mutation, agents may run it in contexts where such side effects are unexpected and risky.

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 20)May include surrounding context.

md
Run from the **repo root** (where `package.json` lives). For machine-readable output, always append `--json`. The CLI prints JSON to stdout in `--json` mode. Yo

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Run from the **repo root** (where `package.json` lives). For machine-readable output, always append `--json`. The CLI prints JSON to stdout in `--json` mode. Yo

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill presents token launch as a routine command without a clear warning that it may create irreversible on-chain transactions, incur fees, affect fundraising/compliance posture, and expose the user to financial loss. Financially consequential blockchain actions require strong consent and risk disclosure because mistakes cannot easily be undone.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The seller runtime is described as automatically accepting requests, requesting payment, and delivering results by executing handlers, but there is no corresponding warning about autonomous external interactions or the risk of unsafe handler execution. In context, this is more dangerous because the skill is specifically designed to expose capabilities to external parties and monetize execution, which amplifies abuse, fraud, and unintended actions if handlers are weak or overprivileged.

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 120)May include surrounding context.

md
- **Repo root** — `SKILL.md`, `package.json`, `config.json` (do not commit). Run all commands from here.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- **bin/acp.ts** — Unified CLI entry point. Invoke with `acp <command> [subcommand] [args] --json`.

Known Vulnerable Dependency: axios==1.13.4 — 16 advisory(ies): CVE-2026-44494 (axios Vulnerable to Full Man-in-the-Middle via Prototype Pollution Gadget in `co); CVE-2026-44495 (axios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollut); CVE-2025-62718 (Axios has a NO_PROXY Hostname Normalization Bypass that Leads to SSRF) +13 more

High
Category
Supply Chain
Confidence
96% confidence
Finding

The lockfile pins axios 1.13.4, which is reported with multiple advisories including SSRF and prototype-pollution-related exploitation paths. In this skill, axios is a direct runtime dependency and the skill explicitly interacts with external agents and network endpoints, which increases the likelihood that attacker-controlled URLs, redirects, proxy settings, or response handling could be involved.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: form-data==4.0.5 — 1 advisory(ies): CVE-2026-12143 (form-data: CRLF injection in form-data via unescaped multipart field names and f)

High
Category
Supply Chain
Confidence
84% confidence
Finding

form-data 4.0.5 is reported as vulnerable to CRLF injection through unescaped multipart field names and filenames. If this skill ever constructs multipart requests using untrusted values from agent marketplace metadata, uploaded artifacts, or user-controlled inputs, an attacker may be able to manipulate request structure or smuggle unexpected headers/content.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: socket.io-parser==4.2.5 — 2 advisory(ies): CVE-2026-69185 (Socket.IO: Zero-attachment Memory Exhaustion); CVE-2026-33151 (socket.io allows an unbounded number of binary attachments)

High
Category
Supply Chain
Confidence
92% confidence
Finding

socket.io-parser 4.2.5 is flagged for unbounded attachment handling and memory exhaustion conditions. Since this skill uses socket.io-client to interact with remote parties, a malicious peer or server could send crafted payloads that consume excessive memory and destabilize the agent process, causing denial of service.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: ws==8.18.3 — 2 advisory(ies): CVE-2026-45736 (ws: Uninitialized memory disclosure); CVE-2026-48779 (ws: Memory exhaustion DoS from tiny fragments and data chunks)

High
Category
Supply Chain
Confidence
91% confidence
Finding

ws 8.18.3 is reported with memory disclosure and memory exhaustion issues. Because this package underlies real-time network communication with external systems, a hostile server or intermediary could exploit frame fragmentation or protocol handling weaknesses to crash the client, exhaust memory, or potentially expose sensitive process data.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: axios==1.13.4 — 16 advisory(ies): CVE-2026-44494 (axios Vulnerable to Full Man-in-the-Middle via Prototype Pollution Gadget in `co); CVE-2026-44495 (axios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollut); CVE-2025-62718 (Axios has a NO_PROXY Hostname Normalization Bypass that Leads to SSRF) +13 more

High
Category
Supply Chain
Confidence
98% confidence
Finding

This package depends on axios 1.13.4, which the finding identifies as having multiple known advisories, including SSRF and prototype-pollution-related exploitation paths. In this skill's context, the agent interacts with external services, wallets, marketplaces, and other agents, so a vulnerable HTTP client is more dangerous because it may handle untrusted URLs, proxy settings, credentials, and responses in security-sensitive network flows.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The README states that sensitive credentials such as an API key and session token are stored in a local config.json file, but it does not warn users to protect that file, restrict permissions, or avoid sharing it. In the context of a tool that manages wallets, marketplace actions, and token-launch capability, theft of this file could let an attacker impersonate the agent account and perform unauthorized actions.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill declares operational capabilities that involve environment access, network use, local config handling, and process/runtime management, but it does not declare any tool scope or permissions boundary. That omission makes it harder for a host agent or reviewer to understand and constrain what the skill may do, increasing the risk of overbroad execution and accidental misuse.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill tells the agent to run setup that performs authentication and writes an API key into config.json, but it does not prominently warn about credential storage, persistence, file permissions, or leakage risk. This is dangerous because secrets may be stored in the repo directory, exposed to other tools or commits, or handled without informed user consent.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dangerous_exec

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
src/commands/serve.ts:86

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
src/commands/setup.ts:52

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
src/lib/config.ts:142

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
src/lib/open.ts:20