T08 · Insecure Dependencies
Warning
- Location
- clawhub.json:12
- Finding
- Unbounded Third-Party SDK Can Execute Unreviewed Supply-Chain Code<![CDATA[ ## Vulnerability Details **File Location**: `clawhub.json:12`; related installation instruction at `README.md:24-26` **Vulnerability Type**: Unbounded third-party dependency **Risk Level**: Medium ### Vulnerable Code `clawhub.json:12`: ```json "pip": ["reveyes>=0.1.2"] ``` `README.md:24-26`: ```bash pip install reveyes ``` ### Technical Analysis The Skill installs the externally maintained `reveyes` Python package without an exact version pin or integrity hash. The `>=0.1.2` constraint permits future package versions that were not part of this audit, while the manual installation command resolves the latest version available from the configured Python package index. The package is imported and executed by `scripts/fetch.py`, and its `ReveyesClient` receives the `REVEYES_API_KEY`. The dependency also performs the Skill's network communication. Because its implementation is not included in the audited project, this repository cannot enforce which network destinations receive the credential or what additional local operations the package performs. No evidence establishes that the currently intended SDK version is malicious. The issue is the avoidable supply-chain exposure created by accepting arbitrary future releases. ### Attack Path 1. An attacker compromises the `reveyes` package publisher account, distribution infrastructure, or an accepted future release. 2. The user installs the Skill or follows `pip install reveyes`. 3. Dependency resolution selects the compromised version because no exact version or hash is required. 4. Python executes package-level code when `scripts/fetch.py` imports `reveyes`. 5. The compromised implementation receives the API key through `ReveyesClient(api_key=api_key)`. 6. Malicious package code can transmit the key or access resources available to the Agent's operating-system account. ### Impact Assessment Successful exploitation would execute Python code with the same privileges as the process running the Ski ...[truncated 342 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Replace the lower-bound dependency with an exact, reviewed version, for example: ```json "pip": ["reveyes==0.1.2"] ``` 2. Use a lockfile or requirements file containing cryptographic hashes, and install with hash verification where the deployment platform supports it. 3. Review the pinned SDK source, particularly import-time behavior, API-key handling, telemetry, and destination URLs. 4. Document the network hosts the SDK is expected to contact and restrict outbound traffic to those hosts where practical. 5. Upgrade only through a controlled process that reviews the new version and updates the corresponding integrity hash. 6. Run the Skill under a dedicated, least-privileged account or sandbox with access only to the required API credential and project resources. ]]>
