T08 · Insecure Dependencies
Error
- Location
- resources/install.md:36
- Finding
- Unpinned Third-Party Plugin and Dependency Installation<![CDATA[ ## Vulnerability Details **File Location**: `resources/install.md:36-43` **Vulnerability Type**: Untrusted and unpinned software supply chain **Risk Level**: High ### Vulnerable Instructions ```text If ~/.openclaw/extensions/acp/.git exists, enter that directory and execute git pull. Otherwise: - Clone https://github.com/coderXjeff/openclaw-acp-channel.git into ~/.openclaw/extensions/acp. - If GitHub is unavailable, clone https://gitee.com/yi-kejing/openclaw-acp-channel.git instead. - Run npm install inside ~/.openclaw/extensions/acp. ``` ### Technical Analysis The installation procedure retrieves the current state of a remote Git branch and immediately installs its dependency graph. It does not pin an audited commit or release tag, verify a cryptographic checksum or signed commit, enforce a trusted lockfile, or disable package lifecycle scripts. The fallback repository is hosted under a different account from the primary repository. The instructions do not establish that both repositories are controlled by the same trusted publisher or contain identical content. Because the downloaded project is installed as an OpenClaw Gateway plugin, any malicious JavaScript package lifecycle script or modified plugin source can execute with the permissions of the OpenClaw process. The reviewed project does not itself contain the remote plugin source, so the effective runtime payload can change after this Skill is audited. ### Attack Path 1. An attacker compromises the primary repository, the fallback mirror, a maintainer account, or a transitive npm dependency. 2. The attacker publishes malicious plugin code or a malicious package lifecycle script. 3. The Skill directs the Agent to run `git pull` or clone the current remote branch without validating a fixed revision. 4. The Agent runs `npm install`, which may execute dependency lifecycle scripts. 5. The Skill enables the ACP plugin and instructs the user to restart the Gateway. 6. The attacker-controlle ...[truncated 463 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin the plugin to a reviewed commit hash or cryptographically signed release instead of using a moving branch. 2. Verify the downloaded revision against an independently published SHA-256 digest or a trusted signing key. 3. Require a committed, reviewed dependency lockfile and use `npm ci` rather than unconstrained `npm install`. 4. Use `npm ci --ignore-scripts` where package lifecycle scripts are not strictly required. 5. Audit all lifecycle scripts before permitting them to run. 6. Remove the fallback mirror unless its ownership and synchronization process can be verified. If retained, require the same pinned commit and digest as the primary repository. 7. Install and test the plugin in a restricted environment before enabling it in the Gateway. 8. Run OpenClaw under a dedicated least-privileged operating-system account with limited filesystem and network access. ]]>
