Back to skill

Security audit

text-to-speech

Security checks for vulnerabilities and agentic risk

Overview

The skill is purpose-aligned, but it should be reviewed because it encourages unpinned npm-based skill installation, including global installs that skip confirmation prompts.

Review this skill carefully before installing. Only use it when you explicitly want to search for external skills, avoid global non-interactive installs by default, verify the source and exact version or commit of any skill, and do not run unpinned `npx` commands unless you trust the resolved package path.

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

T08 · Insecure Dependencies

Warning
Location
SKILL.md:24
Finding
Unpinned Third-Party CLI Execution and Unreviewed Global Skill Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 24–28 and 73–80 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium ### Vulnerable Code ```markdown **Key commands:** - `npx skills find [query]` - Search for skills interactively or by keyword - `npx skills add <package>` - Install a skill from GitHub or other sources - `npx skills check` - Check for skill updates - `npx skills update` - Update all installed skills ``` ```markdown ### Step 4: Offer to Install If the user wants to proceed, you can install the skill for them: ```bash npx skills add <owner/repo@skill> -g -y ``` The `-g` flag installs globally (user-level) and `-y` skips confirmation prompts. ``` ### Technical Analysis The skill instructs the agent to invoke `npx skills` without pinning the CLI to an audited version or integrity hash. Depending on the local npm environment, `npx` can retrieve and execute the named package from an external registry. The effective CLI implementation can therefore differ from the implementation reviewed when this skill was published. The CLI is subsequently used to locate and install skills from third-party repositories. The recommended installation command combines two security-sensitive options: - `-g` installs the selected skill globally at the user level, expanding its effects beyond the current project. - `-y` suppresses confirmation prompts, reducing the opportunity for the user to verify the source and resolved package before installation. The instructions do require the user to want to proceed, so this is not evidence of covert or automatically triggered installation. Nevertheless, the workflow does not require source inspection, immutable commit pinning, integrity validation, publisher verification, or sandboxing before third-party content is executed or installed. ### Attack Path 1. An attacker publishes, compromises, or takes control of the `skills` npm package, a package resolved through it, or a ...[truncated 1710 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin the CLI to an exact, audited version instead of invoking an unversioned package: ```bash npx --yes skills@<audited-exact-version> find <query> ``` Record and verify the package integrity hash through a lockfile or an equivalent trusted mechanism. 2. Do not recommend global, non-interactive installation by default. Replace: ```bash npx skills add <owner/repo@skill> -g -y ``` with a project-local, interactive installation command that preserves user confirmation. 3. Require explicit approval immediately before any retrieval or installation. Display the exact publisher, repository URL, resolved version, and commit hash to the user. 4. Pin third-party skills to immutable commit hashes or signed releases. Do not install directly from a mutable branch, tag, or unverified search result. 5. Inspect downloaded skill contents before activation, including instruction files, scripts, package manifests, lifecycle hooks, symbolic links, and referenced external resources. 6. Restrict acceptable sources to a maintained allowlist of trusted publishers and repositories. Verify repository ownership and release signatures where available. 7. Perform retrieval and installation in a sandbox with minimal filesystem, credential, environment-variable, and network access. 8. Separate discovery from installation. Searching for a skill must not automatically authorize downloading, executing, or globally registering it. 9. Document rollback procedures and provide a command that removes the installed skill and any user-level configuration it created. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (17)

Vague Triggers

Medium
Confidence
95% confidence
Finding
The skill description uses broad help-seeking language like 'how do I do X' and 'find a skill for X,' which can cause over-triggering in ordinary conversations. In practice, that can steer the agent toward unnecessary package discovery/installation flows, increasing exposure to supply-chain and prompt-routing risks even when the user did not explicitly ask to install external capabilities.

Vague Triggers

Medium
Confidence
93% confidence
Finding
The 'When to Use This Skill' section contains ambiguous triggers such as users asking 'can you do X' or expressing interest in extending capabilities. These conditions are broad enough to capture many benign requests and may route users into external package search and installation guidance without sufficiently clear need or consent.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding
The skill repeatedly instructs the agent/user to invoke `npx skills` without pinning a package version or verifying integrity. `npx` fetches and executes code from the registry at runtime, so a compromised package, malicious update, or dependency confusion event could lead to arbitrary code execution on the host.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding
This command reference uses `npx skills` without version pinning, causing execution of whatever package version is current at the time of use. In a skill whose purpose is discovering and installing more code, this expands supply-chain risk because the initial unpinned tool can itself fetch and run additional untrusted content.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding
Using `npx skills add <package>` without pinning the CLI version means the execution path depends on mutable remote package state. That creates a direct route for arbitrary code execution if the CLI or its transitive dependencies are compromised.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
Even the update-check path uses an unpinned `npx` invocation, which still requires downloading and running mutable remote code. While lower impact than direct installation, it remains a supply-chain execution risk.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The `npx skills update` instruction executes an unpinned remote package and then updates installed skills, compounding supply-chain risk in a single step. An attacker controlling either the CLI release path or an update source could achieve code execution and persistence through updated skills.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The search step tells the agent to run `npx skills find [query]` without version pinning, again relying on live remote package execution. Because this skill is likely to be triggered often, the repeated unpinned execution increases exposure frequency.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
This example command uses the same unpinned `npx skills` pattern, exposing users to remote code execution via mutable package resolution. Example commands are especially risky because users commonly copy-paste them verbatim.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The PR review search example invokes `npx skills` without any version or integrity constraint. This is a true supply-chain vulnerability because the documentation normalizes executing network-fetched code directly.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The changelog search example repeats the same unsafe package execution pattern. In aggregate, the document systematically encourages unsafe operational behavior rather than containing an isolated mention.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The installation recommendation `npx skills add <owner/repo@skill>` relies on an unpinned CLI and then installs third-party skill content from external sources. That combination materially increases the chance of executing malicious code or instructions from either the CLI or the installed skill.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The sample install command is another copy-pasteable unpinned `npx` invocation leading directly to skill installation. Because users are likely to execute it exactly as shown, this is an actionable and exploitable supply-chain risk.

Missing User Warnings

Medium
Confidence
98% confidence
Finding
The installation guidance recommends `-g -y` but does not warn that this performs a global install and bypasses confirmation prompts. This meaningfully increases risk because it encourages system-wide changes and suppresses the last interactive checkpoint before executing or installing potentially untrusted third-party content.

Rp1

Medium
Category
MCP Rug Pull
Confidence
97% confidence
Finding
`npx skills add <owner/repo@skill> -g -y` is particularly dangerous because it combines unpinned remote code execution with global installation and suppressed confirmation prompts. This reduces friction for unsafe changes and can install unreviewed capabilities system-wide or user-wide without meaningful user validation.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
Suggesting `npx skills init` without version pinning still executes mutable remote code from the registry. Even though initialization may seem lower risk, it can still run arbitrary install-time logic or scaffolding hooks.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The final example again normalizes unpinned `npx` execution in a context where users may be creating and later distributing new skills. This perpetuates insecure supply-chain practices across the ecosystem.

Static analysis

No suspicious patterns detected.