T03 · Remote Payload Retrieval and Execution
Error
- Location
- references/gmail-setup.md:77
- Finding
- Unverified Mutable Remote Executables Are Downloaded and Executed<![CDATA[ ## Vulnerability Details **File Location**: `references/gmail-setup.md:77-89`, `references/gmail-setup.md:238-240`, `references/google-drive-setup.md:105-117` **Vulnerability Type**: Supply-chain compromise through mutable remote payloads **Risk Level**: High ### Vulnerable Code ```bash # references/gmail-setup.md:77-89 docker exec openclaw-isolated sh -c \ 'mkdir -p /home/node/.local/bin && \ curl -L https://github.com/pimalaya/himalaya/releases/latest/download/himalaya-aarch64-unknown-linux-musl.tar.gz \ | tar -xz -C /home/node/.local/bin/' docker exec openclaw-isolated sh -c \ 'mkdir -p /home/node/.local/bin && \ curl -L https://github.com/pimalaya/himalaya/releases/latest/download/himalaya-x86_64-unknown-linux-musl.tar.gz \ | tar -xz -C /home/node/.local/bin/' ``` ```bash # references/google-drive-setup.md:105-117 docker exec openclaw-isolated sh -c \ 'mkdir -p /home/node/.local/bin && \ curl -L https://github.com/steipete/gogcli/releases/latest/download/gogcli_linux_arm64.tar.gz \ | tar -xz -C /home/node/.local/bin/' docker exec openclaw-isolated sh -c \ 'mkdir -p /home/node/.local/bin && \ curl -L https://github.com/steipete/gogcli/releases/latest/download/gogcli_linux_amd64.tar.gz \ | tar -xz -C /home/node/.local/bin/' ``` The Himalaya update procedure at `references/gmail-setup.md:238-240` repeats the same unsafe pattern. ### Technical Analysis The commands retrieve release archives from mutable `latest` URLs and stream them directly into `tar`. The resulting programs are placed in an executable directory and subsequently run with access to sensitive Gmail or Google Workspace credentials. The installation process provides no: - Immutable version pinning - SHA-256 digest verification - Cryptographic signature or provenance verification - Archive-content inspection - Protection against archive path traversal - `curl --fail` check to reject HTTP errors Although GitHub is a mainstream hosting service, these releas ...[truncated 1598 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Pin each dependency to a reviewed, immutable release version rather than `latest`. 2. Publish expected SHA-256 hashes in the Skill and verify them before extraction. 3. Prefer upstream signature or artifact-attestation verification when available. 4. Download the archive to a securely created temporary file rather than piping it directly to `tar`. 5. Use `curl --fail --show-error --location --proto '=https'`. 6. List and validate archive entries before extraction, rejecting absolute paths and `..` traversal entries. 7. Extract into a temporary staging directory and install only the expected binary. 8. Abort installation if any integrity or provenance check fails. 9. Document a controlled review and update process for changing pinned versions or hashes. ]]>
