Back to skill

Security audit

can i use

Security checks for vulnerabilities and agentic risk

Overview

This browser-compatibility skill has a coherent purpose, but it needs review because it directs agents to run user-derived feature names through a shell-style command and suggests a global npm install.

Before installing, make sure agents only run caniuse with known feature identifiers or literal argument execution, not interpolated shell strings. Prefer a pinned, project-local install of the CLI over the suggested global npm install when possible.

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
SKILL.md:26
Finding

Shell Command Injection Through an Unvalidated Feature Name

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 26–30
Vulnerability Type: Command injection through user-controlled command arguments
Risk Level: High

Vulnerable code:

bash
Run the caniuse command with the feature name:

```bash
caniuse <feature-name>
text

### Technical Analysis

The Skill instructs the Agent to place a feature name derived from the user's request directly into a command template. It does not require argument-array execution, validation against known feature identifiers, shell escaping, or rejection of shell metacharacters.

If the Agent constructs this command as a shell string, characters such as command separators, command substitutions, redirections, or pipes can cause the shell to interpret part of the feature name as a separate operation. Quoting some example phrases elsewhere in the file does not establish a safe and consistently enforced execution mechanism.

The vulnerability is therefore exploitable when an attacker controls the requested feature name and the Agent substitutes it into a shell command.

### Attack Path

1. An attacker submits a browser-compatibility request containing shell syntax as the purported feature name.
2. The Agent follows the documented `caniuse <feature-name>` template and interpolates that value into a shell command.
3. The command is executed through a shell without strict validation or argument-safe invocation.
4. The shell parses the injected syntax as additional commands, substitutions, pipes, or redirections.
5. The injected operation executes with the same operating-system privileges and filesystem access as the Agent process.

### Impact Assessment

Successful exploitation can provide arbitrary command execution under the Agent's account. Depending on that account's permissions, an attacker could read or modify accessible files, disclose environment variables and credentials, alter project artifacts, invoke netw
...[truncated 322 chars]
Remediation
View remediation

Remediation Suggestions

  • Execute caniuse directly through a process API that accepts a program and argument array, rather than constructing a shell command. For example, pass the feature name as one literal argument.
  • Disable shell interpretation explicitly when supported by the execution tool.
  • Validate feature identifiers against a strict allowlist or a conservative pattern appropriate for known Can I Use identifiers.
  • Prefer the documented mapping table and reject unexpected control characters, whitespace, shell operators, substitutions, redirections, and newline characters.
  • Use an end-of-options delimiter such as -- if the selected CLI supports it, preventing feature names beginning with - from being interpreted as options.
  • Do not rely solely on ad hoc quoting because quoting errors and platform-specific shell behavior can reintroduce injection.
  • Document a safe failure path for unknown feature names instead of trying arbitrary shell-formatted variations.

T08 · Insecure Dependencies

Warning
Location
SKILL.md:18
Finding

Unpinned Global Installation of a Third-Party npm Package

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 18–22
Vulnerability Type: Unsafe third-party dependency installation guidance
Risk Level: Medium

Vulnerable code:

markdown
If not installed, tell the user:
> caniuse-cli is not installed. Install it with:
> ```bash
> npm install -g @bramus/caniuse-cli
> ```

Technical Analysis

The Skill recommends globally installing the latest package version resolved for @bramus/caniuse-cli. The command does not pin a reviewed version, verify package integrity or provenance, use a lockfile, or constrain the package registry.

npm package installation may also execute package lifecycle scripts. A compromised package release, registry account, dependency, or registry configuration could therefore cause code to run during installation. Global installation increases the affected scope by placing executable tooling in shared user-level or system-level locations and making it available outside the current project.

This finding does not establish that the named package is currently malicious. The risk results from the mutable, unverified, and global dependency-installation procedure.

Attack Path

  1. The requested CLI is not installed on the target environment.
  2. The user follows the Skill's suggested global npm installation command.
  3. npm resolves the package and its transitive dependencies from the configured registry without a pinned version or lockfile.
  4. A compromised or unexpectedly modified package version is downloaded.
  5. Malicious lifecycle code executes during installation, or a malicious executable is installed globally.
  6. The compromised CLI can run immediately or when later browser-compatibility queries invoke the globally installed caniuse command.

Impact Assessment

Installation-time code runs with the privileges of the user executing npm. It may access that user's files, credentials, environment variable ...[truncated 444 chars]

Remediation
View remediation

Remediation Suggestions

  • Pin the dependency to a specifically reviewed version rather than installing the mutable latest release.
  • Prefer a project-local development dependency governed by a committed lockfile instead of a global installation.
  • Verify package identity, publisher, provenance, registry source, and integrity before installation.
  • Use a trusted, explicitly configured registry and apply organizational package-allowlist controls where available.
  • Consider disabling lifecycle scripts during installation when compatible with the package's documented requirements.
  • Avoid administrative or root privileges for npm installation.
  • Document a review and update process so version upgrades are assessed before adoption.
  • If installation cannot be performed safely, direct the user to the official Can I Use website rather than automatically installing additional tooling.
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (1)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger criteria are broad enough to activate on general coding or web-development requests whenever compatibility is only incidental, causing the agent to invoke this skill more often than intended. While this is not directly code-execution or data-exfiltration behavior, overbroad activation can misroute user requests, increase unnecessary shell command usage, and expand the attack surface for tool invocation.

Content

No source excerpt is available for this finding.