T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:15
- Finding
- Unpinned Third-Party CLI Installation Creates Supply-Chain Risk## Vulnerability Details **File Location**: `SKILL.md`, lines 15–17 **Vulnerability Type**: T08: Insecure Dependencies **Risk Level**: Medium The Skill instructs users to install a third-party executable without pinning it to a reviewed, immutable version: ```bash npm install -g mineru-open-api # or via Go (macOS/Linux): go install github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api@latest ``` The associated metadata at line 5 similarly references mutable package sources without version or integrity constraints: ```yaml metadata: {"openclaw": {"emoji": "📄", "requires": {"bins": ["mineru-open-api"], "env": ["MINERU_TOKEN"]}, "primaryEnv": "MINERU_TOKEN", "install": [{"id": "npm", "kind": "node", "package": "mineru-open-api", "bins": ["mineru-open-api"], "label": "Install via npm"}, {"id": "go", "kind": "go", "package": "github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api", "bins": ["mineru-open-api"], "label": "Install via go install", "os": ["darwin", "linux"]}]}} ``` ### Technical Analysis The npm command resolves the current registry version at installation time, while the Go command explicitly resolves `@latest`. Consequently, the executable installed by users can differ from the version that existed when this Skill was reviewed. No lockfile, exact version, commit hash, checksum, or signature verification is provided. The npm command also performs a global installation. Depending on local npm configuration and the user's privileges, package lifecycle scripts can execute during installation and the resulting binary can become available system-wide. The Go installation path compiles mutable upstream source and places the resulting executable in the user's Go binary directory. The project contains no implementation of `mineru-open-api`, so the behavior of the installed executable—including its handling of `MINERU_TOKEN` and presentation contents—cannot be verified from the audited artifact. There is no e ...[truncated 1503 chars]
- Remediation
- ## Remediation Suggestions 1. Pin the npm dependency to an exact, reviewed version, for example `mineru-open-api@X.Y.Z`, rather than allowing the registry to select the current release. 2. Replace the Go `@latest` reference with a reviewed release tag or, preferably, an immutable commit identifier. 3. Add integrity verification using trusted checksums, package signatures, provenance attestations, or an equivalent release-verification mechanism. 4. Keep the metadata installation definitions synchronized with the pinned versions shown in the documentation. 5. Avoid global npm installation where possible. Prefer a project-local, isolated environment with a lockfile and restricted permissions. 6. Do not install dependencies with administrator or root privileges unless strictly required. 7. Review package lifecycle scripts and the resolved transitive dependency graph before approving a release. 8. Document the expected publisher, registry, repository, release version, and verification procedure so users can detect source substitution. 9. Run the extraction CLI in a sandbox with access limited to the required input, output directory, network destinations, and credentials.
