Back to skill

Security audit

Luke Find Skills

Security checks for vulnerabilities and agentic risk

Overview

The skill’s purpose is legitimate, but it can turn broad help requests into unpinned remote CLI execution and global third-party skill installs with skipped confirmations.

Review this skill carefully before installing. It is not malicious on the inspected evidence, but it should only be used when you explicitly want to search for or install skills. Prefer pinned CLI versions, inspect candidate skill source and publisher provenance first, avoid `-g -y` by default, and do not let it install or update skills automatically from search results.

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:21
Finding
Unpinned Third-Party CLI and Unattended Global Skill Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:21-29` and `SKILL.md:84-87` **Vulnerability Type**: Supply-chain risk from unpinned external dependencies and unreviewed skill sources **Risk Level**: High ### 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 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 directs the Agent to invoke `npx skills` without pinning the CLI to an exact, reviewed version. Depending on the local environment and npm cache, `npx` can retrieve and execute the current published version of the package. This creates a mutable remote dependency whose behavior may change after this skill has been reviewed. The installation workflow also permits packages discovered from GitHub or other external sources and recommends `-g -y`, which installs globally at the user level while suppressing confirmation prompts. The documented process does not require: - Pinning the CLI package to an exact version and integrity hash. - Pinning installed skills to immutable commit identifiers. - Restricting installation to an audited source allowlist. - Reviewing downloaded files before activation. - Verifying signatures, checksums, provenance, or publisher identity. - Obtaining explicit user confirmation immediately before installation. Consequently, compromise of the npm package, a referenced repository, or a similarly named dependency could introduce attacker-controlled code or instructions into the Agent environment. ### Attack Path 1. An attacker publishes a malicious or typosquatted skill, compromises a legitimate skill repository, or compromises the npm package resolved b ...[truncated 1520 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin the CLI to an exact reviewed version instead of invoking a mutable package name: ```bash npx --yes skills@<reviewed-exact-version> find <query> ``` Record and verify the package integrity hash through a lockfile or equivalent trusted mechanism. Do not use `--yes` for installation actions. 2. Require skills to be pinned to immutable commit hashes or signed releases rather than mutable repository branches or tags. 3. Establish an allowlist of reviewed publishers and repositories. Reject typosquatted names, unexpected forks, and sources without verifiable provenance. 4. Download candidate skills into an isolated temporary directory and inspect all instructions, scripts, manifests, lifecycle hooks, dependencies, and external network behavior before installation. 5. Verify checksums, signatures, publisher identity, and repository ownership. Re-run review whenever the pinned version or commit changes. 6. Remove `-y` from installation commands and require explicit, informed user approval after presenting the exact source, revision, requested installation scope, and review results. 7. Avoid `-g` by default. Prefer a task-local or isolated installation with minimum filesystem and network permissions. 8. Run discovery and installation tooling in a sandbox or container without sensitive environment variables, credentials, broad filesystem access, or elevated privileges. 9. Separate search from installation: search results must be treated as untrusted input and must never be installed automatically merely because they rank highly or use a familiar name. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (17)

Vague Triggers

Medium
Confidence
96% confidence
Finding
The description says the skill should be used for broad prompts like 'how do I do X' and 'can you do X', which overlap heavily with ordinary assistant requests. That ambiguity can cause unintended invocation of a skill that recommends remote package execution and third-party installs, exposing users even when they did not explicitly ask to manage extensions.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The activation conditions are broad enough to match many generic capability or help-seeking requests. In this file's context, accidental activation is more dangerous because the skill steers users toward unpinned `npx` commands and third-party skill installation workflows.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The skill repeatedly instructs use of `npx skills` without pinning a specific package version. Because `npx` resolves and executes code from the registry at runtime, an upstream compromise, typosquat, or unexpected breaking update could cause arbitrary code execution on the user's machine when they search for or install skills.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
This command reference uses `npx skills` without an exact version, causing the agent or user to fetch and run whatever package version is current at execution time. That creates a supply-chain execution path where malicious or compromised upstream content can immediately run locally.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
An unpinned `npx skills add` example encourages runtime execution of mutable remote package code. If the package manager resolves a compromised or changed version, the host may execute attacker-controlled code before the user understands the risk.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
Using `npx skills check` without version pinning still executes remote package code, even though the action appears read-only. Users may underestimate the risk because the command sounds harmless, but `npx` must first resolve and run the package.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
`npx skills update` is both unpinned and intended to modify installed components, compounding supply-chain risk. A compromised package or update path could alter multiple installed skills or execute arbitrary system commands.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The skill tells the agent to run `npx skills find [query]` with no version pinning. This creates an execution path from documentation to local code execution where upstream package changes can affect every invocation.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
This example embeds an unpinned `npx skills find react performance` command, normalizing unsafe execution of mutable remote code. Because the examples are task-oriented, users are likely to copy-paste them directly, increasing practical exploitability.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The PR review search example again relies on unpinned `npx` execution. Repetition across the document amplifies the chance that users will follow unsafe commands without questioning provenance or version integrity.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
This changelog search example uses the same unpinned runtime execution model. Even though the action is just discovery, the mechanism still grants arbitrary package code execution on the local host.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding
The installation instruction `npx skills add <owner/repo@skill>` is especially risky because it pairs unpinned CLI execution with installation of additional remote content. This creates layered supply-chain exposure: the CLI itself and the fetched skill source may both be compromised.

Rp1

Medium
Category
MCP Rug Pull
Confidence
97% confidence
Finding
The 'offer to install' step instructs direct execution of `npx skills add ... -g -y` without pinning the package version. This is dangerous because it both executes mutable remote code and installs software globally with minimal friction, increasing the blast radius of a compromise.

Missing User Warnings

Medium
Confidence
98% confidence
Finding
The skill instructs installation with `-g -y`, which performs a global install and suppresses confirmation prompts, but it does not warn the user about the security consequences. Combined with third-party skill sources and unpinned CLI execution, this can lead to silent system-wide installation of unreviewed code with a larger blast radius.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The tips section mentions `npx skills init` without pinning, again endorsing execution of mutable remote package code. Although initialization is less severe than global install, it still exposes the host to arbitrary code execution from the fetched package.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The fallback guidance suggests `npx skills init my-xyz-skill` without pinning. Even when no skill is found, the document still routes users into remote code execution via an unversioned package manager path.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
This final `npx skills` reference continues the pattern of unpinned package execution in a skill whose whole purpose is to discover and install third-party extensions. In this context, the risk is elevated because the skill funnels users toward repeated interactions with remote code and package sources.

Static analysis

No suspicious patterns detected.