T03 · Remote Payload Retrieval and Execution
- Location
scripts/run-fleet.sh:49- Finding
Unpinned Remote Repository Is Retrieved and Executed Without Integrity Verification
- Content
View full analysis
/dev/null 2>&1; then log "updating engine repo ($REPO)" git -C "$REPO" pull --ff-only 2>/dev/null || echo " (pull skipped — local changes or offline; using current checkout)" else log "cloning engine repo → $REPO" mkdir -p "$(dirname "$REPO")" git clone --depth 1 "$REMOTE" "$REPO" : > "$REPO/$SENTINEL_REL" fi CORE="$REPO/packages/core" [ -d "$CORE" ] || die "packages/core not found in $REPO — wrong remote?" cd "$CORE" if [ ! -d node_modules ]; then log "installing engine deps (npm ci)" npm ci fi ``` ```bash python3 "$REPO/fleet/scripts/sg_scout.py" "${SEAMS[@]}" log "proving RED→GREEN + promoting (npm run fleet)" npm run fleet log "corpus SLA gate (npm run sla)" npm run sla || die "corpus SLA is RED — refusing to submit. Fix or drop the offending pack." ``` ```bash npm run reprove || echo " (reprove failed — best-effort; the registry reproves on its own schedule)" ``` ### Technical Analysis The script clones or updates a mutable Git repository and then directly executes code obtained from it. No immutable commit, release digest, signed tag, or other integrity policy is enforced. The effective executable payload can therefore change after the Skill package has been audited. The execution surface includes: - Python programs from the downloaded repository. - npm scripts defined by the downloaded repository. - npm dependency installation through `npm ci`. - npm lifecycle hooks that dependencies or the repository may define. - An operator-configurable remote supplied through `BRAINBLAST_REPO_REMOTE`. The advertised proof an ...[truncated 2420 chars]- Remediation
View remediation
