Back to skill

Security audit

Volcengine Prepare

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly fits Volcengine deployment planning, but its analyzer automatically reads full environment and config files that may contain secrets.

Review this skill before installing if your repositories may contain real .env files or production config. The main risk is unnecessary local handling of secrets during analysis, not observed exfiltration. Prefer a version that excludes real secret-bearing files by default, scans only templates or allowlisted keys, and requires explicit consent before reading sensitive config.

Vulnerability Patterns
  • 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
  • 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
Findings (2)

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
scripts/analyze-repo.sh:248
Finding

Analyzer Reads Secret-Bearing Environment Files in Full

Content
View full analysis
/dev/null || true)" done < <(find . -maxdepth 5 \( -name "*.js" -o -name "*.ts" -o -name "*.py" \ -o -name "*.go" -o -name "*.java" -o -name "*.rs" -o -name "*.rb" -o -name "*.php" \ -o -name "*.env" -o -name "*.env.example" \ -o -name "application.yml" -o -name "application.properties" \) 2>/dev/null | head -100) ``` ```bash # Config files for f in compose.yaml compose.yml docker-compose.yml docker-compose.yaml .env .env.example \ .env.sample config.yml config.yaml application.yml application.properties \ appsettings.json; do [ -f "$f" ] && search_content="$search_content $(cat "$f" 2>/dev/null || true)" done ``` ### Technical Analysis The repository analyzer reads the complete contents of `.env` files into shell variables while detecting ports and runtime dependencies. Real `.env` files commonly contain database passwords, API credentials, access tokens, private endpoints, and other production secrets. Reading all values violates least-privilege principles because the analyzer only needs deployment metadata, such as variable names, non-sensitive port settings, and dependency indicators. Secret values are not required for this analysis. The reviewed code does not transmit or print the collected values, so direct exfiltration is not confirmed. Nevertheless, placing secrets in process memory unnecessarily expands their exposure to shell tracing, debugging facilities, crash diagnostics, process inspection available to sufficiently privileged local users, and future modifications that might log the analysis buffers. ### Attack Path 1. A user invokes the Skill against a repository containing a real `.env` file. 2. The port-de ...[truncated 1194 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Note
Location
scripts/analyze-repo.sh:459
Finding

User-Controlled Paths Are Written to JSON Without Escaping

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (5)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The declared description says this skill should evaluate a codebase/repository for Volcengine readiness and recommend an execution mode (ECS, VKE, veFaaS). The actual code only checks whether certain Volcengine services are reachable/available in the selected region via the ve CLI. That may be a supporting sub-step for deployment planning, but by itself it is materially narrower and different from the declared primary purpose. The script neither reads project files nor infers application architecture nor produces any ranked recommendation. It also includes CR probing, which is not mentioned in the declared purpose as part of the recommendation set.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
95% confidence
Finding

The script reads and concatenates the contents of up to 100 source and configuration files, including .env and application config files, into shell variables in order to infer a port. In the context of an agent skill that analyzes arbitrary user repositories before deployment, this creates unnecessary access to secrets and sensitive configuration data; those secrets may then be exposed through logs, crashes, debugging, downstream prompts, or later code changes that emit analyzed content.

Content

Scanner excerpt · scripts/analyze-repo.sh (reported line 253)May include surrounding context.

sh
all_code="$all_code $(cat "$f" 2>/dev/null || true)"
  done < <(find . -maxdepth 5 \( -name "*.js" -o -name "*.ts" -o -name "*.py" \
    -o -name "*.go" -o -name "*.java" -o -name "*.rs" -o -name "*.rb" -o -name "*.php" \
    -o -name "*.env" -o -name "*.env.example" \
    -o -name "application.yml" -o -name "application.properties" \) 2>/dev/null | head -100)

  port=$(echo "$all_code" | grep -oiE 'port\s*[=:]\s*[0-9]+' | grep -oE '[0-9]+' | head -1)

Credential Access

High
Category
Privilege Escalation
Confidence
97% confidence
Finding

The dependency detector explicitly reads whole configuration files including .env, .env.example, and appsettings.json into a single variable for keyword matching. Because this skill operates on untrusted repositories and is meant for deployment preparation, collecting complete secret-containing files is overbroad and increases the chance of credential disclosure to logs, memory inspection, downstream tooling, or future output paths, even if the current script does not intentionally print the secrets.

Content

Scanner excerpt · scripts/analyze-repo.sh (reported line 283)May include surrounding context.

sh
local search_content=""

  # Config files
  for f in compose.yaml compose.yml docker-compose.yml docker-compose.yaml .env .env.example \
    .env.sample config.yml config.yaml application.yml application.properties \
    appsettings.json; do
    [ -f "$f" ] && search_content="$search_content $(cat "$f" 2>/dev/null || true)"

Scope Creep

Low
Category
Excessive Agency
Confidence
70% confidence
Finding

Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Content

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

md
Before ranking, identify whether there is a concrete deploy target for ECS, VKE, or veFaaS: something that can be run, containerized, exposed, or served by one of those paths.

Useful evidence includes, but is not limited to: a long-running process, start command, listening port, RPC/API/HTTP route, health/smoke endpoint, static/frontend build output intended to be served, clear frontend/backend service boundaries, existing veFaaS app/function, or a user-provided subdirectory, service, command, artifact, or runtime target.

If the surface is unclear, ask one focused follow-up before giving a strong recommendation:

Scope Creep

Low
Category
Excessive Agency
Confidence
70% confidence
Finding

Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Content

Scanner excerpt · references/deploy-mode-heuristics.md (reported line 15)May include surrounding context.

md
Before ranking, identify whether there is a concrete deploy target for ECS, VKE, or veFaaS: something that can be run, containerized, exposed, or served by one of those paths.

Useful evidence includes, but is not limited to: a long-running process, start command, listening port, RPC/API/HTTP route, health/smoke endpoint, static/frontend build output intended to be served, clear frontend/backend service boundaries, existing veFaaS app/function, or a user-provided subdirectory, service, command, artifact, or runtime target.

If the surface is unclear, ask one focused follow-up before giving a strong recommendation:

Static analysis

No suspicious patterns detected.