T08 · Insecure Dependencies
- Location
SKILL.md:11- Finding
Unpinned Third-Party Package Is Downloaded and Executed
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 11
Vulnerability Type: Supply-chain exposure through an unpinned npm dependency
Risk Level: MediumComplete Code Snippet:
markdown If `.graph/graph.py` is missing from the workspace, bootstrap the shared runtime first with `npx graph-skill install --target openclaw`.Technical Analysis
The bootstrap instruction invokes
npx graph-skillwithout an exact package version, integrity hash, lockfile constraint, or trusted-registry requirement. If the package is not already available locally,npxmay retrieve the current registry version and execute its package entry point.The retrieved installer is expected to create
.graph/graph.py, which the remaining workflow trusts and invokes for initialization, caching, quality checks, retries, reporting, commits, and other operations. Because neither the npm package nor the generated Python runtime is included in the audited project, their effective behavior cannot be verified from the supplied files and may change after this review.This is a supply-chain weakness rather than evidence that the current package is malicious.
Attack Path
- An attacker compromises the
graph-skillnpm package, its publisher account, or the package distribution path, or causes an unsafe package version to be resolved. - The agent encounters a workspace without
.graph/graph.py. - Following the Skill instruction, the agent runs:
sh npx graph-skill install --target openclaw npxdownloads and executes the externally controlled package version.- The package executes code with the privileges and accessible environment of the agent process and may install a modified
.graph/graph.py. - Subsequent workflow commands execute the installed runtime, extending the opportunity for malicious actions.
Impact Assessment
Successful exploitation could permit arbitrary code execution und ...[truncated 615 chars]
- An attacker compromises the
- Remediation
View remediation
Remediation Suggestions
- Pin the dependency to a reviewed, immutable version instead of resolving the latest package:
sh npx --yes graph-skill@<audited-exact-version> install --target openclaw - Validate package integrity using an approved lockfile, checksum, signed provenance, or registry integrity metadata before execution.
- Restrict installation to a trusted npm registry and disable unexpected registry or package-manager configuration overrides.
- Prefer bundling the audited runtime with the Skill so installation does not retrieve executable code dynamically.
- Review and verify the generated
.graph/graph.pybefore invoking it, including its hash and expected file ownership and permissions. - Run bootstrap code in a sandbox with minimal filesystem access, no unnecessary secrets, restricted network access, and no elevated privileges.
- Establish an update process in which new package versions and generated runtime changes are reviewed before the pinned version is changed.
- Pin the dependency to a reviewed, immutable version instead of resolving the latest package:
