T08 · Insecure Dependencies
- Location
SKILL.md:12- Finding
Unpinned Third-Party Packages and Unauditable Hook Activation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 12 and 39–75
Vulnerability Type: Supply-chain exposure through mutable dependencies and external hook code
Risk Level: HighVulnerable Code
yaml install: [{"id":"node","kind":"node","package":"clawvault","bins":["clawvault"],"label":"Install ClawVault CLI (npm)"},{"id":"qmd","kind":"node","package":"github:tobi/qmd","bins":["qmd"],"label":"Install qmd backend (required for query/context workflows)"}]markdown **Auditability:** the published ClawHub skill bundle includes `SKILL.md`, `HOOK.md`, and `hooks/clawvault/handler.js` so users can inspect hook behavior before enabling it. ## Install (Canonical) ```bash npm install -g clawvault openclaw hooks install clawvault openclaw hooks enable clawvault # Verify and reload openclaw hooks list --verbose openclaw hooks info clawvault openclaw hooks check # restart gateway processclawhub install clawvaultcan install skill guidance, but does not replace explicit hook pack installation.Recommended Safe Install Flow
bash # 1) Review package metadata before install npm view clawvault version dist.integrity dist.tarball repository.url # 2) Install CLI + qmd dependency npm install -g clawvault@latest npm install -g github:tobi/qmd # 3) Install hook pack, but DO NOT enable yet openclaw hooks install clawvault # 4) Review hook source locally before enabling node -e "const fs=require('fs');const p='hooks/clawvault/handler.js';console.log(fs.existsSync(p)?p:'hook file not found in current directory')" openclaw hooks info clawvault # 5) Enable only after review openclaw hooks enable clawvault openclaw hooks checktext ### Technical Analysis The skill directs users to globally install the `clawvault` npm package without a fixed version and to install `qmd` directly from a mutable GitHub repository reference. The explicit use of `clawvault@latest` confirms that installation resolves to a release that can change after ...[truncated 2583 chars]- Remediation
View remediation
Remediation Suggestions
- Pin
clawvaultto an exact, reviewed version rather than using an unqualified package name or@latest. - Pin
qmdto a specific immutable Git commit SHA instead of a mutable GitHub branch or default reference. - Publish a lockfile or equivalent dependency manifest that records exact transitive dependency versions.
- Verify package provenance and integrity before installation, and enforce the expected digest rather than merely displaying registry metadata.
- Include
HOOK.md,hooks/clawvault/handler.js, and every runtime file in the audited skill bundle. - Ensure the hook installed at runtime is byte-for-byte identical to the reviewed hook source.
- Separate installation from activation and require explicit user approval after displaying the exact local hook path, version, hash, permissions, and subscribed lifecycle events.
- Prefer a user-scoped, isolated installation over global package installation where supported.
- Disable npm lifecycle scripts during initial inspection when operationally possible, then permit them only after reviewing the pinned package contents.
- Document a safe removal procedure for the hook and globally installed executables.
- Pin
