T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:60
- Finding
- Unpinned and Unverifiable External Executable Dependencies<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:60-70`, `SKILL.md:242`, `README.md:67-77`, `README.md:254`, `README.md:267` **Vulnerability Type**: Supply-chain exposure through unpinned external packages, scripts, npm dependencies, and a mutable container image **Risk Level**: Medium ### Vulnerable Code Snippets `SKILL.md:60-70`: ```bash # Recommended: install the published ClawHub payload openclaw plugins install clawhub:openclaw-onebot-plugin # Auto install; does not patch the local OpenClaw CLI dist by default bash scripts/install.sh # Or prepare a local payload after reviewing the source npm install && npm run prepare:clawhub:plugin openclaw plugins install .clawhub-plugin/openclaw-onebot-plugin ``` `README.md:248-259`: ```yaml # docker-compose.yml services: napcat: image: mlikiowa/napcat-docker:latest restart: always ports: - "3001:3001" # OneBot 11 WS + HTTP - "6099:6099" # WebUI volumes: - ./napcat-data:/app/.config/QQ - ./shared:/shared # File sharing directory ``` `README.md:267` and `SKILL.md:242`: ```bash npm install ``` ### Technical Analysis The documented installation process downloads or executes external components without pinning them to immutable versions, commit identifiers, cryptographic hashes, or container digests. In particular: - `openclaw plugins install clawhub:openclaw-onebot-plugin` does not specify an immutable plugin version or verified digest. - `npm install` may resolve dependency versions from an external registry and can execute package lifecycle scripts unless separately restricted. - `mlikiowa/napcat-docker:latest` is a mutable image reference whose contents can change without any modification to this audited artifact. - `scripts/install.sh`, `package.json`, dependency lockfiles, plugin source code, and the generated plugin payload are absent from the audited project. Consequently, the behavior of the executable components and the documentation's secu ...[truncated 2223 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Include the complete plugin implementation, `package.json`, lockfile, installation scripts, and generated payload metadata in the auditable release artifact. 2. Pin the ClawHub plugin to a specific immutable version and, where supported, verify a cryptographic checksum or signature before installation. 3. Replace the mutable Docker tag with an immutable image digest, for example: ```yaml image: mlikiowa/napcat-docker@sha256:<verified-digest> ``` 4. Commit and enforce a dependency lockfile. Prefer: ```bash npm ci --ignore-scripts ``` If lifecycle scripts are required, document each required script and review it before enabling scripts. 5. Publish SHA-256 checksums and signed release attestations for plugin archives, installation scripts, and container images. 6. Add installation instructions that verify downloaded artifacts against the publisher's trusted signing key. 7. Avoid invoking a repository installation script unless that exact script is included in the reviewed artifact and its expected behavior is documented. 8. Run the plugin and NapCat container with least privilege, a read-restricted dedicated shared directory, minimal network access, and only the mounts necessary for operation. 9. Use a strong OneBot access token, keep HTTP and WebSocket endpoints on localhost or a trusted network, and rotate credentials if a retrieved dependency is suspected of compromise. ]]>
