T03 · Remote Payload Retrieval and Execution
Error
- Location
- README.md:21
- Finding
- Unpinned Remote Companion Plugin Installation## Vulnerability Details **File Location**: `README.md:21-27` **Vulnerability Type**: Unpinned remote code retrieval and dependency installation **Risk Level**: High ### Vulnerable Code ```bash git clone https://github.com/realM1lF/openclaw-wordpress-tool.git cd openclaw-wordpress-tool && npm install openclaw plugins install -l "$(pwd)" openclaw plugins enable wordpress-site-tools openclaw gateway restart ``` The same installation workflow is also recommended in `SKILL.md:17-30` and `references/CONNECTING.md:58-69`. ### Technical Analysis The documented procedure clones the mutable default branch of a personal GitHub repository and immediately runs `npm install`. It does not pin an immutable commit or release, verify a checksum or signature, or otherwise establish that the fetched source matches a reviewed version. Running `npm install` may execute package lifecycle scripts and install mutable transitive dependencies. The resulting code is then installed and enabled as an OpenClaw gateway plugin. The plugin itself is not included in this audit artifact, so its implementation, dependency lock state, lifecycle scripts, and security controls could not be verified. This external component is expected to receive powerful capabilities, including authenticated WordPress REST access, WP-CLI invocation, media upload, and plugin-file access. Remote installation is necessary only if the optional companion plugin is chosen; using an unpinned source is not necessary for the declared WordPress-management functionality. ### Attack Path 1. An attacker compromises the GitHub repository, its maintainer account, or one of its npm dependencies. 2. The attacker inserts malicious code into the default branch or dependency resolution path. 3. A user follows the documented commands and clones the changed repository. 4. `npm install` executes malicious package code or lifecycle scripts on the OpenClaw gateway host. 5. The user install ...[truncated 778 chars]
- Remediation
- ## Remediation Suggestions 1. Pin installation instructions to a reviewed release and immutable commit hash rather than the repository's default branch. 2. Publish and verify cryptographic checksums or signed release artifacts before installation. 3. Include and enforce a reviewed dependency lockfile; use `npm ci` instead of unconstrained `npm install`. 4. Audit package lifecycle scripts and consider `npm ci --ignore-scripts` if the plugin does not require install scripts. 5. Vendor the reviewed plugin into a signed release or distribute it through a controlled, verifiable registry. 6. Install and test the plugin in an isolated staging environment before granting production access. 7. Initially allow only the minimum required tools, such as connection checking and narrowly scoped REST access. Do not grant the plugin-wide shorthand allowlist by default. 8. Use a dedicated, least-privilege WordPress application-password user and avoid production administrator credentials. 9. Enable WP-CLI and plugin-file tools only when necessary, with narrowly constrained profiles and filesystem paths.
