Back to skill

Security audit

skill-auditor

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed SKILL.md quality auditor that reads a user-supplied skill file and runs a local read-only checklist script, with an installer supply-chain caution but no evidence of malicious behavior.

Before installing, consider pinning or sandboxing the `npx skills add` command because it depends on the currently resolved npm package. Once installed, the skill appears to perform a local, read-only audit of SKILL.md files and does not show hidden persistence, credential handling, network calls, or destructive behavior.

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
README.md:27
Finding

Unpinned Package Execution Through npx Installation Instructions

Content
View full analysis

Vulnerability Details

File Locations:

  • README.md:27
  • README.md:87
  • README_CN.md:27
  • README_CN.md:87

Vulnerability Type: Unpinned third-party package execution
Risk Level: Medium

Vulnerable Code

bash
npx skills add Foamtor/skill-auditor

The same command appears in both the Quick Start and installation sections of the English and Chinese documentation.

Technical Analysis

The installation instructions invoke the skills npm package through npx without specifying a reviewed version or integrity constraint. If the package is not already available locally, npx can retrieve the currently resolved release from the configured npm registry and immediately execute its CLI.

Consequently, the code executed during installation is not limited to the contents of this audited repository. It can change after this repository has been reviewed because package resolution refers to a mutable package name rather than an immutable, verified artifact.

This creates a supply-chain trust boundary: compromise of the package publisher, npm account, registry resolution, or a newly published malicious version could cause users following the documented command to execute code that was not included in this audit.

Attack Path

  1. An attacker compromises the publisher account or release process for the npm package resolved as skills, or otherwise causes a malicious version to be distributed through the configured registry.
  2. The attacker publishes a version containing a malicious CLI implementation.
  3. A user follows the documented command:
    bash
    npx skills add Foamtor/skill-auditor
    
  4. npx resolves and downloads the mutable package version.
  5. The downloaded CLI runs with the privileges and environment of the invoking user.
  6. The malicious package can access resources available to that process, subject to operating-system permissions and any sandboxing in place.

Impact Assessment

Successful exploitation permits ...[truncated 672 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin the package to a specific version that has been reviewed:

    bash
    npx --yes skills@REVIEWED_VERSION add Foamtor/skill-auditor
    
  2. Record the approved version in both README files and update it only after reviewing the corresponding package release.

  3. Where practical, verify the downloaded package against a trusted integrity digest or lockfile before execution.

  4. Prefer installation from an immutable repository commit or signed release artifact. For example, document a full commit hash rather than relying only on a mutable branch or package tag.

  5. In CI environments, install dependencies using a committed lockfile and a clean, reproducible installation command rather than dynamically resolving the latest package.

  6. Run installation commands in a sandbox or minimally privileged environment that does not expose unrelated credentials, sensitive directories, or privileged host resources.

  7. Apply the same hardened command consistently at:

    • README.md:27
    • README.md:87
    • README_CN.md:27
    • README_CN.md:87
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (15)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This markdown file is written entirely in Chinese and presents the skill behavior and usage in that locale, while only linking to an English file rather than stating any user language choice within the skill description itself. Under the policy, forcing a specific language without explicit opt-in can be a natural-language locale violation unless clearly justified as region-specific.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
87% confidence
Finding

The skill instructs the agent to read a user-supplied SKILL.md file but does not declare any explicit tool scope such as allowed paths or permissions. In a skill system that uses manifest-declared capabilities for sandboxing or policy enforcement, this can cause overbroad file-read behavior or ambiguous authorization, increasing the chance of unintended access to local files.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest describes a broad skill-quality/compliance auditor that automatically determines type, scores dimensions, and gives improvement suggestions. However, the title and introductory summary redefine the task more narrowly as 'SKILL.md 防丢机制检测' focused on preventing loss of key steps and constraints, which is a more specific subset of general skill compliance review.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The trigger phrases are broad enough to overlap with ordinary requests like checking or optimizing a skill, which raises the likelihood of accidental invocation in unrelated contexts. Unintended activation can cause the agent to apply this skill's workflow and constraints when the user did not mean to invoke it, leading to scope confusion and potentially unnecessary file inspection.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The manifest description is written as an instruction in Chinese and the rest of the skill content consistently prescribes Chinese-language interaction, but there is no opt-in or statement that the skill is intentionally limited to Chinese-speaking users. Under the stated policy, forcing a specific language without user choice is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The activation criteria are ambiguous and do not clearly restrict what counts as an eligible input or when the auditor should engage. In agentic environments, vague routing conditions can cause the wrong skill to take control, which is dangerous because it changes behavior, prompts file reads, and may override more appropriate task handling.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

Step 3 states that only dimensions selected in Step 2 for the determined type should be checked, and dimensions marked '—' should be skipped and not shown. But the pitfall at L234 says that when a skill has both workflow and reference characteristics, reference-type dimensions such as 渐进式加载 and Context Engineering '仍然必须检查', which changes the operational rule and can contradict the earlier single-type selection model.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The manifest description says the skill will '逐项评分并给出改进建议', implying actual scoring of instruction-following quality. In code, each dimension is only labeled pass/partial/fail via regex and filesystem heuristics, and the output summary merely counts those labels rather than producing a substantive score for the skill's quality.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This code file contains natural-language strings that define the tool's purpose, usage, output, and exit codes exclusively in Chinese. Under the language/locale policy rule, forcing a specific language without user opt-in or documented justification is a policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The argparse description and help strings are user-facing natural-language outputs, and they are only available in Chinese. Because the script does not offer an alternative language or explicit locale scoping, it violates the stated language/locale policy.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The stated purpose centers on detecting compliance quality in SKILL.md, suggesting analysis of that document. However, type detection also inspects the surrounding skill directory, such as whether a scripts/ directory exists, which goes beyond judging the markdown file itself.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.