T03 · Remote Payload Retrieval and Execution
- Location
scripts/setup.sh:26- Finding
Mutable Remote Application and Dependencies Are Retrieved and Executed Without Integrity Pinning
- Content
View full analysis
/dev/null || echo " 无法git pull,继续使用本地代码" else echo "📦 克隆项目..." git clone https://github.com/liuboacean/WorldCup-2026.git "$APP_DIR" cd "$APP_DIR" fi # 安装依赖 echo "📦 安装依赖..." npm install 2>/dev/null || npm install --no-optional # 创建目录 mkdir -p data/matches cache # 检查端口 PORT=3001 if lsof -i :$PORT &>/dev/null 2>&1; then echo "⚠️ 端口 $PORT 已被占用,尝试关闭旧进程..." fuser -k $PORT/tcp 2>/dev/null || true sleep 2 fi # 启动 echo "🚀 启动服务器 (端口 $PORT)..." nohup node server.js > server.log 2>&1 & ``` The same unpinned deployment approach is documented in `SKILL.md:44-49` and `README.md:16-19`. ### Technical Analysis The setup script clones or updates the `master` branch of an external Git repository and immediately installs its npm dependencies and executes `server.js`. It does not pin the application to a reviewed commit hash, verify a signed commit or release, validate an artifact checksum, or otherwise confirm that the downloaded content matches the version that was audited. Because the remote branch is mutable, the effective application payload can change after this Skill package has been reviewed. The `npm install` command also resolves and installs third-party packages. npm package installation can execute lifecycle scripts unless they are explicitly disabled. No reviewed lockfile is supplied in this Skill package, and the script does not use a deterministic installation command such as `npm ci`. This creates two related trust-boundary problems: 1. The external Git repository acts as a mutable remote code-execution channel. 2. The npm dependency graph and installation scripts introduce an ad ...[truncated 1671 chars]- Remediation
View remediation
