T03 · Remote Payload Retrieval and Execution
Warning
- Location
- INSTALL.md:18
- Finding
- Mutable Remote Repository and Unpinned Dependencies Are Executed During Installation<![CDATA[ ## Vulnerability Details **File Location**: `INSTALL.md:18-29`, `INSTALL.md:95-97`; `SKILL.md:74-77`; `SKILL.json:5-6`, `SKILL.json:25-53`, `SKILL.json:120-123` **Vulnerability Type**: Mutable remote payload installation and insecure dependency management **Risk Level**: Medium ### Vulnerable Code `INSTALL.md:18-29`: ```bash cd ~/.openclaw/workspace/skills git clone https://github.com/mukston/boris-workflow.git cd boris-workflow ``` ```bash # Install required dependencies pip install -r requirements.txt # Or install as a package pip install -e . ``` `INSTALL.md:95-97`: ```bash cd ~/.openclaw/workspace/skills/boris-workflow git pull origin main pip install -r requirements.txt --upgrade ``` `SKILL.md:74-77`: ```bash # Install dependencies cd ~/.openclaw/workspace/skills/boris-workflow pip install -r requirements.txt ``` `SKILL.json:5-6`: ```json "homepage": "https://github.com/mukston-debug/boris-workflow", "repository": "https://github.com/mukston-debug/boris-workflow", ``` `SKILL.json:25-53`: ```json "dependencies": { "required": [ { "name": "pyyaml", "version": ">=6.0", "purpose": "YAML configuration parsing" }, { "name": "requests", "version": ">=2.28.0", "purpose": "HTTP client for API calls" } ], "optional": [ { "name": "fastapi", "version": ">=0.100.0", "purpose": "Web UI backend", "required_for": ["web-ui"] }, { "name": "uvicorn", "version": ">=0.23.0", "purpose": "ASGI server for Web UI", "required_for": ["web-ui"] }, { "name": "pydantic", "version": ">=2.0.0", "purpose": "Data validation for Web UI", "required_for": ["web-ui"] } ] }, ``` `SKILL.json:120-123`: ```json "entry_points": { "cli": "./bin/boris-run", "webui": "./webui/start.sh" }, ``` ### Technical Analysis The installation process instructs users to clone and execute content from the mutable default branch o ...[truncated 3486 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Include the complete executable implementation in the reviewed skill artifact, including the CLI, libraries, Web UI, tests, `requirements.txt`, and `pyproject.toml`. 2. Establish one canonical repository URL and use it consistently in `INSTALL.md`, `SKILL.json`, documentation, badges, and release metadata. 3. Replace default-branch installation with an immutable, versioned release: - Pin cloning instructions to a specific commit hash or cryptographically signed tag. - Publish checksums for release archives. - Document signature and checksum verification before installation. 4. Do not recommend `git pull origin main` as a production upgrade mechanism. Install a reviewed, signed release version instead. 5. Pin direct and transitive Python dependencies to reviewed versions using a lockfile. 6. Generate and enforce hashes, for example through a fully pinned requirements file used with `pip install --require-hashes`. 7. Avoid editable installation for ordinary users. Build a reproducible wheel in a controlled release pipeline and publish its hash and provenance. 8. Use a virtual environment with minimal filesystem and credential access during installation and execution. 9. Add automated supply-chain controls, including dependency vulnerability scanning, release signing, provenance attestations, and continuous verification of repository ownership. 10. Resubmit the complete implementation for code review before users execute the CLI or expose the Web UI. ]]>
