T08 · Insecure Dependencies
- Location
skill.md:5- Finding
Unpinned Third-Party Package Creates a Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
skill.md, lines 5–10
Vulnerability Type:T08: Insecure Dependencies
Risk Level: MediumAffected code:
yaml metadata: { openclaw: { requires: { bins: ["curl"] }, install: [ { id: "node", kind: "node", package: "clawhub", bins: ["clawhub"] } ] } }Technical Analysis
The installation metadata declares the Node.js package
clawhubwithout an exact version, package integrity hash, or trusted registry reference. Consequently, package resolution can select mutable content available from the configured package registry at installation time rather than a specific audited artifact.If the package name is compromised, transferred, replaced, or resolved through an attacker-controlled registry, installation may retrieve attacker-controlled code. Node.js packages can include lifecycle scripts that execute during installation unless explicitly disabled. The declared
curlrequirement also provides a general-purpose network retrieval utility even though this skill does not document a legitimate use for it, unnecessarily expanding the available network capability.The reviewed project does not itself contain a malicious payload, invoke
curl, or demonstrate that the currentclawhubpackage is malicious. The issue is the absence of controls that ensure future installations use the exact dependency content reviewed and approved by the project owner.Attack Path
- An attacker compromises the package publisher, registry account, package namespace, or registry configuration used to resolve
clawhub. - The attacker publishes a malicious release under the same unversioned package name or causes dependency resolution to use an attacker-controlled registry.
- A user or automated environment installs the skill and resolves the current package release rather than a pinned, previously audited version.
- The package manager downloads ...[truncated 1044 chars]
- An attacker compromises the package publisher, registry account, package namespace, or registry configuration used to resolve
- Remediation
View remediation
Remediation Suggestions
- Pin
clawhubto an exact, audited version rather than allowing installation of an arbitrary current release. - Record and verify a cryptographic integrity hash through a lockfile or equivalent package-verification mechanism.
- Configure installation to use an explicit, trusted registry and reject unexpected registry overrides.
- Disable Node.js package lifecycle scripts during installation where the dependency does not require them.
- Review the selected package version, including its transitive dependencies and lifecycle scripts, before approval.
- Use automated dependency monitoring and require manual review before updating the pinned version or integrity metadata.
- Remove the
curlrequirement if the skill does not use it. If network retrieval is necessary, document the intended endpoints and restrict outbound access to those destinations. - Run installation and execution under a least-privileged account without access to unrelated credentials or sensitive host resources.
- Pin
