T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:6
- Finding
- Unpinned yt-dlp Dependency Creates a Supply-Chain Risk## Vulnerability Details **File Location**: `SKILL.md:6`, `SKILL.md:49`, `README.md:33-36` **Vulnerability Type**: Unpinned third-party dependency **Risk Level**: Medium ### Vulnerable Code `SKILL.md:6`: ```yaml metadata: { "openclaw": { "requires": { "bins": ["python3"], "env": ["HTTPS_PROXY"] }, "install": [ { "kind": "uv", "package": "yt-dlp", "bins": ["yt-dlp"] } ] } } ``` `SKILL.md:49`: ```markdown - 需要 yt-dlp:脚本自动定位托管 venv(`~/.workbuddy/binaries/python/envs/default/bin/python`);若提示找不到,安装:`pip install yt-dlp` ``` `README.md:33-36`: ```bash pip install yt-dlp ``` ```markdown > 供应链提示:为可复现安装,建议固定 yt-dlp 版本(如 `pip install yt-dlp==2025.xx.x`),并按需升级。 ``` ### Technical Analysis The automated installation metadata and primary installation commands resolve `yt-dlp` without an exact version or integrity hash. Consequently, the installed code can change over time without any corresponding change to the reviewed Skill package. The README acknowledges version pinning, but the illustrative `2025.xx.x` value is not an installable exact version, and the actual package metadata remains unpinned. There is also no lockfile, package hash, or other mechanism that guarantees installation of a reviewed artifact. Because `yt-dlp` is imported and executed as Python code through `python -m yt_dlp`, a compromised or unexpectedly malicious future release would execute inside a process launched with the invoking user's privileges. ### Attack Path 1. An attacker compromises the upstream package publication process, maintainer account, package repository, or a future `yt-dlp` release. 2. A user installs or updates this Skill using the unpinned dependency declaration or runs `pip install yt-dlp`. 3. The package resolver retrieves the affected latest release rather than a previously reviewed version. 4. Malicious package code executes during installation, import, or invocation through `python -m yt_dlp`. 5. The depe ...[truncated 731 chars]
- Remediation
- ## Remediation Suggestions 1. Pin `yt-dlp` to an exact, reviewed version in the Skill installation metadata: ```yaml package: "yt-dlp==<reviewed-version>" ``` 2. Replace all generic installation commands with the same exact version. 3. Use a lockfile or hash-verified installation, such as: ```bash pip install --require-hashes -r requirements.txt ``` 4. Record the expected distribution hash from a trusted package source. 5. Test upgrades in an isolated environment before updating the pinned version. 6. Document a controlled update policy, including review of release notes and package provenance. 7. Avoid placeholder versions such as `2025.xx.x`; provide a real, installable version known to be compatible with the Skill.
