T08 · Insecure Dependencies
- Location
SKILL.md:29- Finding
Unpinned Third-Party Packages Are Installed and Executed
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:29-31,SKILL.md:67-69,SKILL.md:150-157,README.md:6-9, andexamples/setup-beddel.yaml:23-29
Vulnerability Type: Supply-chain exposure through unpinned dependencies
Risk Level: MediumVulnerable Code
SKILL.md:29-31:bash python3.11 -m pip install "beddel[all]" beddel versionSKILL.md:67-69:bash openclaw plugins install @botanarede/beddelexamples/setup-beddel.yaml:23-29:yaml - id: install_plugin primitive: tool config: tool: shell_exec arguments: cmd: "openclaw plugins install @botanarede/beddel" timeout: 120README.md:6-9:bash openclaw skills install --from ./skill openclaw plugins install @botanarede/beddelTechnical Analysis
The installation instructions and bundled setup workflow retrieve packages without an exact version or integrity constraint. Consequently, the code installed and executed is determined by the package registries at installation time rather than by the reviewed skill contents.
The Python command also installs the broad
allextra, expanding the transitive dependency set and supply-chain attack surface. The OpenClaw package may be downloaded and loaded automatically when the workflow's plugin-status check decides installation is required. Package-controlled installation hooks and runtime initialization may execute under the invoking user's account.This finding does not establish that the named packages are malicious. The vulnerability is the absence of controls ensuring that future installations resolve to the exact versions and artifacts that were reviewed.
Attack Path
- An attacker compromises a release account, package version, registry delivery path, or transitive dependency.
- The attacker publishes malicious code under a version satisfying the unconstrained installation command.
- A user follows the docu ...[truncated 901 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the Python package and OpenClaw plugin to exact, reviewed versions.
- Use dependency lockfiles and cryptographic integrity hashes where supported.
- Pin and audit transitive Python dependencies instead of relying on the unconstrained
allextra. - Restrict package sources to approved registries and enable registry signature or provenance verification.
- Require explicit user confirmation before the bundled workflow installs or updates executable packages.
- Verify the package name, resolved version, publisher identity, and artifact integrity before loading the plugin.
- Separate installation from routine workflow execution so ordinary runs cannot silently introduce new executable dependencies.
- Periodically review pinned versions and update them through a controlled security review process.
