T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:5
- Finding
- Unpinned Executable Third-Party Dependencies## Vulnerability Details **File Location**: `SKILL.md`, lines 5 and 16–17; additional unsafe upgrade guidance at line 120 **Vulnerability Type**: Supply-chain risk from unpinned dependencies **Risk Level**: Medium ### Vulnerable Code ```yaml metadata: {"openclaw":{"emoji":"🎬","requires":{"bins":["python3","playwright"],"env":[]},"install":[{"id":"pip","kind":"pip","package":"tiktok-uploader","bins":["tiktok-uploader"],"label":"Install tiktok-uploader (pip)"},{"id":"playwright","kind":"pip","package":"playwright","bins":["playwright"],"label":"Install Playwright"}]}} ``` ```bash pip install tiktok-uploader playwright install ``` The troubleshooting section also recommends an unconstrained upgrade: ```bash pip install -U tiktok-uploader ``` ### Technical Analysis The skill installs `tiktok-uploader` and Playwright without exact version constraints, lock-file enforcement, or package hashes. Consequently, the code installed when a user invokes the setup procedure can differ from the dependency versions that were present when the skill was audited. The `playwright install` command additionally downloads executable browser components. No artifact version or integrity verification is documented. The `pip install -U tiktok-uploader` recommendation explicitly encourages replacing an installed dependency with the latest available release without first reviewing it. This creates a supply-chain exposure: if a dependency release, package index account, distribution channel, or downloaded browser artifact is compromised, attacker-controlled code could be installed and executed under the user's account. The audit found no evidence that the currently referenced package names are typosquatted or malicious; the vulnerability is the absence of reproducible dependency pinning and integrity controls. ### Attack Path 1. An attacker compromises a dependency publisher account, package distribution channel, or a future release of one ...[truncated 1307 chars]
- Remediation
- ## Remediation Suggestions 1. Pin every Python dependency to an exact, reviewed version, for example `tiktok-uploader==X.Y.Z` and `playwright==A.B.C`. 2. Maintain a dependency lock file containing cryptographic hashes and install with hash verification, such as `pip install --require-hashes -r requirements.txt`. 3. Pin and document the Playwright version together with its corresponding browser release. Use the package's supported cache or controlled artifact repository and verify downloaded artifacts where feasible. 4. Replace the unconditional `pip install -U tiktok-uploader` troubleshooting instruction with a controlled upgrade procedure that requires reviewing release notes, source changes, provenance, and integrity before updating. 5. Use a trusted, explicitly configured package index and prevent unintended fallback to untrusted or internal indexes. 6. Run installation and browser automation in an isolated virtual environment or container under a non-privileged account with access limited to the required cookie and video files. 7. Add automated dependency scanning and provenance checks to the release process, and repeat the security review whenever pinned dependency versions change.
