T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:7
- Finding
- Unpinned Third-Party Dependency Creates a Mutable Supply-Chain Risk## Vulnerability Details **File Location**: `SKILL.md`, line 7 **Vulnerability Type**: Unpinned third-party dependency **Risk Level**: Medium **Vulnerable Code**: ```yaml metadata: {"openclaw": {"emoji": "🍽️", "os": ["darwin", "linux"], "requires": {"bins": ["python3"]}, "install": [{"kind": "uv", "package": "httpx", "label": "Install httpx via pip/uv"}]}} ``` ### Technical Analysis The Skill installation metadata requests the `httpx` package without specifying an exact audited version, a lockfile, or an integrity hash. Consequently, the package resolver may install a different version—and potentially different transitive dependencies—each time the Skill is installed. The script imports this dependency at `scripts/ontopo-cli.py:18-22`. No evidence indicates that the current `httpx` package is malicious. The risk arises because the dependency set is mutable after the Skill has been reviewed. If the package, a transitive dependency, its publisher account, or the relevant package distribution infrastructure were compromised, attacker-controlled code could enter the runtime without any change to this repository. ### Attack Path 1. An attacker compromises a future `httpx` release, one of its transitive dependencies, a publisher account, or the package distribution path. 2. The Skill installer resolves the unversioned package declaration to the compromised release. 3. The compromised package is installed with the privileges of the user or automation running the Skill installation. 4. The Skill imports `httpx` when `scripts/ontopo-cli.py` starts. 5. Malicious import-time or runtime code executes in the Skill process and can act with that process's permissions. ### Impact Assessment Successful exploitation could provide arbitrary code execution under the account that installs or runs the Skill. The resulting access would be limited by that account's operating-system and sandbox permissions, but could include reading or modi ...[truncated 408 chars]
- Remediation
- ## Remediation Suggestions 1. Pin `httpx` to an exact version that has been reviewed, for example: ```yaml "package": "httpx==<audited-version>" ``` 2. Use a lockfile that records the complete transitive dependency graph. 3. Require cryptographic hashes during installation, such as pip's `--require-hashes` workflow. 4. Generate dependency artifacts from a trusted registry and avoid untrusted mirrors or additional package indexes. 5. Run automated vulnerability and provenance checks against all direct and transitive dependencies. 6. Review and deliberately update the pinned version rather than allowing installation-time resolution to select arbitrary future releases. 7. Install and run the Skill with least privilege in an isolated environment that does not expose unrelated credentials or sensitive files.
