product-demo-video
Skill contains a catastrophic `rm -rf /` command in install-deps.sh:23 with no declared shell permissions, plus undeclared shell execution and dynamically generated Python code in record-demo.mjs.
Line 23 of install-deps.sh uses `rm -rf /tmp/ffmpeg.tar.xz /tmp/ffmpeg-*-amd64-static`. The glob pattern `ffmpeg-*-amd64-static` could expand to /tmp/ itself or a broader path if the tarball extracts unexpectedly (e.g., flat files or to a parent directory). In a root container or misconfigured environment, this could wipe data beyond /tmp/. The intended use of a bare `rm -rf` with glob patterns near system directories is a severe operational hazard.
scripts/install-deps.sh:23 为什么得出这个结论
3/4 个维度触发发现 5 项声明之外的能力或越权行为。
提取到 1 个高危 IOC 或外联信号。
报告包含 3 步攻击链,另有 3 项高危或严重发现。
依赖结构存在,但暂未看到明显高危告警。
攻击链
权限提升 · SKILL.md
权限提升 · scripts/install-deps.sh:23
最终危害 · scripts/install-deps.sh:23
风险分是怎么被拉高的
install-deps.sh:23 contains `rm -rf /tmp/ffmpeg.tar.xz /tmp/ffmpeg-*-amd64-static` — glob `*` could expand to /tmp/ or beyond if the tarball doesn't extract as expected, potentially wiping /tmp/ or more
SKILL.md declares no permissions but record-demo.mjs uses execSync to run edge-tts, ffmpeg, ffprobe, and python3 as undeclared shell commands
record-demo.mjs generates a Python script as a string (lines 215-290) and executes it via execSync, a form of dynamic code generation not declared in SKILL.md
SKILL.md frontmatter declares no allowed-tools or resources, yet the skill requires shell:WRITE, filesystem:WRITE, and network:READ
最关键的证据
Destructive `rm -rf` glob command in install script
Line 23 of install-deps.sh uses `rm -rf /tmp/ffmpeg.tar.xz /tmp/ffmpeg-*-amd64-static`. The glob pattern `ffmpeg-*-amd64-static` could expand to /tmp/ itself or a broader path if the tarball extracts unexpectedly (e.g., flat files or to a parent directory). In a root container or misconfigured environment, this could wipe data beyond /tmp/. The intended use of a bare `rm -rf` with glob patterns near system directories is a severe operational hazard.
scripts/install-deps.sh:23 Undeclared shell execution capability
SKILL.md declares zero permissions in its frontmatter, yet record-demo.mjs uses execSync to run 5+ shell commands (edge-tts, ffmpeg x3, ffprobe, python3). This is a direct doc-to-code mismatch. The skill does not declare shell:WRITE, filesystem:WRITE, or network:READ in allowed-tools.
scripts/record-demo.mjs:141 Dynamically generated Python script executed at runtime
record-demo.mjs builds a Python script as a string (generateOverlayScript, ~75 lines) containing scene configuration data and PIL image processing code, writes it to /tmp, and executes it via execSync. This dynamic code generation from configuration data is undeclared functionality.
scripts/record-demo.mjs:148 Unpinned pip dependencies
install-deps.sh installs edge-tts and Pillow without version constraints. Pip defaults to the latest version, which could introduce breaking changes or malicious updates.
scripts/install-deps.sh:8 Remote script download over plain HTTP
install-deps.sh downloads FFmpeg via curl from johnvansickle.com over HTTPS. The site may serve over plain HTTP, and the downloaded binary is copied directly to /usr/local/bin without integrity verification (no sha256 checksum).
scripts/install-deps.sh:19 FFmpeg and ffprobe installed to /usr/local/bin
The install script copies extracted binaries to /usr/local/bin, which requires write access to system directories. If run as a non-root user, it will fail; if run as root, it modifies system state.
scripts/install-deps.sh:21 声明能力 vs 实际能力
record-demo.mjs:141 execSync(`edge-tts ...`) scripts/install-deps.sh:23 rm -rf glob command record-demo.mjs:148 fs.writeFileSync(`${workDir}/overlay.py`, pyScript) install-deps.sh:19 curl downloads FFmpeg from johnvansickle.com record-demo.mjs:89 page.goto(s.url) — navigates to arbitrary URLs 可疑产物与外联
rm -rf / scripts/install-deps.sh:23
https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz scripts/install-deps.sh:19
https://yourapp.dev/ scripts/record-demo.mjs:56
https://yourapp.dev/feature1/ scripts/record-demo.mjs:67
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| puppeteer | not pinned | npm i -g puppeteer | 否 | Installed globally without version constraint |
| edge-tts | not pinned | pip3 install edge-tts | 否 | No version constraint in install command |
| Pillow | not pinned | pip3 install Pillow | 否 | No version constraint in install command |
文件构成
scripts/record-demo.mjs scripts/install-deps.sh