T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:144- Finding
Unpinned Remote Code Is Downloaded, Installed, and Executed Automatically
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:144-220
Vulnerability Type: Mutable remote payload retrieval and execution
Risk Level: CriticalVulnerable Code
bash # macOS/Linux mkdir -p ~/projects cd ~/projects git clone https://github.com/xmanrui/OpenClaw-bot-review.gitbash mkdir -p ~/projects cd ~/projects curl -L https://github.com/xmanrui/OpenClaw-bot-review/archive/refs/heads/main.zip -o openclaw-dashboard.zip unzip openclaw-dashboard.zip mv OpenClaw-bot-review-main OpenClaw-bot-review rm openclaw-dashboard.zipbash # macOS/Linux cd ~/projects/OpenClaw-bot-review npm installbash # macOS/Linux cd ~/projects/OpenClaw-bot-review npm run dev > /dev/null 2>&1 &The equivalent Windows instructions use
git clone,Invoke-WebRequest,npm install, andnpm run dev, producing the same security exposure.Technical Analysis
The Skill retrieves the current contents of the unpinned
mainbranch of a personal GitHub repository and then executes repository-controlled code. It does not pin an immutable commit or release, verify a cryptographic digest or signature, or include the dashboard source in the audited package.Running
npm installis itself a code-execution boundary because package lifecycle hooks such aspreinstall,install, andpostinstallcan execute arbitrary commands. Runningnpm run devthen directly executes scripts selected by the downloaded repository.The update instructions at
SKILL.md:87-111also usegit fetch,git pull origin main, and anothernpm install. Consequently, even a previously inspected installation can silently acquire different executable behavior.SKILL.md:367explicitly states that no user confirmation is needed.Although downloading a dashboard is consistent with the declared functionality, retrieving and executing the latest mutable source without integrity controls exce ...[truncated 1611 chars]
- Remediation
View remediation
Remediation Suggestions
- Vendor the complete dashboard implementation into the reviewed package, or pin downloads to a specific immutable commit or signed release.
- Publish and verify a SHA-256 or stronger digest before extracting or executing an archive.
- Verify release signatures against a documented, trusted signing key.
- Commit and enforce a lockfile, then use
npm cirather thannpm install. - Use
npm ci --ignore-scriptsunless lifecycle scripts are strictly required and individually audited. - Require explicit user approval before downloading, updating, installing dependencies, or starting newly downloaded code.
- Display the source URL, pinned revision, integrity value, and proposed commands in the approval prompt.
- Execute the dashboard in a restricted account, container, or sandbox with a read-only filesystem and tightly limited network access.
- Do not automatically track
main; provide reviewed, versioned upgrades with rollback support. - Audit the dashboard repository and its complete dependency graph as part of the Skill release process.
