Back to skill

Security audit

VPS Command Runner

Security checks for vulnerabilities and agentic risk

Overview

This skill does what it claims, but it asks users to run fleet-wide SSH commands with plaintext passwords and weakened host verification.

Review before installing. Use only with dedicated, least-privileged VPS accounts, replace password-based sshpass use with SSH keys or a secret manager, remove StrictHostKeyChecking=no, verify host keys, and avoid running fleet-wide write or deployment commands without a separate confirmation and rollback plan.

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
scripts/run-all.sh:25
Finding

SSH Host Identity Verification Is Disabled

Content
View full analysis
&1 ``` `scripts/run.sh:18`: ```bash sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "$USER@$VPS" "$COMMAND" 2>&1 ``` `scripts/status.sh:31,35-37`: ```bash elif sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 "$USER@$VPS" "echo OK" 2>/dev/null | grep -q "OK"; then echo "✅ Online" # Get basic stats UPTIME=$(sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 "$USER@$VPS" "uptime -p" 2>/dev/null) LOAD=$(sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 "$USER@$VPS" "cat /proc/loadavg | cut -d' ' -f1-3" 2>/dev/null) PROVIDERS=$(sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 "$USER@$VPS" "docker ps --filter name=urnetwork --format '{{.Names}}' 2>/dev/null | wc -l" 2>/dev/null) ``` ### Technical Analysis Every SSH invocation explicitly sets `StrictHostKeyChecking=no`. This causes previously unknown SSH host keys to be accepted without administrator verification, undermining SSH's server-authentication guarantee. When a target has no trusted key already recorded, an attacker able to manipulate DNS, routing, ARP, or another relevant network layer can impersonate the VPS. Because password authentication is used, the SSH session terminates at the impersonating server and the supplied password can be captured. The attacker can also provide falsified command results to the operator. The behavior is repeated across all three executable scripts, including every remote health-check request. ### Attack Path 1. An attacker gains a position capable of redirecting traffic intended for ...[truncated 1188 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/run-all.sh:11
Finding

Reusable SSH Passwords Are Stored in Plaintext and Passed to sshpass

Content
View full analysis
&1 ``` `scripts/run.sh:5-6,18`: ```bash USER="YOUR_USERNAME" PASS="YOUR_PASSWORD" ``` ```bash sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 "$USER@$VPS" "$COMMAND" 2>&1 ``` `scripts/status.sh:11-12,31,35-37`: ```bash USER="YOUR_USERNAME" PASS="YOUR_PASSWORD" ``` ```bash elif sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 "$USER@$VPS" "echo OK" 2>/dev/null | grep -q "OK"; then echo "✅ Online" # Get basic stats UPTIME=$(sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 "$USER@$VPS" "uptime -p" 2>/dev/null) LOAD=$(sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 "$USER@$VPS" "cat /proc/loadavg | cut -d' ' -f1-3" 2>/dev/null) PROVIDERS=$(sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 "$USER@$VPS" "docker ps --filter name=urnetwork --format '{{.Names}}' 2>/dev/null | wc -l" 2>/dev/null) ``` ### Technical Analysis The setup documentation directs users to save reusable usernames and passwords as literal values in executable source files. Anyone who can read the Skill directory, a source-control copy, a backup, an artifact, or an accidentally shared archive can recover these credentials. The scripts then provide the password through `sshpass -p`. Command-line password handling ...[truncated 1798 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (13)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The skill describes itself as a general multi-VPS management tool, but the surrounding documentation indicates security-relevant behavior not disclosed in the description, including password-based SSH and weakened host verification. That mismatch is dangerous because users may invoke the skill under broader trust assumptions while it relies on risky authentication patterns that increase credential theft and man-in-the-middle exposure.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The skill describes itself as a general multi-VPS management tool, but the surrounding documentation indicates security-relevant behavior not disclosed in the description, including password-based SSH and weakened host verification. That mismatch is dangerous because users may invoke the skill under broader trust assumptions while it relies on risky authentication patterns that increase credential theft and man-in-the-middle exposure.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The setup instructions advise embedding usernames and passwords directly into scripts, which creates a clear credential exposure risk through file leakage, shell history, backups, repositories, or local compromise. In a skill intended to administer multiple VPS hosts, one exposed script can grant broad administrative access and enable lateral movement across the fleet.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest description says to use the skill for broad situations like 'managing multiple VPS', 'checking status', or 'deploying changes' without defining specific trigger phrases or exclusion conditions. In a skill-routing context, this ambiguity can overlap with many ordinary infrastructure requests and cause unintended invocation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The documentation encourages running arbitrary commands and deployments across all servers without any guardrails, warnings, or approval checkpoints. In a fleet-management context, a mistaken or maliciously crafted command could rapidly propagate outages, data loss, or service disruption across every managed VPS.

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
99% confidence
Finding

The script stores SSH credentials in plaintext variables and passes the password to sshpass, exposing secrets in the script, shell history/workflows, backups, and potentially process inspection on the local system. Combined with StrictHostKeyChecking=no, stolen credentials can be used to access all listed servers and users are more vulnerable to man-in-the-middle interception.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The script takes an arbitrary command string from user input and executes it on every configured VPS over SSH with no allowlist, confirmation, or environment-specific guardrails. In a multi-host administration skill, this greatly amplifies mistakes or abuse because a destructive or injected command can be propagated fleet-wide in a single invocation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
99% confidence
Finding

The script instructs users to place a username and password directly in the file, creating embedded credentials that are likely to be exposed through source control, backups, local file reads, or accidental sharing. Because the credential is then used for SSH access to infrastructure, compromise of the script can directly lead to unauthorized server access.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest describes running commands across multiple VPS simultaneously and managing all servers from one place, but this script accepts exactly one IP address and executes the command on only that single host. This is a direct semantic mismatch between the advertised multi-host orchestration capability and the implemented per-host execution behavior.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The script performs arbitrary remote command execution over SSH using user-supplied input, with no confirmation, no allowlist, and no safety controls; in infrastructure-management context this can execute destructive commands across production systems. The danger is amplified by the use of password-based automation and disabled host key checking, which lowers resistance to misuse and interception.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
99% confidence
Finding

The script requires a plaintext password variable and passes it to sshpass, which exposes credentials to shell history, process inspection, accidental commits, and local file disclosure. In a multi-VPS administration skill, these credentials can grant broad infrastructure access, so compromise of the operator workstation or repository could lead to full remote server compromise.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

Using SSH with StrictHostKeyChecking=no disables server identity verification, allowing a man-in-the-middle attacker to impersonate target hosts and capture credentials or return falsified status data. Combined with password-based sshpass authentication, this is especially dangerous because the password can be disclosed directly to an attacker intercepting the connection.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.