T08 · Insecure Dependencies
- Location
SKILL.md:30- Finding
Unpinned and Unverifiable Third-Party Plugin Installation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 30-42
Vulnerability Type:T08: Insecure Dependencies
Risk Level: MediumVulnerable Code
yaml install: - id: openclaw-notfair kind: node label: "NotFair Google Ads Plugin"text ## Setup openclaw plugins install openclaw-notfairTechnical Analysis
The skill directs users to install the third-party Node plugin
openclaw-notfairusing only a mutable package identifier. It provides no pinned version, integrity hash, authoritative source repository, or bundled implementation that could be reviewed as part of this audit.Consequently, the code ultimately installed by the command may differ from the code that existed when the skill was reviewed. The risk is especially material because the subsequent workflow asks users to authenticate the plugin and connect it to Google Ads. The plugin is then expected to access advertising data and expose operations capable of modifying campaigns.
This finding does not establish that the current package is malicious. It identifies an unverifiable supply-chain boundary through which a compromised, replaced, or unexpectedly modified package version could be delivered.
Attack Path
- An attacker compromises the package publisher, registry account, distribution channel, or another component involved in resolving
openclaw-notfair. - The attacker publishes a modified release under the same mutable package identifier.
- A user follows the documented command:
text openclaw plugins install openclaw-notfair - Because no version or integrity digest is specified, the installer resolves and executes the attacker-controlled release.
- The user follows the remaining setup instructions and authenticates or connects a Google Ads account.
- The compromised plugin abuses its local execution context or authenticated advertising access to col ...[truncated 1109 chars]
- An attacker compromises the package publisher, registry account, distribution channel, or another component involved in resolving
- Remediation
View remediation
Remediation Suggestions
- Pin the plugin to a specifically reviewed version rather than installing it solely by mutable package name.
- Require an immutable package integrity digest or cryptographic signature and make installation fail if verification does not succeed.
- Document the authoritative package registry, publisher identity, source repository, release process, and security contact.
- Make the plugin source available for review or vendor the audited implementation with the skill.
- Lock transitive dependencies and use automated dependency, provenance, and malware scanning in the release pipeline.
- Document all hosted MCP endpoints, data recipients, retention behavior, and subprocess or network capabilities.
- Use minimum-privilege Google OAuth scopes and separate read-only analysis authorization from write authorization where supported.
- Enforce write approval in trusted code outside model-controlled instructions. Bind every approval to the exact account, operation, entity set, values, and expiration time.
- Prefer paused or draft resources for changes and verify the resulting Google Ads state after every approved mutation.
- Provide package revocation and incident-response procedures so compromised releases can be blocked promptly.
