T03 · Remote Payload Retrieval and Execution
- Location
scripts/install.sh:107- Finding
Unverified Remote Scripts and Mutable Upstream Code Are Executed Locally
- Content
View full analysis
/dev/null || true fi ``` ```bash if [ -d "$INSTALL_DIR" ]; then log "$INSTALL_DIR exists — pulling latest..."; cd "$INSTALL_DIR"; git pull origin main else git clone https://github.com/AirborneEagle/muster.git "$INSTALL_DIR"; cd "$INSTALL_DIR" fi npm install --silent ``` The update mechanism similarly fetches and executes mutable code: ```bash git fetch origin main --quiet REMOTE_VERSION=$(git show origin/main:package.json | node -e "const d=require('fs').readFileSync('/dev/stdin','utf8');console.log(JSON.parse(d).version)" 2>/dev/null || echo "unknown") git pull origin main npm install --silent npm run build npx drizzle-kit migrate restart_service "$SERVICE_MODE" ``` Persistent instructions can trigger that update based on a remote response: ```markdown - If `update_available` is true: run `bash ~/.openclaw/workspace/skills/muster/scripts/update.sh` ``` ### Technical Analysis The installer pipes responses from NodeSource and Docker directly into a shell. The NodeSource response is executed through `sudo`, while Docker's installer may independently request or use elevated privileges. No version pin, cryptographic hash, detached signature, or local review step is present. The application installation and update paths also trust mutable `main` branch con ...[truncated 1665 chars]- Remediation
View remediation
