扫描报告
42 /100
claw-body
Give your Claw a body — real-time digital avatar with face, voice and expressions, powered by NuwaAI. Also supports presentation mode for PPT/PDF narration.
该技能为合法的 NuwaAI 数字人avatar集成工具,核心功能正常,但存在多项文档-行为差异(shell执行、文件写入、凭证读取)未在 SKILL.md 中声明,构成安全分析师级别的越权行为。
谨慎使用
要求开发者补充 allowed-tools 声明(filesystem:READ+WRITE、shell:WRITE),明确 presentation 解析的文件路径边界,并移除硬编码的 demo API key(改由用户输入或环境变量注入)。
安全发现 6 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 中危 | 未声明的 shell 执行(subprocess) | server.mjs:310 |
| 中危 | 未声明的 OpenClaw 凭证读取 | server.mjs:12 |
| 低危 | 硬编码 demo API key | server.mjs:34 |
| 低危 | 文件上传路径遍历风险(已缓解) | server.mjs:249 |
| 低危 | SKILL.md 缺少 allowed-tools 声明 | SKILL.md:1 |
| 提示 | NuwaAI 外部服务集成 | server.mjs:226 |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 文件系统 | NONE | WRITE | ✗ 越权 | server.mjs:58 .nuwa-config.json 写入, server.mjs:318 上传文件写入 os.tmpdir() |
| 网络访问 | NONE | WRITE | ✗ 越权 | server.mjs:215 POST到 api.nuwaai.com, server.mjs:226 WebSocket wss://wsapi.nuwaai… |
| 命令执行 | NONE | WRITE | ✗ 越权 | server.mjs:310 execSync python3 parse-presentation.py, server.mjs:327 同上 |
| 环境变量 | NONE | READ | ✗ 越权 | server.mjs:10 读取 OPENCLAW_GATEWAY, OPENCLAW_TOKEN; server.mjs:13 读取 HOME 拼接路径 |
| 技能调用 | NONE | READ | ✗ 越权 | SKILL.md 提到 claw-presenter skill 配合使用,但未声明 dependency |
1 高危 3 项发现
高危 API 密钥 疑似硬编码凭证
apiKey: "sk-ody1Xk9lw_vXkRWEPnaO8OwTFB9gbCnng2EWUl5jNbzolDSlFItc9DvWqrr6RLcL" server.mjs:34 中危 外部 URL 外部 URL
https://nuwaai.com SKILL.md:25 中危 外部 URL 外部 URL
https://api.nuwaai.com/web/apiKey/auth server.mjs:215 目录结构
6 文件 · 106.0 KB · 2739 行 HTML 1f · 1680L
JavaScript 3f · 862L
Markdown 1f · 192L
JSON 1f · 5L
├─
▾
public
│ ├─
i18n.js
JavaScript
│ ├─
index.html
HTML
│ └─
pcm-processor.js
JavaScript
├─
_meta.json
JSON
├─
server.mjs
JavaScript
└─
SKILL.md
Markdown
依赖分析 1 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
node (runtime) | 18+ | system | 否 | Node.js 运行时,无第三方 npm 依赖 |
安全亮点
✓ 核心功能为合法工具:数字人 avatar 实时对话,无恶意目的
✓ API key 为 NuwaAI 官方 demo key,非窃取凭证
✓ WebSocket 通信仅用于avatar音视频,无可疑 C2 通道
✓ 路径遍历有防护(server.mjs:368 path.resolve 校验)
✓ 用户凭证(apiKey/avatarId/userId)存储在本地 .nuwa-config.json,不外传
✓ 临时文件上传后即删除(server.mjs:317 fs.unlinkSync)
✓ 无 eval、base64 解码、裸 IP 请求等高危模式