T03 · Remote Payload Retrieval and Execution
Error
- Location
- SKILL.md:17
- Finding
- Execution of Mutable Python Code from a Remote URL<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:17`, `SKILL.md:23-24`, and `SKILL.md:29-30` **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: Critical ### Vulnerable Code ```markdown Direct script from vizclaw.com: ```bash uv run https://vizclaw.com/skills/vizclaw/scripts/connect.py ``` ```bash openclaw run ... --json | uv run https://vizclaw.com/skills/vizclaw/scripts/connect.py --openclaw-jsonl --mode detailed ``` Advanced config (skills, models, reminders, heartbeat): ```bash uv run https://vizclaw.com/skills/vizclaw/scripts/connect.py \ --skills "ez-google,ez-unifi,claude-code" \ --available-models "sonnet,haiku,gpt-4o" \ --heartbeat-interval 30 \ --reminders-json '[{"title":"Check email","schedule":"every 30min"}]' ``` ``` ### Technical Analysis The documented workflow instructs users to execute a Python script directly from a mutable external URL. The payload retrieved during a future invocation is not guaranteed to be the same code that was inspected during this audit. No immutable version identifier, cryptographic digest, signature, or local reviewed copy is used. Consequently, compromise of the hosting account, DNS infrastructure, deployment pipeline, or remote script can change the effective executable payload without modifying the installed Skill. This behavior is especially dangerous in the JSONL example because potentially sensitive OpenClaw events are piped directly into the remotely retrieved program. The process executes with the permissions of the invoking user and can access resources available to that user. ### Attack Path 1. An attacker compromises or gains control over the hosted script or its deployment infrastructure. 2. The attacker replaces `connect.py` at the documented URL with a malicious payload. 3. A user follows the Skill documentation and runs `uv run` against that URL. 4. `uv` downloads and executes the altered Python program. 5. The payload executes with the user's ...[truncated 979 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Remove all instructions that execute Python directly from a remote URL. 2. Execute the reviewed local package copy instead, using an immutable release artifact. 3. Publish versioned releases and pin the documentation to an exact version rather than a mutable path. 4. Provide a cryptographic SHA-256 digest or signed provenance for every release and verify it before execution. 5. Use a trusted package repository with release signing and reproducible builds. 6. Ensure the installed script and the audited script are byte-for-byte identical. 7. If remote retrieval is unavoidable, download the file separately, verify its signature and digest, present it for review, and only then execute it. 8. Avoid piping sensitive OpenClaw output into any executable whose integrity has not been verified. ]]>
