T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:54
- Finding
- Unpinned Third-Party Node Plugin Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:54-60`, `SKILL.md:74-78`, `SKILL.md:364`, and `claw.json:55-62` **Vulnerability Type**: Unverified and unpinned third-party dependency installation **Risk Level**: Medium ### Vulnerable Code Snippets `SKILL.md:54-60`: ```yaml install: - id: openclaw-adspirer kind: node label: "Adspirer Ad Management Plugin" ``` `SKILL.md:74-78`: ```bash # Install the plugin openclaw plugins install openclaw-adspirer ``` `SKILL.md:364`: ```markdown | Plugin not installed | `openclaw plugins install openclaw-adspirer` | ``` `claw.json:55-62`: ```json "install": [ { "id": "openclaw-adspirer", "kind": "node", "label": "Adspirer Ad Management Plugin" } ] ``` ### Technical Analysis The audited package instructs users to install and execute the external Node plugin `openclaw-adspirer`, but it does not pin an exact package version, provide a cryptographic integrity hash, include a lockfile, or vendor the plugin source for review. The implementation of that dependency is absent from the audited artifact. Consequently, the code ultimately executed can differ from the content reviewed here. A compromised package publisher account, malicious future release, package-registry compromise, or dependency-resolution attack could introduce attacker-controlled code after this Skill has already been approved. This dependency is particularly sensitive because the documented plugin authenticates to advertising platforms and exposes write operations for campaigns, advertisements, keywords, bids, and budgets. Although the Skill text requires user confirmation and states that new campaigns are paused, those controls are instructions in `SKILL.md`; they cannot independently constrain a malicious plugin implementation. No evidence in the audited files establishes that the current external plugin is malicious. The finding concerns the unpinned and unverifiable supply-chain trust boundary. ### Attack Pat ...[truncated 1888 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin `openclaw-adspirer` to an exact, reviewed version rather than resolving a mutable package name. 2. Require and verify a cryptographic integrity digest for the distributed package. 3. Include a lockfile that pins all transitive dependencies and their integrity values. 4. Publish reproducible build instructions, signed release artifacts, and package provenance attestations. 5. Vendor the reviewed plugin source into the audited distribution or make the precise source revision corresponding to each release independently verifiable. 6. Enforce publisher protections, including multifactor authentication, protected release workflows, and narrowly scoped registry tokens. 7. Document the exact host permissions, network destinations, and OAuth scopes requested by the plugin. 8. Apply runtime least privilege so the plugin cannot access unrelated files, environment secrets, processes, or network destinations. 9. Implement write-operation confirmation and spend limits in trusted host-side enforcement rather than relying only on natural-language instructions. 10. Require explicit security review before dependency upgrades and monitor the package and its transitive dependency graph for compromise or ownership changes. ]]>
