Back to skill

Security audit

ClawVet

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed security-scanning helper, but users should pin and verify the external npm scanner before running it.

Install only if you are comfortable running the external clawvet npm package. For higher assurance, use a pinned version such as the version declared in the skill metadata, verify npm provenance or signatures first, and run scans with read-only access to the target skill and without unrelated credentials in the environment. Treat the optional persistent gate as an OpenClaw policy change and enable it only after reviewing the printed config and removal steps.

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:35
Finding
Unpinned npm Package Execution and Global Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:35`, `SKILL.md:47`, and `SKILL.md:70` **Vulnerability Type**: Unpinned third-party dependency execution **Risk Level**: Medium ### Vulnerable Code ```markdown npx clawvet scan ./skill-folder/ --format json ``` ```markdown For many skills at once, run `npx clawvet audit` and report the grade breakdown. ``` ```bash npm install -g clawvet clawvet gate --print-config ``` ### Technical Analysis The Skill's primary workflow instructs the Agent to execute `clawvet` through `npx` without specifying an exact package version. It also recommends globally installing the latest available version of the package. Because these commands resolve a mutable package version from the npm registry, the code that ultimately executes can differ from the version reviewed when this Skill was published. Although `SKILL.md` discusses npm provenance and suggests pinning when fixed detection rules are desired, it does not make version pinning and verification prerequisites for execution. Running the package through `npx` permits downloaded package code to execute with the privileges and environment of the invoking user. A global installation additionally exposes the user to persistent changes in the globally installed tool and increases the duration for which a compromised release remains available. This exceeds the minimum privileges required for static scanning because a locally pinned, integrity-verified dependency could provide the same functionality without automatically trusting the current registry release. ### Attack Path 1. An attacker compromises the npm publisher account, package distribution process, or a future `clawvet` release. 2. The attacker publishes a malicious version under the legitimate package name. 3. An Agent follows `SKILL.md` and runs the unpinned `npx clawvet ...` command or `npm install -g clawvet`. 4. npm retrieves the attacker-controlled release from the registry. 5. Package installati ...[truncated 1171 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin every execution to an exact reviewed version: ```bash npx --yes clawvet@0.12.4 scan ./skill-folder/ --format json ``` 2. Prefer installing the dependency locally through a lockfile rather than executing the latest registry release dynamically: ```bash npm install --save-exact clawvet@0.12.4 npm exec -- clawvet scan ./skill-folder/ --format json ``` 3. Verify npm provenance, signatures, package integrity, and publisher identity before installation or execution. Make these checks mandatory rather than advisory. 4. Review package installation scripts before use and disable lifecycle scripts during installation where compatible with the package: ```bash npm install --ignore-scripts --save-exact clawvet@0.12.4 ``` 5. Run the scanner in a sandbox with: - Read-only access to the directory being scanned. - No access to unrelated home-directory files. - No unnecessary environment variables or credentials. - Network access disabled for static local scans. 6. Avoid global installation unless the persistent gate is explicitly requested. If global installation is necessary, pin and verify the version, document the persistent configuration change, and provide the existing removal procedure. 7. For optional semantic scanning, obtain explicit user consent and document exactly which source files, metadata, and prompts are transmitted to the external service. Pass only the minimum necessary credential and content. ]]>
Vulnerability Patterns
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (8)

Ae1

High
Category
analysis-evasion
Content
1. Locate the skill. A local folder, a `SKILL.md` path, or a ClawHub slug. Stage the full skill locally. Local scans follow recognized references through nested
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Vague Triggers

Medium
Confidence
94% confidence
Finding
The skill advertises broad trigger phrases like "scan this skill", "is this skill safe", and similar generic wording. In an agent ecosystem, ambiguous activation criteria can cause unintended invocation, exposing untrusted content to this skill or causing it to run in contexts the user did not explicitly intend.

Vague Triggers

Medium
Confidence
92% confidence
Finding
The invocation guidance repeats generic conditions like "scan this skill" and "is this skill safe" without strong scoping or disambiguation. That increases the chance of accidental routing or prompt collisions with other skills, which can lead to unintended execution paths in security-relevant review flows.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The skill instructs use of `npx clawvet scan` without pinning a specific version, which allows execution of whatever package version npm resolves at runtime. If the package is updated maliciously, a compromised dependency is published, or registry resolution is tampered with, the user may run unexpected code during a security-sensitive vetting workflow.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The remote scan example uses unpinned `npx clawvet`, so the security scanner itself is fetched dynamically at execution time. That creates a supply-chain risk in the exact step users rely on for trust decisions, making compromise of the package or package resolution especially impactful.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The `npx clawvet audit` command is another instance of executing an unpinned package from the registry. Because this command may be run across many skills and in automated workflows, it expands the blast radius if the fetched package is not the expected release.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
The documentation explicitly references `npx clawvet gate --print-config`, which again relies on runtime resolution of the latest package. Even though the surrounding text advises against that usage for operational reasons, including the command still normalizes an unpinned execution path that could run attacker-controlled code if the package source is compromised.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
The documentation explicitly references `npx clawvet gate --print-config`, which again relies on runtime resolution of the latest package. Even though the surrounding text advises against that usage for operational reasons, including the command still normalizes an unpinned execution path that could run attacker-controlled code if the package source is compromised.

Static analysis

No suspicious patterns detected.