T09 · Insecure Skill Coding Practices
- Location
scripts/run-mission-control-visual-qa.sh:8- Finding
Remote Command Injection Through Unvalidated Directory Environment Variables
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill does what it claims, but it runs commands on a remote machine and opens user-supplied URLs without enough guardrails.
Install only if you trust the operator and will run it against a tightly controlled SSH target. Use a dedicated low-privilege remote account, keep OUTPUT_DIR and REMOTE_RUN_DIR fixed to safe paths, avoid attacker-controlled URLs, and restrict the runner to approved Mission Control hosts before using it on sensitive environments.
scripts/run-mission-control-visual-qa.sh:8Remote Command Injection Through Unvalidated Directory Environment Variables
scripts/mission-control-visual-qa.js:25Unrestricted URL Navigation in an Unsandboxed Chromium Process
Referenced artifact was not completely inspected
- `scripts/mission-control-visual-qa.js`: Puppeteer-based remote runner (intended to run on REMOTE).
Referenced artifact was not completely inspected
- `scripts/run-mission-control-visual-qa.sh`: Local helper that copies and runs the Node script over `scp` + `ssh`.
Referenced artifact was not completely inspected
- `scripts/run-mission-control-visual-qa.sh`: Local helper that copies and runs the Node script over `scp` + `ssh`.
The skill declares operational behavior involving environment variables (SSH_TARGET, REMOTE_RUN_DIR, OUTPUT_DIR) and remote execution over SSH/SCP, but it does not define any explicit tool scope or permission boundaries. This creates a trust gap where an agent or user may invoke capabilities affecting local environment and remote systems without clear, machine-readable restrictions, increasing the chance of unintended command execution against the wrong host or path.
The script navigates a headless browser to arbitrary user-supplied URLs, which causes outbound network requests and page execution without any guardrails, warnings, or allowlisting. In this skill context, that can expose the host's network position, trigger requests to internal services or sensitive endpoints, and execute untrusted page content in Chromium during QA runs.
The script saves full-page screenshots of visited pages to disk automatically, with no warning, minimization, or redaction. In a visual QA skill, screenshots can capture sensitive application data, secrets, internal dashboards, and user content, leaving potentially persistent artifacts in a predictable workspace directory.
The script creates directories on a remote host via SSH and copies a local script to that host via SCP, which are safety-relevant operations affecting remote system state. Aside from the usage line, there is no confirmation prompt, user-facing disclosure, or explanatory comment warning that the script will connect to a remote machine and modify files there.
This line executes a Node.js script on the remote host over SSH using user-supplied URL arguments, which is a subprocess/shell execution on another system. The file does not include any visible warning, confirmation, or descriptive comment telling the user that arbitrary remote execution will occur as part of running this wrapper.
No suspicious patterns detected.