Back to skill

Security audit

Auto Skill Loader

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed automatic skill router, but it can automatically load and follow other local skill instructions with broad triggers and limited user confirmation.

Install only in environments where you trust the local skill directories it scans. Prefer explicit confirmation before loading any newly discovered or changed skill, disable routing unless needed, and use a pinned installer version rather than @latest for higher assurance.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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 (2)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:101
Finding

Automatic Loading of Untrusted Skill Instructions

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 101-105
Vulnerability Type: Untrusted instruction loading and execution
Risk Level: High

Vulnerable Code Snippet

markdown
### Step 5: Load and Execute

After finding a matching Skill:
1. Read the complete `SKILL.md`
2. Execute the task according to its instructions
3. Load resources under `scripts/` or `references/` when needed

Technical Analysis

The loading process directs the Agent to read and follow the complete instructions of a dynamically discovered Skill. Skills are discovered from several local directories, and undeclared protection levels default to dynamic. There is no required signature verification, integrity validation, trusted-source allowlist, instruction isolation, or security review before a matching Skill is loaded.

An attacker who can place or modify a Skill in one of the scanned directories can provide benign-looking frontmatter metadata while embedding malicious instructions in the body of SKILL.md. The attacker can craft the description to increase the likelihood that a particular user request selects the malicious Skill.

Although scripts/auto-skill-loader.js only enumerates and parses Skill metadata, the governing instructions explicitly direct the Agent to load the complete Skill and act according to its contents. This crosses a trust boundary by treating dynamically discovered local instructions as executable Agent guidance.

Attack Path

  1. An attacker gains the ability to install, replace, or modify a Skill beneath a scanned Skill directory.
  2. The attacker creates a SKILL.md with a plausible name and description that matches expected user requests.
  3. The Skill is assigned dynamic, either explicitly or through the default classification.
  4. A user submits a request matching the malicious Skill metadata.
  5. The loader identifies the malicious Skill as a candidate.
  6. Following Step 5, the ...[truncated 1145 chars]
Remediation
View remediation

Remediation Suggestions

  1. Restrict automatic loading to Skills from an explicit trusted allowlist.
  2. Require cryptographic signature and integrity verification before loading a Skill.
  3. Treat all loaded Skill text as untrusted data that cannot override system instructions, user intent, tool policies, or safety constraints.
  4. Require explicit user confirmation before the first execution of each newly discovered or modified Skill.
  5. Record and verify a content hash for approved SKILL.md, scripts/, and references/ files.
  6. Perform a separate authorization check for every requested tool call, filesystem path, network destination, and subprocess operation.
  7. Do not automatically load executable resources merely because a Skill references them.
  8. Display the selected Skill, source path, requested capabilities, and integrity status before execution.
  9. Prefer least-privilege sandboxing for third-party Skills, with network and sensitive-file access disabled by default.

T08 · Insecure Dependencies

Warning
Location
README.md:35
Finding

Mutable Unpinned Package Executed During Installation

Content
View full analysis

Vulnerability Details

File Location: README.md, line 35
Vulnerability Type: Unpinned package execution through npx
Risk Level: Medium

Vulnerable Code Snippet

bash
npx clawhub@latest install auto-skill-loader

Technical Analysis

The documented installation command instructs users to retrieve and execute the mutable latest release of the clawhub package. The effective installer code can therefore change after this project has been reviewed.

npx may download and execute package code from the configured package registry. If the upstream package, publisher account, registry resolution, or latest release is compromised, the installation command can execute code that was not included in this audit. No exact package version or integrity value is provided to bind installation to a reviewed artifact.

Attack Path

  1. An attacker compromises the upstream package publisher, package contents, registry account, or release process.
  2. The attacker publishes a malicious version and causes it to resolve through the latest distribution tag.
  3. A user follows the installation command from the README.
  4. npx retrieves the current package associated with clawhub@latest.
  5. The package or its installation logic executes with the permissions of the user running the command.
  6. The malicious installer can perform any operation allowed to that user before installing, replacing, or impersonating the intended Skill.

Impact Assessment

A compromised installer can execute arbitrary code with the invoking user's privileges. Depending on those privileges, the impact can include:

  • Modification or theft of user-accessible files.
  • Installation of malicious or altered Skills.
  • Access to credentials available in files or environment variables.
  • Modification of the Agent environment or configuration.
  • Additional package retrieval or persistent compromise.

The project does not itself c ...[truncated 155 chars]

Remediation
View remediation

Remediation Suggestions

  1. Replace @latest with an exact reviewed package version.
  2. Publish and verify the package integrity hash or signed provenance for the pinned artifact.
  3. Document the expected publisher identity and trusted registry.
  4. Prefer an installation workflow backed by a lockfile or immutable artifact.
  5. Disable package lifecycle scripts where compatible with the installer.
  6. Review a new installer version before updating the documented pin.
  7. For high-assurance deployments, download the package without executing it, verify its signature and contents, and then install it in a restricted environment.
Vulnerability Patterns
  • 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
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (17)

Vague Triggers

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

Saying the skill can activate when the user 'directly describes a task' makes the invocation boundary extremely broad. In an auto-loading skill, this can cause unintended activation on ordinary conversation, which may then load or route other skills without clear user consent, increasing the chance of prompt/skill confusion and privilege expansion.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The description claims an automatic skill loader that detects task type, matches the best skill, and auto-loads it. However, the code is primarily a discovery/classification CLI utility: it scans directories, parses SKILL.md frontmatter, resolves protection levels, deduplicates by priority, and prints categorized skill lists or metadata. In dry-run mode it explicitly says intent matching is performed by the Agent and that it only provides a candidate pool. There is no implementation that analyzes incoming tasks, scores skills against task intent, or loads/enables a selected skill. The protection-level behavior is broadly aligned with the description, but the core promised functionality—automatic intent-based matching and loading—is absent, making this a material description/behavior mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The description presents a high-level automatic skill router/loader that analyzes incoming tasks and dynamically selects and loads skills. The actual code chunk does none of that. It is a standalone utility for parsing and serializing a limited YAML format, likely usable as a helper for reading metadata, but it does not inspect tasks, choose skills, enforce protection levels, or load anything. This is a material description-behavior mismatch, not merely an implementation detail.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The trigger condition is extremely broad, including effectively any situation where the agent might decide which skill to use. In practice this can cause unsolicited activation of a skill that scans directories, reads metadata, and potentially routes tasks, expanding its influence across ordinary conversations without clear user intent.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 111)May include surrounding context.

md
1. 读取完整 `SKILL.md`

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

The installation command uses npx clawhub@latest, which pulls the newest package version at execution time rather than a reviewed, fixed version. This creates a supply-chain risk: a compromised upstream release or breaking change could cause users to install and run unexpected code when following the README.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The trigger phrase '动态加载' is generic everyday language and is likely to appear in benign discussion unrelated to invoking this skill. Because this skill dynamically selects and loads other skills, accidental triggering can have outsized consequences by changing the agent's behavior unexpectedly.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill instructs the agent to inspect environment-dependent locations and infer installation paths, but it declares no tool scope or permissions boundaries. In a loader skill that scans the workspace, home directory, and installation tree, missing explicit scope increases the chance of unintended file access and overbroad capability use.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

Marketing the skill as zero-configuration and universally compatible encourages deployment with minimal review while leaving activation scope underconstrained. In context, this makes broad automatic behavior more dangerous because operators may assume it is safe everywhere despite scanning and routing semantics that vary by environment.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file's human-readable comments are written entirely in Chinese, which imposes a specific language on users and maintainers without any opt-in or indication that the skill is region-specific. Under the policy, language constraints are only acceptable when they are optional or clearly justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The package description is written entirely in Chinese and states the skill behavior in that language, with no indication that users can choose their preferred language or locale. Under the policy for natural-language violations, forcing or assuming a specific language without opt-in can be a locale-policy issue.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This JavaScript file contains natural-language comments and user-facing console output in Chinese, including usage/help text and status messages. Because the skill does not offer any language or locale selection and is not clearly documented as region-specific, it violates the policy against forcing a specific language without user opt-in.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The usage comments present the script as an 'Auto Skill Loader' and describe '--dry-run' as simulating matching, but the actual runtime behavior only prints discovered skills. The code later explicitly says matching is done by the agent and this script merely lists candidates, which contradicts the stated operational intent of automatic loading.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest describes a skill that detects task type, matches the best skill, and automatically loads it. In this implementation, the CLI only lists skills, checks protection levels, and performs a dry-run that explicitly states '意图匹配由 Agent 完成,此处仅列出候选池', meaning matching is not done here and no loading occurs.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
72% confidence
Finding

All user-facing instructions, trigger descriptions, and configuration guidance are presented only in Chinese, which can amount to an implicit language constraint. The file does not indicate that other languages are supported or that Chinese-only behavior is an intentional, documented locale limitation.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

Lines L132-L145 state that when routing fails, the skill should directly reply to the user explaining the failure. However, the same prescribed message explicitly offers option 2: '让我在当前 Agent 尝试处理', which contradicts the stated 'directly reply ... routing failed' behavior by presenting a local fallback path after saying silent fallback should be avoided.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The natural-language comments and description are entirely in Chinese, including the primary file description and usage notes. Under the stated policy, forcing a specific language without user opt-in or documented regional justification is a language/locale policy violation.

Content

No source excerpt is available for this finding.