T08 · Insecure Dependencies
- Location
README.md:10- Finding
Unpinned Third-Party Packages Enable Supply-Chain Compromise
- Content
View full analysis
Vulnerability Details
File Location:
README.md:13,README.md:19,README.md:26, andSKILL.md:8
Vulnerability Type: Unpinned and unverifiable third-party dependencies
Risk Level: MediumThe installation instructions retrieve mutable packages from npm, ClawHub, and PyPI without pinning exact versions, immutable commits, cryptographic hashes, or signatures.
Relevant code from
README.md:10-27:markdown ### skills.sh (Vercel) ```bash npx skills add jdilla1277/agentcad-skillClawHub (OpenClaw)
bash clawhub install jdilla1277/agentcadManually (Claude Code)
Install the CLI and let it drop the skill into your project:
bash pip install agentcad agentcad skill installtext Relevant configuration from `SKILL.md:8`: ```yaml compatibility: Requires Python 3.10-3.12 and agentcad installed (pip install agentcad).Technical Analysis
These commands resolve package names or repository identifiers to whatever release is current at installation time. The audited repository contains only documentation and the Skill manifest; it does not contain the externally installed
agentcadimplementation, a dependency lockfile, package hashes, or signature-verification instructions.In particular:
npx skills ...can obtain and execute an npm-hosted CLI that is not pinned in the command.clawhub install ...resolves a mutable marketplace entry rather than an immutable reviewed artifact.pip install agentcadinstalls the current PyPI release and its transitive dependency graph without version or hash constraints.agentcad skill installsubsequently executes functionality supplied by that externally installed package.
Consequently, the code that ultimately runs can differ from the code that was reviewed. A compromised publisher account, marketplace entry, package release, or transitive dependency could introduce attacker-controlled behavior ...[truncated 1374 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every installation command to a reviewed, exact release version or immutable commit.
- For Python, distribute a constraints or lock file containing exact direct and transitive versions. Where supported, require hashes, for example through
pip install --require-hashes. - Avoid implicit
npxretrieval. Install a pinned version of the required CLI from a trusted registry and invoke that verified installation. - Pin marketplace installations to immutable release identifiers or content digests if the marketplace supports them.
- Publish SHA-256 checksums and cryptographic signatures for release artifacts, and document mandatory verification steps.
- Protect publisher accounts and release workflows with multi-factor authentication, protected environments, provenance attestations, and narrowly scoped publishing credentials.
- Generate a software bill of materials and continuously scan direct and transitive dependencies.
- Run installation and CAD execution in a sandbox or least-privileged environment without unnecessary credentials or access to sensitive host directories.
- Keep the pinned version in
SKILL.md,README.md, and release automation synchronized so users do not fall back to mutable package resolution.
