T03 · Remote Payload Retrieval and Execution
- Location
execute.sh:22- Finding
Unpinned Remote Repository and Dependencies Are Installed and Executed
- Content
View full analysis
/dev/null; then echo "❌ Error: Failed to download Bloom Identity Skill" echo " Please check your internet connection and try again" exit 1 fi # Install dependencies echo "📦 Installing dependencies..." cd "$BLOOM_SKILL_DIR" if ! npm install --silent 2>/dev/null; then echo "⚠️ Warning: npm install had issues, but continuing..." fi echo "✅ Installation complete!" echo "" ``` ```bash # Run analyzer with session file cd "$BLOOM_SKILL_DIR" npx tsx scripts/run-from-session.ts "$SESSION_FILE" "$USER_ID" ``` ### Technical Analysis The wrapper retrieves the current default branch of an external GitHub repository without pinning an immutable commit, release artifact, signature, or expected cryptographic hash. It then runs `npm install`, which can execute package lifecycle scripts, and launches TypeScript code from the downloaded checkout through `npx`. Consequently, the effective code executed by this Skill is not contained in the audited package and can change after publication or review. The behavior of `npx` may also involve downloading a package if an appropriate local executable is unavailable. Suppressing installation errors and continuing makes the situation less predictable: the wrapper may execute a partially installed, stale, or otherwise inconsistent dependency tree. ### Attack Path 1. An attacker compromises the referenced GitHub repository, its maintainer account, or a dependency in its npm dependency graph. 2. The attacker inserts malicious code into the default branch, a package lifecycle script, or a dependency. 3. A user invokes the Skill on a system wh ...[truncated 1091 chars]- Remediation
View remediation
