安全决策报告

tweet-monitor-pro

Tweet Monitor Pro 存在多处文档-行为差异:未声明的 shell 执行能力、依赖外部引用脚本、声称零依赖但实际存在隐藏依赖关系。

安装决策优先 来源: ClawHub 扫描时间: 2026/4/19
文件 5
IOC 2
越权项 2
发现 4
最直接的威胁证据
01
用户安装tweet-monitor-pro技能 初始入口 · SKILL.md
02
技能调用execSync执行外部Python脚本 权限提升 · index.js
03
外部脚本被替换为恶意代码时导致RCE 最终危害 · /root/.openclaw/workspace/skills/x-tweet-fetcher/scripts/fetch_tweet.py

为什么得出这个结论

2/4 个维度触发
阻止
声明与实际能力

发现 2 项声明之外的能力或越权行为。

复核
隐藏执行与外联

提取到 2 个一般风险产物,需要结合上下文判断。

阻止
攻击链与高危发现

报告包含 3 步攻击链,另有 2 项高危或严重发现。

复核
依赖与供应链卫生

没有完整依赖信息,供应链判断需要保留弹性。

攻击链

01
用户安装tweet-monitor-pro技能

初始入口 · SKILL.md:1

02
技能调用execSync执行外部Python脚本

权限提升 · index.js:97

03
外部脚本被替换为恶意代码时导致RCE

最终危害 · /root/.openclaw/workspace/skills/x-tweet-fetcher/scripts/fetch_tweet.py:1

风险分是怎么被拉高的

未声明的shell执行 +25

SKILL.md未声明execSync使用,但代码第97-107行通过execSync执行python3命令

外部脚本依赖未声明 +20

代码引用/root/.openclaw/workspace/skills/x-tweet-fetcher/scripts/fetch_tweet.py,该脚本不在技能包内

文档-行为差异 +15

SKILL.md声称'Zero-dependency basics'但实际依赖外部Python脚本

硬编码绝对路径 +10

第98行硬编码/root/.openclaw/workspace/skills/x-tweet-fetcher/scripts/fetch_tweet.py路径

本地配额文件写入 +5

通过fs.writeFileSync写入quotas.json,未在文档中明确声明

最关键的证据

高危 文档欺骗

文档声称零依赖但实际存在外部脚本依赖

SKILL.md Features部分声称'Zero-dependency basics: Fetch single tweets without Camofox',但index.js通过execSync依赖位于/root/.openclaw/workspace/skills/x-tweet-fetcher/scripts/fetch_tweet.py的外部Python脚本。这构成阴影功能。

index.js:98
将Python脚本内容内联到技能包内,或使用Node.js原生fetch替代execSync调用
高危 权限提升

未声明的shell执行能力

代码多处使用execSync执行python3命令(fetchTweet、fetchTimeline、monitorUser函数),这是shell:WRITE级别的操作,但SKILL.md和manifest.json均未声明此权限。

index.js:97
在SKILL.md的Tools部分添加shell执行声明,或重构代码使用HTTP API调用替代subprocess
中危 供应链

外部脚本引用存在供应链风险

代码硬编码引用外部路径/root/.openclaw/workspace/skills/x-tweet-fetcher/scripts/fetch_tweet.py,该脚本不在技能包内。如果该脚本被恶意替换或修改,将导致任意代码执行。

index.js:98
避免硬编码路径,使用相对路径或技能内嵌脚本
低危 敏感访问

本地配额数据库读写

代码读写本地quotas.json文件存储用户配额信息,虽然这是商业功能所需,但未在文档中明确声明文件系统WRITE权限。

index.js:22
在文档中补充配额存储机制说明

声明能力 vs 实际能力

命令执行 阻止
声明 NONE
推断 WRITE
index.js:97-107 execSync调用
文件系统 阻止
声明 NONE
推断 WRITE
index.js:22-26 fs.writeFileSync写入quotas.json
网络访问 通过
声明 READ
推断 READ
SKILL.md声明使用FxTwitter端点

可疑产物与外联

中危 外部 URL
https://x.com/user/status/123456

README.md:54

中危 外部 URL
https://skillpay.me

README.md:97

依赖与供应链

没有结构化依赖告警。

文件构成

5 个文件 · 665 行
JavaScript 1 个文件 · 340 行Markdown 2 个文件 · 286 行JSON 2 个文件 · 39 行
需关注文件 · 2
index.js JavaScript · 340 行
文档声称零依赖但实际存在外部脚本依赖 · 未声明的shell执行能力 · 外部脚本引用存在供应链风险 · 本地配额数据库读写
README.md Markdown · 143 行
https://x.com/user/status/123456 · https://skillpay.me
其他文件 · SKILL.md · manifest.json · quotas.json

安全亮点

配额管理系统实现完整,支持多级别订阅计划
错误处理较为完善,有用户友好的错误信息
支持商业化集成(SkillPay.me)