Back to skill

Security audit

fff

Security checks for vulnerabilities and agentic risk

Overview

This skill is meant to find and install other skills, but it steers agents toward mutable remote CLI execution and global installs that skip confirmation.

Review this skill carefully before installing. Its core purpose is legitimate, but use a pinned, trusted Skills CLI, inspect any target skill source before installation, avoid `-y`, and prefer local or scoped installs unless you intentionally want a global user-level skill.

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:88
Finding

Unpinned Third-Party CLI Execution and Global Skill Installation

Content
View full analysis
` - Install a skill from GitHub or other sources - `npx skills check` - Check for skill updates - `npx skills update` - Update all installed skills ``` `SKILL.md:88-96`: ```markdown ### Step 4: Offer to Install If the user wants to proceed, you can install the skill for them: ```bash npx skills add -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 specifying an exact package version or validating package integrity. If the CLI is not already available locally, `npx` may retrieve and execute the currently resolved package from the configured npm registry. Consequently, the code executed can differ from the version originally reviewed. The workflow then permits skills returned by an external search service to be installed from GitHub or other sources. The installation command uses `-g`, which installs the selected skill at user scope, and `-y`, which suppresses interactive confirmation. No controls require verification of the repository owner, review of downloaded content, validation of checksums or signatures, or pinning to an immutable commit. This creates a supply-chain trust boundary in which mutable third-party packages and search results can influence locally executed commands and globally installed agent instructions. ### Attack Path 1. An attacker publishes a malicious or typo-squatted package, compromises the unpinned `skills` CLI, compromises a listed skill repository, or causes a malicious repository to appear in search results. 2. A user asks the agent to locate ...[truncated 1182 chars]
Remediation
View remediation
`, and enforce lockfile or integrity verification where supported. 2. Restrict installations to an allowlist of verified publishers and repositories. 3. Pin installed skills to immutable commit hashes or signed release artifacts rather than mutable branches or tags. 4. Download and inspect skill contents before installation, including scripts, lifecycle hooks, executable files, external downloads, and instruction text. 5. Verify checksums or cryptographic signatures for downloaded artifacts. 6. Remove `-g` by default and install into an isolated, task-specific environment with minimal permissions. 7. Remove `-y` from the default workflow. Present the exact source, resolved revision, requested scope, and reviewed contents before obtaining explicit user confirmation. 8. Run discovery and installation tooling in a sandbox without access to sensitive credentials or unrelated user files. 9. Disable package lifecycle scripts where feasible and monitor installation output for unexpected network access or command execution. ]]>
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
Category
Not specified by scanner
Confidence
94% confidence
Finding

The metadata description activates on very broad phrases such as general 'how do I do X' or 'can you do X' requests, which can cause this skill to trigger in many ordinary conversations. In context, that matters because the skill's primary action is to search for and install external skills, so over-triggering increases the chance of unsolicited exposure to risky package-install flows.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The 'When to Use This Skill' section includes ambiguous activation conditions like common task requests and general interest in capabilities, without clear boundaries or user confirmation. That can route unrelated conversations into a workflow that recommends executing external installation commands, increasing exposure to supply-chain risk and unnecessary package operations.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The skill repeatedly instructs use of npx skills without pinning a specific package version, which allows whatever package version is current at execution time to be fetched and run. Because npx can execute remote package code, a compromised upstream package, typosquat, or malicious update could lead to arbitrary code execution on the user's machine.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

This command reference uses unpinned npx skills, so the skill implicitly trusts the latest remotely resolved package at runtime. That creates a supply-chain execution path where code can change after the skill is published, enabling arbitrary execution if the package or dependency chain is compromised.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The skill advertises npx skills add <package> without version pinning for the CLI itself, so users may execute an unreviewed package version each time the command runs. In a skill-discovery context that already points users to external packages, this compounds supply-chain risk and can result in code execution from multiple untrusted layers.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The update-check command uses unpinned npx skills, allowing a fresh remote package version to be executed even for a benign maintenance action. Although the command itself is not directly installing a third-party skill, it still creates a remote code execution opportunity via package resolution.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

This update command executes npx skills without a version pin, meaning the updater itself is remotely resolved at runtime and can change unexpectedly. Because update flows are high-trust operations, a compromised package could abuse that trust to execute arbitrary code or alter installed skills.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

The search workflow tells the agent to run npx skills find [query] without pinning the CLI version. Even though this appears to be a read-only search step, it still executes remote package code and therefore presents a supply-chain code execution risk.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

This example invokes npx skills find react performance without version pinning, again relying on runtime resolution of executable code from the package registry. The example normalizes unsafe usage and increases the chance of widespread insecure copy/paste behavior.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

This example uses the same unpinned npx skills pattern, exposing users to arbitrary code execution if the package served at execution time is malicious or compromised. Since the skill is designed to help find external add-ons, the trust boundary is especially important and currently not enforced.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The changelog search example also runs an unpinned npx skills package. Repetition across multiple examples makes the unsafe pattern part of the intended workflow rather than an isolated oversight.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

The displayed install instruction npx skills add <owner/repo@skill> includes the same unpinned CLI execution path. While this line may be presented as output format, it still trains users to run a mutable remote executable in order to install further external content.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

The example installation response tells users to install via unpinned npx skills add ..., which creates two stacked trust risks: remote execution of the latest CLI plus installation of an external skill package. This is dangerous because users are likely to copy and paste the command without understanding the supply-chain implications.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill tells the agent it can install a skill using -g -y, which performs a global install and suppresses confirmation prompts, but it does not clearly warn about the security and system-wide impact of doing so from external sources. In a package-installation context, bypassing confirmation removes a critical user consent checkpoint and makes accidental or malicious installation materially easier.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
97% confidence
Finding

This line instructs the agent to run npx skills add <owner/repo@skill> -g -y, combining unpinned remote code execution with a global install and automatic confirmation bypass. That sharply increases the blast radius because any malicious or compromised package can be installed system-wide without an interactive safety check.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding

The suggestion to use npx skills init is another unpinned execution of remote CLI code. Although initialization is less immediately risky than install/update, it still grants arbitrary code execution to a mutable package fetched at runtime.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding

This final npx skills init my-xyz-skill example repeats the same unpinned remote execution pattern. Because it appears in fallback guidance, it can affect users even when no suitable skill is found, expanding exposure beyond the main discovery flow.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.