T08 · Insecure Dependencies
- Location
SKILL.md:10- Finding
Unpinned Third-Party Dependencies Permit Mutable Supply-Chain Code Execution
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:10-19andSKILL.md:30-33
Vulnerability Type: T08: Insecure Dependencies
Risk Level: MediumThe Skill installs third-party Python and Go packages without pinning reviewed versions or verifying package integrity. The Go dependency explicitly uses the mutable
@latestversion.yaml metadata: openclaw: requires: bins: ["whisper", "sonos", "curl"] install: - id: whisper kind: pip package: openai-whisper bins: ["whisper"] label: Install Whisper (pip) - id: sonos kind: go module: github.com/steipete/sonoscli/cmd/sonos@latest bins: ["sonos"] label: Install sonoscli (go)The documentation repeats the unpinned installation instructions:
bash pip install yt-dlp pip install openai-whisper go install github.com/steipete/sonoscli/cmd/sonos@latestTechnical Analysis
Package installation is functionally relevant because the Skill requires transcription, media downloading, and Sonos control tools. However, resolving unrestricted package versions is not necessary for those functions and exceeds the minimum supply-chain trust required.
openai-whisperandyt-dlpare installed without exact versions or hashes. The Sonos utility is installed with@latest, so the code selected during installation may change after this Skill has been reviewed. Depending on the package manager and package implementation, installation can execute dependency-controlled compilation, build hooks, or other local code. The resulting binaries also execute with the invoking user's privileges when the Skill uses them.No dependency lockfile, package hash, immutable Go commit, signature verification, or allowlisted artifact digest is provided. Consequently, compromise of an upstream maintainer account, source repository, release process, package registry, or transit ...[truncated 2036 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin each Python package to an explicitly reviewed version, for example
openai-whisper==<reviewed-version>andyt-dlp==<reviewed-version>. - Replace the Go
@latestselector with a reviewed semantic version or, preferably, an immutable commit revision. - Maintain a lockfile or constraints file that records direct and transitive dependency versions.
- Require cryptographic hashes for Python artifacts where supported, such as a hash-locked requirements file installed with
pip --require-hashes. - Fetch packages only from explicitly trusted registries and disable unintended fallback indexes to reduce dependency-confusion exposure.
- Verify release signatures or published checksums when upstream projects provide them.
- Perform installation in an isolated, non-administrative environment with restricted filesystem, credential, and network access.
- Separate dependency installation from normal Skill execution so dependency updates require explicit review rather than occurring implicitly.
- Document a controlled update process that reviews source changes, refreshes hashes, and tests the pinned versions before deployment.
- Pin each Python package to an explicitly reviewed version, for example
