T08 · Insecure Dependencies
- Location
README.md:23- Finding
Unpinned External Packages Are Installed and Executed Without Auditable Local Source
- Content
View full analysis
Vulnerability Details
File Location:
README.md:23-28,README.md:64-78,README.md:193-199,SKILL.md:49-54
Vulnerability Type: Supply-chain exposure through unpinned external dependencies
Risk Level: HighVulnerable Code Snippets
README.md:23-28:bash npm install clawhub-publisher # or python -m pip install clawhub-publisherREADME.md:64-78:bash npm install clawhub-publisherbash pip install clawhub-publisherbash npm install -g clawhub-publisher clawhub-publisher --version clawhub-publisher login --token YOUR_API_KEYREADME.md:193-199:yaml - uses: actions/checkout@v3 - uses: actions/setup-node@v3 - run: npm install clawhub-publisher - run: npx clawhub-publisher publish \ --api-key ${{ secrets.CLAWHUB_API_KEY }} \ --skill-path ./my-skill \ --version ${GITHUB_REF#refs/tags/v}SKILL.md:49-54:bash npm install clawhub-publisher # or pip install clawhub-publisherTechnical Analysis
The documentation directs users and CI systems to retrieve and execute
clawhub-publisherfrom external npm and Python registries without an exact version, package integrity hash, lockfile, or locally included implementation.The supplied
package.jsondeclaresindex.jsas the main module andbin/cli.jsas the command-line entry point, but neither file exists in the audited artifact. As a result, the code that would receive publishing credentials, inspect local skill files, bundle assets, and communicate with external services cannot be reviewed.Unpinned package resolution allows the effective code to change after this artifact has been audited. If the registry package, publisher account, release process, or dependency tree is compromised, malicious installation or runtime code could execute with the privileges of the user or CI runner. Global installation further increases exposure by making ...[truncated 1425 chars]
- Remediation
View remediation
Remediation Suggestions
- Include the complete implementation, including
index.jsandbin/cli.js, in the reviewable project. - Pin dependencies and installation examples to exact, verified versions rather than mutable latest releases.
- Publish and verify package integrity hashes or signed provenance attestations.
- Commit and enforce an appropriate lockfile for the supported package ecosystem.
- Select one verified distribution channel unless both npm and Python packages are independently maintained and auditable.
- Avoid global installation; prefer project-local execution in a restricted environment.
- Disable or review package lifecycle scripts where feasible.
- Run publishing jobs with minimal filesystem, network, repository, and deployment permissions.
- Verify registry namespace ownership and release provenance before installation.
- Pin third-party CI actions to immutable commit hashes rather than mutable major-version tags.
- Include the complete implementation, including
