T08 · Insecure Dependencies
- Location
SKILL.md:5- Finding
Unpinned External npm Dependency Creates Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 5
Vulnerability Type: Unpinned third-party executable dependency
Risk Level: MediumVulnerable Code Snippet:
yaml metadata: { "openclaw": { "emoji": "📖", "requires": { "bins": ["inkos", "node"], "env": ["OPENAI_API_KEY"] }, "primaryEnv": "OPENAI_API_KEY", "homepage": "https://github.com/Narcooo/inkos", "install": [{ "id": "npm", "kind": "node", "package": "@actalk/inkos", "label": "Install InkOS (npm)" }] } }Technical Analysis
The installation declaration references
@actalk/inkoswithout an exact version or package-integrity hash. The package manager can therefore resolve a future release whose contents differ from those available when this Skill was reviewed.The repository contains only
SKILL.md; it does not include the npm package source, a lockfile, an integrity record, or other artifacts that would allow the executable dependency to be verified as part of this audit. The statement atSKILL.md:814that the npm package has no lifecycle installation hooks cannot be independently confirmed from the submitted project.This does not establish that the current package is malicious. It creates a supply-chain weakness in which compromise of the publisher account, registry package, release process, or a later package version could introduce executable behavior after approval of the Skill descriptor.
Attack Path
- An attacker compromises the npm publisher account, package release process, or another component capable of publishing a new
@actalk/inkosversion. - The attacker publishes a modified release containing malicious runtime code or lifecycle behavior.
- A user installs the Skill after that release is published.
- Because no exact version or integrity hash is specified, npm resolves the attacker-controlled release.
- The package executes with the permissions of the installing or invoking user.
- The compromised proc ...[truncated 973 chars]
- An attacker compromises the npm publisher account, package release process, or another component capable of publishing a new
- Remediation
View remediation
Remediation Suggestions
- Pin
@actalk/inkosto an exact, audited version rather than allowing resolution of the latest compatible release. - Record and verify the npm package integrity hash during installation.
- Include a lockfile or equivalent immutable dependency manifest in the distributed artifact.
- Verify that npm package provenance, publisher identity, and source repository match the documented project.
- Audit the contents, transitive dependencies, and lifecycle scripts of the exact package release before approving it.
- Enforce installation with lifecycle scripts disabled where operationally possible, and separately verify that the required package does not depend on them.
- Run the CLI with least privilege and expose only the environment variables required for the current operation.
- Restrict outbound network access to explicitly approved model, image, and research-provider endpoints.
- Add automated dependency monitoring and require renewed review whenever the pinned package version or integrity value changes.
- Pin
