T08 · Insecure Dependencies
- Location
SKILL.md:17- Finding
Unpinned Third-Party Dependency Installation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 4 and 17–19
Vulnerability Type: Unpinned third-party dependency
Risk Level: MediumVulnerable Code
yaml metadata: {"openclaw": {"requires": {"python": ["notion-client"]}, "install": []}}bash pip install notion-clientTechnical Analysis
The skill instructs users to install
notion-clientwithout pinning a reviewed version or verifying an integrity hash. Consequently, the package version and code executed during installation or runtime may change after this skill has been reviewed.This creates supply-chain exposure if the package, a maintainer account, or the configured package index is compromised. It may also cause users to receive a future release containing malicious or unexpectedly insecure behavior. The audit found no evidence that the currently named package is malicious; the finding concerns the unsafe dependency-installation practice.
Attack Path
- An attacker compromises the upstream package, a maintainer account, or the package-distribution channel.
- The attacker publishes a malicious release under the expected package name.
- A user follows the skill instructions and runs
pip install notion-client. pipselects the attacker-controlled release because no version or hash is specified.- Malicious package code executes during installation or when imported by the example.
- The package may access data available to the Python process, including the Notion integration token supplied to
AsyncClient.
Impact Assessment
Successful exploitation could execute code with the privileges of the user running
pipor the Python example. Depending on the local environment, this could expose the Notion integration token, accessible local files, environment variables, and Notion resources authorized for that integration. The Notion-side scope would remain bounded by the capabilities and pages granted to the compromised integration token.- Remediation
View remediation
Remediation Suggestions
- Pin
notion-clientto a specifically reviewed version:bash python -m pip install "notion-client==<reviewed-version>" - Record the same exact version in the skill metadata rather than declaring an unconstrained dependency.
- Use a lock file or constraints file and require package hashes, for example:
bash python -m pip install --require-hashes -r requirements.txt - Generate hashes from a trusted release artifact and review dependency updates before changing the pin.
- Install only from an explicitly trusted package index, preferably in an isolated virtual environment with minimal operating-system privileges.
- Avoid passing the Notion token in source code; retrieve it from a protected environment variable or secret manager and grant the integration only the minimum required Notion access.
- Pin
