news-briefing
gen-cover.mjs 存在文档未声明的文件系统写入行为(生成封面图到 /root/.openclaw/),属于阴影功能;其余脚本功能正常但整体权限声明不完整。
为什么得出这个结论
1/4 个维度触发发现 2 项声明之外的能力或越权行为。
提取到 9 个一般风险产物,需要结合上下文判断。
没有形成明确的恶意路径。
依赖结构存在,但暂未看到明显高危告警。
风险分是怎么被拉高的
gen-cover.mjs 写入 /root/.openclaw/workspace/skills/news-briefing/cover.png,但 SKILL.md 未声明此功能
gen-cover.mjs 使用 node -e 执行拼接的 JS 代码字符串,存在代码注入风险
SKILL.md 未提及 filesystem:WRITE 权限及具体写入路径
最关键的证据
未声明的封面图生成功能
gen-cover.mjs 在 /root/.openclaw/workspace/skills/news-briefing/ 目录生成 PNG 封面图,但 SKILL.md 全文未提及此功能,属于阴影功能。
scripts/gen-cover.mjs:89 动态代码生成与执行
gen-cover.mjs 将 JS 代码模板保存到 /tmp/gen-cover.js,然后通过 node -e 执行。这种模式增加了代码审查难度。
scripts/gen-cover.mjs:100 硬编码路径访问
gen-cover.mjs 硬编码访问 OpenClaw 技能工作区路径 /root/.openclaw/workspace/skills/news-briefing/,虽为合法用途但路径敏感。
scripts/gen-cover.mjs:10 声明能力 vs 实际能力
fetch-news.mjs:56 curl POST/perplexity API; send-card.mjs:95 fetch POST/feishu API gen-cover.mjs:89 writeFileSync cover.png; gen-cover.mjs:101 execSync node -e fetch-news.mjs:33 curl via execSync; news-digest.mjs:44 node subprocess via execSync process.env.PERPLEXITY_API_KEY/PPIO_API_KEY/FEISHU_APP_ID 等 可疑产物与外联
https://openclaw.ai SKILL.md:138
https://clawhub.com/u/derekhsu529 SKILL.md:138
https://api.perplexity.ai/chat/completions scripts/fetch-news.mjs:65
https://api.ppinfra.com/v3/openai/chat/completions scripts/fetch-news.mjs:122
https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal scripts/send-card.mjs:35
https://www.google.com/search?q=$ scripts/send-card.mjs:84
https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id scripts/send-card.mjs:140
https://clawhub.ai/user/derekhsu529 skill-card.md:7
https://clawhub.ai/derekhsu529/news-briefing skill-card.md:28
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| @napi-rs/canvas | 0.1.95 | package.json | 否 | 封面图生成依赖 |
文件构成
scripts/fetch-news.mjs scripts/gen-cover.mjs scripts/send-card.mjs SKILL.md skill-card.md