T08 · Insecure Dependencies
- Location
SKILL.md:4- Finding
Unpinned Third-Party Runtime Dependencies
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 4
Vulnerability Type: Unpinned third-party dependencies
Risk Level: MediumVulnerable Code
yaml metadata: {"openclaw":{"emoji":"🔨","requires":{"bins":["python"]},"install":[{"id":"pip","kind":"uv","packages":["fastapi","uvicorn","pydantic","pyyaml"]}]}}Technical Analysis
The installation configuration requests
fastapi,uvicorn,pydantic, andpyyamlwithout exact versions or integrity hashes. Consequently, dependency resolution can select mutable future releases rather than a fixed, previously reviewed dependency set.This creates a supply-chain and build-reproducibility risk. If an upstream package, maintainer account, or distribution channel is compromised, a later installation could retrieve an affected release. These dependencies are directly used by the application: Uvicorn starts the service, FastAPI and Pydantic are imported by the API, and PyYAML is imported by the generator. Malicious code in a resolved package could therefore run during installation, executable startup, or module import.
No evidence indicates that the currently named packages are malicious, typosquatted, or presently compromised. Exploitation depends on an upstream compromise or unsafe future release.
Attack Path
- An attacker compromises an upstream dependency, its maintainer account, or the package distribution channel.
- The attacker publishes a malicious version under one of the dependency names listed in
SKILL.md. - A user installs the skill after that release becomes eligible for dependency resolution.
- Because no exact versions or hashes are specified, the resolver selects and downloads the malicious release.
- Attacker-controlled code executes during package installation, Uvicorn startup, or application module import.
- The malicious dependency can act with the privileges of the account or environment running the installation and ...[truncated 642 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every direct dependency to an exact, reviewed version, for example:
yaml "packages":["fastapi==<reviewed-version>","uvicorn==<reviewed-version>","pydantic==<reviewed-version>","pyyaml==<reviewed-version>"] - Generate and commit a lock file that records the complete transitive dependency graph.
- Require package hashes during installation where the installation mechanism supports them.
- Install only from an explicitly configured trusted package index over authenticated TLS.
- Use automated dependency vulnerability and provenance scanning, and review updates before modifying pins.
- Run installation and the API under a dedicated, least-privileged account without unnecessary access to secrets, sensitive files, or privileged host interfaces.
- Rebuild and test the locked environment regularly so security updates can be adopted deliberately without reverting to unconstrained resolution.
- Pin every direct dependency to an exact, reviewed version, for example:
