T08 · Insecure Dependencies
- Location
SKILL.md:435- Finding
Unpinned Global Dependency Installation with Elevated Lifecycle Permissions
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:435-443, 581
Vulnerability Type:T08: Insecure Dependencies
Risk Level: HighVulnerable Code
bash npm install -g @clawtell/clawtell@latest && openclaw gateway restartbash npm install -g @clawtell/clawtellbash npm install -g @clawtell/clawtell --unsafe-permTechnical Analysis
The setup and update instructions install the third-party
@clawtell/clawtellnpm package globally without consistently pinning it to a reviewed version. The update command explicitly selects@latest, while the normal installation command also resolves to the registry's current version.The troubleshooting fallback adds
--unsafe-perm, allowing package lifecycle scripts to execute with the installing account's full effective permissions. Because this is a global installation, those permissions may cover globally installed executables and application files. The instructions also state that the resulting plugin writesCLAWTELL_INSTRUCTIONS.mdinto agent workspaces, setsCLAWTELL_API_KEYin agent.envfiles, integrates with message routing, and operates through the persistent OpenClaw gateway. These capabilities increase the consequences of a compromised dependency.This finding concerns the dependency installation path; the reviewed
SKILL.mddoes not itself contain an embedded malicious payload, and the audit did not establish that the named package is currently malicious.Attack Path
- An attacker compromises the npm package, its publisher account, or another component of its publication chain.
- The attacker publishes a malicious version under the legitimate package name.
- An owner follows the documented unpinned global installation or
@latestupdate command. - npm downloads the attacker-controlled version after the Skill was reviewed.
- Malicious package installation or lifecycle code executes. If the documented `--un ...[truncated 1179 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the package to a specifically reviewed, immutable version in every installation and update command; do not use
@latestor an omitted version. - Commit and verify an npm lockfile where the deployment model permits it.
- Verify package integrity using trusted checksums, registry integrity metadata, signed provenance, and a documented publisher identity.
- Remove the
--unsafe-permrecommendation. Diagnose ownership and permissions correctly rather than granting lifecycle scripts broader execution rights. - Install under a dedicated, unprivileged service account with access only to the files and network destinations required by the plugin.
- Disable npm lifecycle scripts during installation where compatible, or separately audit every lifecycle script before allowing it to run.
- Stage upgrades in an isolated environment and review package contents and dependency changes before production deployment.
- Restrict the plugin's access to agent credentials and configuration. Avoid automatically writing secrets or instructions across every agent workspace where per-agent scoping is possible.
- Back up and integrity-monitor gateway configuration, generated instruction files, global executables, and workspace
.envfiles. - Require explicit owner approval for each version change and restart only after successful verification.
- Pin the package to a specifically reviewed, immutable version in every installation and update command; do not use
