扫描报告
70 /100
product-demo-video
Create product demo videos with voiceover, text overlays, and real browser interactions using Puppeteer, edge-tts, PIL, and FFmpeg
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.
不要安装此技能
Do not deploy this skill. The install-deps.sh script contains `rm -rf /tmp/ffmpeg.tar.xz /tmp/ffmpeg-*-amd64-static` where shell glob expansion could resolve to `/tmp/` or broader paths if the archive doesn't extract as expected. Additionally, SKILL.md declares zero permissions but the implementation requires shell:WRITE, filesystem:WRITE, and network:READ. Remove the shell scripts entirely and declare required capabilities explicitly.
攻击链 3 步
⬡
提权 Skill invoked with Bash:WRITE capability, allowing shell command execution
SKILL.md⬡
提权 install-deps.sh uses `rm -rf /tmp/ffmpeg.tar.xz /tmp/ffmpeg-*-amd64-static` — glob expansion could resolve to /tmp/ or broader paths if archive structure is unexpected
scripts/install-deps.sh:23◉
影响 If run as root (e.g., in a Docker container), `rm -rf /tmp/` or broader path wipe could cause data loss across the system
scripts/install-deps.sh:23安全发现 6 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 严重 | Destructive `rm -rf` glob command in install script 代码执行 | scripts/install-deps.sh:23 |
| 高危 | Undeclared shell execution capability 文档欺骗 | scripts/record-demo.mjs:141 |
| 高危 | Dynamically generated Python script executed at runtime 代码执行 | scripts/record-demo.mjs:148 |
| 中危 | Unpinned pip dependencies 供应链 | scripts/install-deps.sh:8 |
| 中危 | Remote script download over plain HTTP 供应链 | scripts/install-deps.sh:19 |
| 低危 | FFmpeg and ffprobe installed to /usr/local/bin 权限提升 | scripts/install-deps.sh:21 |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 命令执行 | NONE | WRITE | ✗ 越权 | record-demo.mjs:141 execSync(`edge-tts ...`) |
| 命令执行 | NONE | WRITE | ✗ 越权 | scripts/install-deps.sh:23 rm -rf glob command |
| 文件系统 | NONE | WRITE | ✗ 越权 | record-demo.mjs:148 fs.writeFileSync(`${workDir}/overlay.py`, pyScript) |
| 网络访问 | NONE | READ | ✗ 越权 | install-deps.sh:19 curl downloads FFmpeg from johnvansickle.com |
| 网络访问 | NONE | READ | ✗ 越权 | record-demo.mjs:89 page.goto(s.url) — navigates to arbitrary URLs |
1 严重 4 项发现
严重 危险命令 危险 Shell 命令
rm -rf / scripts/install-deps.sh:23 中危 外部 URL 外部 URL
https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz scripts/install-deps.sh:19 中危 外部 URL 外部 URL
https://yourapp.dev/ scripts/record-demo.mjs:56 中危 外部 URL 外部 URL
https://yourapp.dev/feature1/ scripts/record-demo.mjs:67 目录结构
5 文件 · 21.3 KB · 601 行 JavaScript 1f · 303L
Markdown 2f · 242L
Shell 1f · 50L
JSON 1f · 6L
├─
▾
references
│ └─
demo-planning.md
Markdown
├─
▾
scripts
│ ├─
install-deps.sh
Shell
│ └─
record-demo.mjs
JavaScript
├─
_meta.json
JSON
└─
SKILL.md
Markdown
依赖分析 3 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
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 |
安全亮点
✓ No credential theft: skill does not access ~/.ssh, ~/.aws, .env, or iterate environment variables for secrets
✓ No data exfiltration: no HTTP POSTs of user data to external servers
✓ No obfuscation: all code is readable plain text, no base64-encoded payloads or eval(atob(...)) patterns
✓ No persistence mechanisms: no cron jobs, startup scripts, or backdoor installations
✓ Legitimate purpose: the core functionality (video demo creation) matches documented behavior