T03 · Remote Payload Retrieval and Execution
- Location
README.md:42- Finding
Unpinned Remote Skill Retrieval from a Mutable Branch
- Content
View full analysis
Vulnerability Details
File Location:
README.md, lines 42-45
Vulnerability Type: Remote retrieval of mutable Skill content
Risk Level: HighVulnerable Code
bash # Download and extract into the skills directory cd ~/.openclaw/workspace/skills curl -L https://github.com/jooey/openclaw-skill-add-minimax-provider/archive/refs/heads/main.tar.gz | tar xz mv openclaw-skill-add-minimax-provider-main add-minimax-providerTechnical Analysis
The installation command retrieves the current contents of the mutable
mainbranch from a personal GitHub repository and pipes the response directly intotar. It does not pin a reviewed commit or release, verify a checksum or signature, inspect the archive, or stage the files in an isolated location before placing them in OpenClaw's automatically loaded Skill directory.Although the audited repository currently contains only Markdown documentation and no executable scripts, the remote branch can change after this audit. Future archive contents could include modified Skill instructions or additional scripts that were not present during review. Once installed, OpenClaw is instructed to recognize and load the Skill in a new session, giving subsequently retrieved instructions an execution channel through the Agent.
The command also fails to use options such as
curl --fail, meaning an unexpected HTTP response may be passed to the extractor. No malicious content was present in the reviewed artifact, but the installation mechanism creates a time-of-review/time-of-use supply-chain gap.Attack Path
- An attacker compromises the GitHub account, repository, or another mechanism capable of modifying the
mainbranch. - The attacker adds malicious Agent instructions or scripts to the branch.
- A user follows the documented installation command.
curlretrieves the attacker-controlled current branch without verifying its identity or integrity.tare ...[truncated 934 chars]
- An attacker compromises the GitHub account, repository, or another mechanism capable of modifying the
- Remediation
View remediation
Remediation Suggestions
- Replace the mutable branch URL with a release artifact or archive pinned to a reviewed commit hash.
- Publish an expected SHA-256 digest through a trusted channel and verify it before extraction.
- Use
curl --fail --show-error --locationso HTTP errors do not silently flow into the extractor. - Download the archive to a temporary directory instead of piping it directly into
tar. - List and inspect archive contents before extraction, then copy only expected files into the Skill directory.
- If releases are signed, verify the release signature and document the trusted signing identity.
- Review retrieved
SKILL.mdinstructions and any scripts before allowing OpenClaw to load the Skill.
A hardened workflow should follow this pattern:
bash set -euo pipefail tmp_dir="$(mktemp -d)" trap 'rm -rf "$tmp_dir"' EXIT curl --fail --show-error --location \ "https://github.com/jooey/openclaw-skill-add-minimax-provider/archive/<PINNED_COMMIT>.tar.gz" \ --output "$tmp_dir/skill.tar.gz" echo "<EXPECTED_SHA256> $tmp_dir/skill.tar.gz" | sha256sum --check tar -tzf "$tmp_dir/skill.tar.gz" tar -xzf "$tmp_dir/skill.tar.gz" -C "$tmp_dir"The extracted content should then be reviewed before it is copied into
~/.openclaw/workspace/skills.
