T08 · Insecure Dependencies
Error
- Location
- scripts/install_dingtalk.py:145
- Finding
- Unpinned Third-Party Plugin Installation Creates a Supply-Chain Risk<![CDATA[ ## Vulnerability Details **File Location**: `scripts/install_dingtalk.py:145-148` **Additional Location**: `SKILL.md:28` **Vulnerability Type**: Unpinned third-party dependency installation **Risk Level**: High ### Vulnerable Code ```python if not run_command( ["openclaw", "plugins", "install", "@soimy/dingtalk"], "安装钉钉插件" ): ``` The documented manual installation uses the same unpinned package reference: ```bash openclaw plugins install @soimy/dingtalk ``` ### Technical Analysis The installer retrieves `@soimy/dingtalk` without specifying an exact reviewed version or an integrity hash. Consequently, the code installed during one execution may differ from the code reviewed during the audit. Although invoking the OpenClaw package installer is consistent with the Skill's stated purpose, relying on the package's current registry release creates a supply-chain trust boundary. A compromised package publisher, registry account, dependency release, or unexpected upstream update could introduce arbitrary plugin behavior. The audit found no evidence that the Skill intentionally installs a malicious package. The vulnerability arises from the inability to guarantee that future installations will retrieve the reviewed code. ### Attack Path 1. An attacker compromises the package publisher, registry account, or upstream release process. 2. The attacker publishes a malicious release under the legitimate `@soimy/dingtalk` package name. 3. A user executes this Skill after the malicious release becomes current. 4. The unpinned installation command retrieves and installs the attacker-controlled version. 5. OpenClaw enables the plugin and subsequently loads it as part of gateway operation. 6. The malicious plugin executes with the permissions available to the OpenClaw process. ### Impact Assessment A compromised plugin could operate with the OpenClaw process's local privileges. Depending on that process's permissions and exposed APIs, this may allo ...[truncated 454 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin the plugin to an exact, reviewed version, for example: ```python ["openclaw", "plugins", "install", "@soimy/dingtalk@<reviewed-version>"] ``` 2. Where supported, verify the package against a trusted integrity hash or signed provenance record before activation. 3. Use an organization-controlled lockfile or approved dependency manifest. 4. Restrict installation to an explicitly trusted registry and reject unexpected registry overrides. 5. Review each version update before changing the pinned version. 6. Install and test the plugin in a restricted environment before enabling it in a production gateway. 7. Run OpenClaw under a dedicated least-privilege service account to reduce the impact of a compromised plugin. ]]>
