Back to skill

Security audit

Deployment Kit

Security checks for vulnerabilities and agentic risk

Overview

This deployment skill matches its stated purpose, but it needs review because its Docker manager can execute unsafe shell commands from configuration values and uses mutable container images.

Review before installing on any real host. Use it only in a controlled environment unless the shell-command construction is fixed with argument-based process execution and input validation, images are pinned, and production deployments require explicit approval. Expect it to start, stop, remove, and persist Docker services and volumes.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T09 · Insecure Skill Coding Practices

Error
Location
src/deploy-manager.js:33
Finding

Shell Command Injection Through Deployment Configuration

Content
View full analysis
nul || true`); await execAsync(`docker rm ${this.config.containerName} 2>nul || true`); // Start the new container const { stdout } = await execAsync( `docker run -d -p ${this.config.port}:${this.config.port} ` + `--name ${this.config.containerName} ${this.config.imageName}:latest` ); ``` ```javascript const { stdout } = await execAsync( `docker ps -q -f name=${this.config.containerName}` ); ``` ```javascript const { stdout } = await execAsync( `netstat -an | findstr :${this.config.port}` ); ``` ```javascript const { stdout } = await execAsync( `docker logs --tail ${lines} ${this.config.containerName}` ); ``` ```javascript await execAsync(`docker stop ${this.config.containerName}`); ``` ### Technical Analysis The application executes Docker and operating-system commands through `child_process.exec`. Unlike an argument-based process API, `exec` passes the constructed string to a command shell. The following caller-controlled values are directly interpolated into shell commands without validation or escaping: - `config.imageName` - `config.containerName` - `config.port` - The `lines` argument passed to `getLogs()` An attacker who can control any of these values can introduce shell metacharacters such as command separators, substitutions, redirections, or pipelines. The shell will interpret the injected content as an additional command rather than as a Docker argument. The constructor also applies `...config` after the default properties, so arbitrary supplied values remain accepted wit ...[truncated 1748 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
docker/docker-compose.yml:10
Finding

Mutable and Unpinned Container Images Create a Supply-Chain Risk

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (12)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/health-check.js

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/health-check.js

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The skill documents automatic deployment to production on pushes to main and on release publication, but it does not include a prominent warning that this can trigger real system changes in live environments. In an agent skill context, omission of explicit safeguards increases the chance that a user or automation will invoke deployment behavior without understanding the operational impact, potentially causing outages or unintended releases.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The code stops and removes an existing container via subprocess calls, which is a destructive operational change. Although comments describe the action, there is no user-facing confirmation, warning, or visible disclosure that an existing container will be terminated and deleted.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

The markdown specifies the timezone as Asia/Shanghai in the image features and environment variable defaults, which is a locale-specific setting. The file does not offer a user choice or explain why this locale is required for a region-specific use case.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The configuration hard-codes TZ=Asia/Shanghai, which imposes a specific locale/timezone choice for the deployed service. Under the policy, forcing a language or locale setting without offering user choice or documenting a justified regional constraint is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The description string is written only in Chinese, which creates a natural-language locale constraint in the skill metadata without offering any language choice or documenting why the skill is region-specific. Under the policy, locale-specific language is only acceptable when user opt-in or clear justification is provided.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

This code includes user-facing natural-language strings and comments in Chinese, such as the script description and status labels, with no indication that the user can select another language. The policy specifically calls for flagging language or locale constraints when they are imposed without opt-in.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The code starts a new Docker container by invoking a shell command, which changes system state and exposes a network port. While this is aligned with a deployment tool's purpose, the file itself lacks a user-facing warning, prompt, or log message explaining that a container will be started and a port bound.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

This code file contains natural-language content in Chinese in the header and comments, while other output strings are in English. Under the policy rule, forcing a specific language without user opt-in can be a locale-policy violation when no rationale or language choice is provided.

Content

No source excerpt is available for this finding.