T09 · Insecure Skill Coding Practices
- Location
SKILL.md:37- Finding
Shell Command Injection Through Unquoted Dynamic Parameters
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a coherent web QA skill, but it needs Review because it handles login credentials, saves reusable auth state, and permits risky command patterns.
Install only if you are comfortable with automated browser testing against the target app. Prefer local or staging targets, use least-privileged test accounts, avoid production credentials, keep the output directory private, do not share auth-state.json, and remove or pin the npx agent-browser allowance before relying on it.
SKILL.md:37Shell Command Injection Through Unquoted Dynamic Parameters
SKILL.md:64Authentication Credentials Exposed in Process Arguments and Execution Logs
SKILL.md:75Reusable Authentication State Stored Without Access or Retention Controls
The skill manifest references an MCP/tool execution path via npx agent-browser without version pinning. That exposes users to package drift and potential supply-chain compromise, especially because skills are meant to automate execution and may run without close review each time.
The trigger phrases are broad enough that the skill could activate on ordinary requests about reviewing or testing a site, causing an agent to launch high-impact browser automation unexpectedly. In this skill's context, activation can lead to navigation, interaction, screenshotting, console inspection, and persistence of artifacts, so accidental invocation increases operational and privacy risk.
The manifest permits Bash(npx agent-browser:*), which allows execution of an unpinned package from the npm ecosystem. Even though the document text prefers the direct binary, leaving the npx path available creates a supply-chain risk if the package or resolution path is compromised or changes unexpectedly.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
The skill instructs saving authenticated browser state to disk as auth-state.json without warning the user or specifying storage protections, retention, or cleanup. Session state may contain cookies or tokens that can be reused to access the target account, making this especially sensitive in a QA skill that routinely authenticates into real applications.
The inline documentation actively forbids using npx agent-browser, stating it should never be used. Yet the same skill manifest declares Bash(npx agent-browser:*) as an allowed tool, which contradicts the documented intent about how the skill should operate.
The guidance explicitly instructs the operator to use type rather than fill when recording video so input appears human-paced. However, the concrete command examples for login and repro actions only demonstrate fill, which contradicts that stated instruction and could lead operators to follow behavior the documentation says not to use.
No suspicious patterns detected.