安全决策报告
tweet-monitor-pro
Tweet Monitor Pro 是一个合法的 Twitter 抓取工具,但存在文档与代码行为不一致、未声明外部依赖的问题,代码本身无恶意行为但质量存疑。
为什么得出这个结论
1/4 个维度触发 阻止
声明与实际能力
发现 1 项声明之外的能力或越权行为。
复核
隐藏执行与外联
提取到 2 个一般风险产物,需要结合上下文判断。
通过
攻击链与高危发现
没有形成明确的恶意路径。
复核
依赖与供应链卫生
没有完整依赖信息,供应链判断需要保留弹性。
风险分是怎么被拉高的
文档与代码行为不一致 +15
SKILL.md 声称使用 FxTwitter public endpoint,实际代码调用本地 Python 脚本 /root/.openclaw/workspace/skills/x-tweet-fetcher/scripts/fetch_tweet.py
缺失的外部依赖 +10
代码依赖外部 Python 脚本但该脚本不存在于包中,也无 requirements.txt 声明
最关键的证据
中危 文档欺骗
文档声称与实际实现不符
SKILL.md 声明 'Uses FxTwitter public endpoint (no authentication)',但 index.js 实际通过 execSync 调用本地 Python 脚本执行抓取,存在明显的文档-行为差异
index.js:109 更新 SKILL.md 说明实际使用外部 Python 脚本执行抓取,或重构代码直接使用 HTTP 请求
中危 供应链
未声明的外部 Python 脚本依赖
所有工具函数依赖硬编码路径 /root/.openclaw/workspace/skills/x-tweet-fetcher/scripts/fetch_tweet.py,该脚本不存在于包中且无任何声明
index.js:99 将 Python 脚本纳入包内 (如 scripts/fetch_tweet.py) 或在文档中明确说明需要单独安装依赖
低危 权限提升
使用 shell:WRITE 但未声明
代码通过 execSync 执行系统命令 (python3),这需要 shell:WRITE 权限,但 SKILL.md 和 manifest.json 均未声明此权限需求
index.js:7 在 SKILL.md 或 manifest.json capabilities 中声明 'shell' 权限需求
提示 供应链
缺少 npm 依赖声明
包中没有 package.json 或 package-lock.json,无法验证 npm 依赖版本和完整性
index.js:1 添加 package.json 声明 Node.js 依赖 (如需) 及其版本范围
声明能力 vs 实际能力
文件系统 通过
声明 NONE
→ 推断 WRITE
index.js:113-115 写入 quotas.json 命令执行 阻止
声明 NONE
→ 推断 READ
index.js:109 使用 execSync 执行 python3 但未声明 可疑产物与外联
中危 外部 URL
https://x.com/user/status/123456 README.md:49
中危 外部 URL
https://skillpay.me README.md:92
依赖与供应链
没有结构化依赖告警。
文件构成
6 个文件 · 665 行
JavaScript 1 个文件 · 340 行Markdown 2 个文件 · 281 行JSON 3 个文件 · 44 行
需关注文件 · 2
index.js 文档声称与实际实现不符 · 未声明的外部 Python 脚本依赖 · 使用 shell:WRITE 但未声明 · 缺少 npm 依赖声明
README.md https://x.com/user/status/123456 · https://skillpay.me
其他文件 · SKILL.md · manifest.json · quotas.json · _meta.json
安全亮点
代码本身无凭证收割、远程代码执行等恶意行为
配额管理系统设计合理,可防止滥用
支持通过环境变量自定义配额数据库路径
错误处理机制完善,异常情况有合理反馈