Back to skill

Security audit

Search Skills

Security checks for vulnerabilities and agentic risk

Overview

This skill is useful for finding agent skills, but it encourages broad, unpinned package execution and global installs that can change the user's agent environment.

Install only if you are comfortable with a skill that may prompt agents to search for and install third-party skills. Before running any suggested command, verify the CLI package and selected skill source, prefer pinned versions or reviewed local installs, avoid `-g -y` unless you intentionally want a global persistent install, and confirm each installation explicitly.

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

Error
Location
SKILL.md:24
Finding
Unpinned Third-Party CLI Execution and Unreviewed Global Skill Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 24–29, 49–50, and 75–80 **Vulnerability Type**: Supply-chain risk through unpinned dependencies and unsafe installation instructions **Risk Level**: High ### Vulnerable Code Lines 24–29: ```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 ``` Lines 49–50: ```bash npx skills find [query] ``` Lines 75–80: ```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 ``` ``` ### Technical Analysis The skill instructs the agent to execute `npx skills` without pinning the npm package to an exact, reviewed version or requiring integrity verification. Depending on the local npm configuration and cache state, `npx` can retrieve and execute the currently resolved package release from an external registry. Consequently, the code executed can change after this skill has been reviewed. The subsequent installation workflow accepts packages discovered through an external search service without requiring validation of repository ownership, immutable commit identifiers, package contents, installation hooks, or cryptographic integrity. The recommended `-g` option installs the selected skill globally at the user level, while `-y` suppresses confirmation prompts. Together, these options increase the scope and persistence of a compromised installation while removing an opportunity for manual review. This is a supply-chain weakness rather than evidence that the currently referenced CLI or any specific skill is malicious. Exploitation depends on compromise, replacement, dependency confusion, typosquatting, or malicious content in a selected third-party source. ### Attack Path 1. A ...[truncated 1707 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. **Pin the CLI to an audited version** - Use an exact version, such as `npx --yes skills@<reviewed-exact-version>`. - Do not use version ranges or floating tags such as `latest`. - Record and periodically review the approved version. 2. **Verify package identity and integrity** - Confirm the official npm package name, publisher, registry, and repository. - Use lockfiles and registry integrity metadata where the environment supports them. - Validate signatures, checksums, or provenance attestations before execution. 3. **Avoid implicit remote execution** - Prefer installing the approved CLI as a project-local, locked development dependency. - Execute it from the locked local dependency rather than allowing `npx` to fetch an arbitrary current release. - Run discovery operations in a restricted sandbox with minimal filesystem and credential access. 4. **Require skill-source review** - Verify repository ownership and reputation. - Inspect all skill files, scripts, package manifests, lifecycle hooks, and transitive dependencies. - Pin installations to an immutable commit hash or signed release rather than a mutable branch or tag. 5. **Remove unsafe installation defaults** - Do not recommend `-g` by default; prefer project-local or isolated installation. - Do not use `-y` for security-sensitive installation operations. - Display the exact source and resolved revision and obtain explicit user approval before installation. 6. **Apply least privilege** - Perform searches and installations without administrator privileges. - Prevent installation processes from accessing unrelated credentials, private keys, or sensitive workspaces. - Test newly obtained skills in a disposable environment before making them available to normal agent sessions. 7. **Separate discovery from installation** - Searching for a skill must not automatically authorize its installation. - Add a mandat ...[truncated 113 chars]
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
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (17)

Vague Triggers

Medium
Confidence
96% confidence
Finding
The activation criteria are broad enough to match many ordinary user requests such as 'how do I do X' or 'can you do X'. In context, that means the agent may invoke a skill that encourages package-manager commands and third-party skill discovery even when the user did not clearly ask to install or search for external code, increasing the chance of unnecessary exposure to supply-chain and prompt-routing risks.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
The skill repeatedly instructs use of `npx skills` without pinning an exact package version. Because `npx` resolves and executes code from the registry at run time, a compromised latest release, dependency hijack, or unexpected upstream change could cause arbitrary code execution on the user's machine.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
This command references `npx skills` without a pinned version, causing execution of whatever version the package registry serves at that moment. In a skill whose purpose is to discover and install more code, this expands supply-chain risk and can expose users to arbitrary code execution before they even select a skill.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
An unpinned `npx skills add` command permits dynamic retrieval and execution of the latest package version. If the package or one of its dependencies is malicious or tampered with, the installation flow could run attacker-controlled code and introduce persistent compromise.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
Using `npx skills check` without pinning the package version executes a mutable remote package. Even though the command appears informational, `npx` still runs code, so an attacker controlling the resolved package could perform arbitrary actions under the user's privileges.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
This `npx skills update` example is unpinned and directly supports fetching and changing installed components. In the event of registry compromise, dependency confusion, or malicious release, it could both execute arbitrary code and roll out unreviewed updates broadly.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding
The search step tells the agent to run `npx skills find [query]` without pinning. Because the skill encourages routine execution based on broad user prompts, this raises the chance of repeated remote code execution from an unversioned package.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding
This example command uses unpinned `npx skills` to search for React performance skills. The content appears low risk, but the execution primitive itself remains dangerous because it runs externally sourced JavaScript from a mutable version.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding
The PR review example again relies on an unpinned `npx skills` invocation. Repetition throughout the skill normalizes unsafe execution patterns and increases the likelihood that users or agents will run mutable code automatically.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding
This changelog search example also executes an unversioned package through `npx`. Because the skill is specifically about discovering and installing further extensions, the context amplifies the risk of chaining one untrusted execution into additional package installs.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding
The displayed install command `npx skills add <owner/repo@skill>` is unpinned and leads directly to installation of third-party content. This creates a double supply-chain issue: the CLI itself is mutable, and it is used to fetch additional code from external sources.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding
The example installation response tells users to run an unpinned `npx skills add` command. This is dangerous because it wraps a trust decision in a friendly recommendation, making users less likely to recognize they are executing mutable third-party code.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The skill advises global third-party installation with `-g -y` but does not provide a clear warning that this changes the user's environment and bypasses confirmations. In a package-installation context, this can lead to silent persistent changes, reduced user awareness, and easier accidental installation of malicious or unwanted code.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The skill recommends `npx skills add <owner/repo@skill> -g -y`, combining unpinned execution with global installation and suppressed confirmation prompts. This is especially risky because it facilitates silent, system-impacting installation of third-party code with minimal friction.

Rp1

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding
The suggestion to create a skill with `npx skills init` still relies on unpinned package execution. While less directly dangerous than install/update flows, it unnecessarily exposes users to the same mutable-package execution risk.

Rp1

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding
This final `npx skills init my-xyz-skill` example is another unpinned runtime package execution. Repeating the unsafe pattern across the document increases exposure and signals that exact versioning is not required, which is poor security practice.

Intent-Code Divergence

Low
Confidence
84% confidence
Finding
The example in the 'When No Skills Are Found' section is intended to describe the outcome of an attempted skill search, but the sentence says 'didn't search any matches' instead of indicating that no matches were found. This contradicts the surrounding instructions and could misstate what action actually occurred.

Static analysis

No suspicious patterns detected.