T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:4
- Finding
- Unpinned Third-Party Python Dependencies<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:4` and `SKILL.md:310` **Vulnerability Type**: Supply-chain exposure through unpinned dependencies **Risk Level**: Medium ### Vulnerable Code ```yaml metadata: { "openclaw": { "emoji": "🖱️", "requires": { "bins": ["python3"], "pip": ["pyautogui", "pyscreeze"] } } } ``` ```bash pip install pyautogui pyscreeze pillow ``` ### Technical Analysis The Skill declares and instructs installation of `pyautogui`, `pyscreeze`, and `pillow` without exact version constraints or package integrity hashes. Consequently, the package manager may retrieve whichever releases satisfy the request at installation time, including mutable future releases and their transitive dependencies. No evidence indicates that the currently named packages are malicious. The vulnerability is the absence of dependency controls, which prevents reproducible installation and increases exposure to compromised upstream releases, dependency confusion in misconfigured package environments, and unexpected security regressions. ### Attack Path 1. An attacker compromises an upstream package release, a transitive dependency, or the package index/account used to distribute it. 2. A user or automated environment installs the Skill requirements using the unpinned dependency declaration or documented `pip install` command. 3. `pip` resolves and downloads the affected release because no reviewed version or integrity hash is required. 4. Malicious installation behavior or code imported at runtime executes under the Python process's user account. 5. The payload can access resources available to that account and abuse the desktop-automation permissions granted to the Python environment. ### Impact Assessment Successful exploitation could execute arbitrary Python code with the privileges of the account installing or running the Skill. The accessible scope may include that user's files, environment variables, GUI session, clipboard, and network acce ...[truncated 200 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin every direct dependency to a reviewed exact version, for example: ```text pyautogui==<reviewed-version> pyscreeze==<reviewed-version> pillow==<reviewed-version> ``` 2. Generate a lock file that includes resolved transitive dependencies. 3. Require cryptographic hashes during installation, such as with a hash-locked requirements file and `pip install --require-hashes`. 4. Install packages only from an explicitly trusted package index. 5. Run dependency vulnerability and provenance checks in CI. 6. Perform installation inside an isolated virtual environment under a non-administrative account. 7. Establish a controlled update process in which version changes are reviewed and tested before release. ]]>
