T08 · Insecure Dependencies
- Location
SKILL.md:6- Finding
Unpinned External npm Dependency Creates a Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 6
Vulnerability Type: Unpinned third-party package installation
Risk Level: MediumVulnerable Code
yaml metadata: { "openclaw": { "requires": { "bins": ["dgent"] }, "install": [{ "kind": "node", "package": "@itscojac/dgent", "bins": ["dgent"], "label": "Install dgent (npm)" }], "emoji": "broom", "homepage": "https://github.com/ItsCodejac/dgent", "os": ["darwin", "linux"] } }Technical Analysis
The Skill delegates its file-scanning and modification behavior to the external npm package
@itscojac/dgent, but the installation metadata does not specify an exact version or an integrity digest. Consequently, installation may resolve to a package release that differs from the version reviewed when this Skill was published.npm package installation can also execute package lifecycle scripts unless they are explicitly disabled. If the package, its publication account, or one of its transitive dependencies is compromised, attacker-controlled code could execute with the privileges of the user installing the Skill. The declared GitHub homepage does not cryptographically bind the installed registry artifact to a reviewed source revision.
This finding identifies an unsafe dependency-resolution practice. The available project content does not establish that the current package is malicious.
Attack Path
- An attacker compromises the npm package publication account, a transitive dependency, or the package’s release process.
- The attacker publishes a modified release under the expected
@itscojac/dgentpackage name. - A user installs the Skill or satisfies its declared binary requirement.
- Because no exact version or integrity value is specified, the installer resolves the attacker-controlled release.
- Malicious lifecycle code may execute during installation, or malicious behavior may execute when the documented
dgentcommands are invoked.
...[truncated 940 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin
@itscojac/dgentto an exact, audited version rather than allowing implicit latest-version resolution. - Use a lockfile and verify the package with a trusted integrity hash or equivalent cryptographic provenance control.
- Confirm that the published npm artifact corresponds to a reviewed source commit and release tag.
- Review the package’s direct and transitive dependencies before approving upgrades.
- Disable npm lifecycle scripts during installation where the package does not strictly require them, such as by using an installation mode equivalent to
--ignore-scripts. - Execute the tool with least privilege in an isolated environment that exposes only the repository files necessary for the scan.
- Require explicit user review before applying
--fixoutput or accepting changes to Git hooks and configuration. - Establish a controlled update process in which new dependency versions are reviewed, tested, and approved before the pinned version is changed.
- Pin
