Skill Trust Decision

news-briefing

gen-cover.mjs 存在文档未声明的文件系统写入行为(生成封面图到 /root/.openclaw/),属于阴影功能;其余脚本功能正常但整体权限声明不完整。

Install decision first Source: ClawHub Scanned: Jun 21, 2026
Files 7
Artifacts 9
Violations 2
Findings 3
Most direct threat evidence

Why this conclusion was reached

1/4 dimensions flagged
Block
Declared vs actual capability

2 undeclared or violating capabilities were inferred.

Review
Hidden execution and egress

9 lower-risk artifacts were extracted and still need context.

Pass
Attack chain and severe findings

There is no explicit malicious chain in the report.

Pass
Dependencies and supply chain hygiene

Dependencies are present but no obvious high-risk issue stands out.

What drove the risk score up

阴影功能-封面图生成 +20

gen-cover.mjs 写入 /root/.openclaw/workspace/skills/news-briefing/cover.png,但 SKILL.md 未声明此功能

动态代码执行 +15

gen-cover.mjs 使用 node -e 执行拼接的 JS 代码字符串,存在代码注入风险

权限声明不完整 +10

SKILL.md 未提及 filesystem:WRITE 权限及具体写入路径

Most important evidence

Medium Doc Mismatch

未声明的封面图生成功能

gen-cover.mjs 在 /root/.openclaw/workspace/skills/news-briefing/ 目录生成 PNG 封面图,但 SKILL.md 全文未提及此功能,属于阴影功能。

scripts/gen-cover.mjs:89
在 SKILL.md 功能说明中明确列出封面图生成功能,包括输出路径和触发条件
Medium Obfuscation

动态代码生成与执行

gen-cover.mjs 将 JS 代码模板保存到 /tmp/gen-cover.js,然后通过 node -e 执行。这种模式增加了代码审查难度。

scripts/gen-cover.mjs:100
重构为直接导入 @napi-rs/canvas 模块,避免动态代码拼接和 /tmp 文件写入
Low Sensitive Access

硬编码路径访问

gen-cover.mjs 硬编码访问 OpenClaw 技能工作区路径 /root/.openclaw/workspace/skills/news-briefing/,虽为合法用途但路径敏感。

scripts/gen-cover.mjs:10
考虑使用环境变量或相对路径替代硬编码路径

Declared capability vs actual capability

Network Pass
Declared WRITE
Inferred WRITE
fetch-news.mjs:56 curl POST/perplexity API; send-card.mjs:95 fetch POST/feishu API
Filesystem Block
Declared NONE
Inferred WRITE
gen-cover.mjs:89 writeFileSync cover.png; gen-cover.mjs:101 execSync node -e
Shell Block
Declared NONE
Inferred WRITE
fetch-news.mjs:33 curl via execSync; news-digest.mjs:44 node subprocess via execSync
Environment Pass
Declared READ
Inferred READ
process.env.PERPLEXITY_API_KEY/PPIO_API_KEY/FEISHU_APP_ID 等

Suspicious artifacts and egress

Medium External URL
https://openclaw.ai

SKILL.md:138

Medium External URL
https://clawhub.com/u/derekhsu529

SKILL.md:138

Medium External URL
https://api.perplexity.ai/chat/completions

scripts/fetch-news.mjs:65

Medium External URL
https://api.ppinfra.com/v3/openai/chat/completions

scripts/fetch-news.mjs:122

Medium External URL
https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal

scripts/send-card.mjs:35

Medium External URL
https://www.google.com/search?q=$

scripts/send-card.mjs:84

Medium External URL
https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id

scripts/send-card.mjs:140

Medium External URL
https://clawhub.ai/user/derekhsu529

skill-card.md:7

Medium External URL
https://clawhub.ai/derekhsu529/news-briefing

skill-card.md:28

Dependencies and supply chain

PackageVersionSourceKnown vulnNotes
@napi-rs/canvas 0.1.95 package.json No 封面图生成依赖

File composition

7 files · 912 lines
JavaScript 4 files · 723 linesMarkdown 2 files · 184 linesJSON 1 files · 5 lines
Files of concern · 5
scripts/fetch-news.mjs JavaScript · 193 lines
https://api.perplexity.ai/chat/completions · https://api.ppinfra.com/v3/openai/chat/completions
scripts/gen-cover.mjs JavaScript · 197 lines
未声明的封面图生成功能 · 动态代码生成与执行 · 硬编码路径访问
scripts/send-card.mjs JavaScript · 203 lines
https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal · https://www.google.com/search?q=$ · https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id
SKILL.md Markdown · 138 lines
https://openclaw.ai · https://clawhub.com/u/derekhsu529
skill-card.md Markdown · 46 lines
https://clawhub.ai/user/derekhsu529 · https://clawhub.ai/derekhsu529/news-briefing
Other files · news-digest.mjs · _meta.json

Security positives

代码结构清晰,主要功能符合 SKILL.md 声明
无凭证收割、远程代码下载、敏感路径遍历等恶意行为
网络请求目标明确(Perplexity API、飞书 API、PPIO API)
错误处理完善,单主题失败不影响整体流程
支持 dry-run 模式便于测试