安全决策报告

tingdong-skill

文章转播客 API 客户端工具,功能正常,隐私外传已声明,缺少依赖锁定为轻微瑕疵

安装决策优先 来源: ClawHub 扫描时间: 2026/9/19
文件 7
IOC 15
越权项 0
发现 3

为什么得出这个结论

1/4 个维度触发
通过
声明与实际能力

声明资源与推断能力基本一致。

阻止
隐藏执行与外联

提取到 1 个高危 IOC 或外联信号。

通过
攻击链与高危发现

没有形成明确的恶意路径。

复核
依赖与供应链卫生

发现 1 项需要关注的依赖或供应链线索。

风险分是怎么被拉高的

数据外传至第三方服务器 +10

用户文章内容发送至 111.229.22.145,但已在隐私说明中声明

缺少依赖锁定 +5

monitor.py 使用 requests 库但无 requirements.txt,pip install 无版本锁定

HTTP 非 HTTPS +5

API 通信使用 HTTP 明文传输,存在中间人攻击风险

最关键的证据

低危 数据外泄

文章内容外传至第三方服务器

用户提交的文章链接/内容会被发送至第三方服务器 111.229.22.145:8092 进行 AI 分析和语音合成。虽然 SKILL.md:158-161 隐私说明中有声明,但用户可能未充分注意此风险。

SKILL.md:54
在触发时再次提醒用户数据将发送至外部服务器
低危 供应链

缺少依赖锁定文件

monitor.py 使用 requests 库但项目缺少 requirements.txt 或 Pipfile,pip install 无版本锁定,可能引入依赖漏洞。

scripts/monitor.py:4
添加 requirements.txt 或 pyproject.toml 锁定依赖版本
提示 敏感访问

硬编码第三方 IP 地址

111.229.22.145 为中国境内 IP,代码中多处硬编码该地址。用户无法轻易审计该服务器的安全性和数据处理政策。

SKILL.md:54
考虑支持 HTTPS 并提供服务器域名而非 IP,提高可审计性

声明能力 vs 实际能力

文件系统 通过
声明 NONE
→
推断 NONE
generate_podcast.py:1-102, monitor.py:1-86 - 无文件写入操作,仅读取环境变量
网络访问 通过
声明 WRITE
→
推断 WRITE
SKILL.md:54 声明调用外部 REST API,代码通过 urllib/requests 发送 HTTP 请求
环境变量 通过
声明 READ
→
推断 READ
generate_podcast.py:18-19 读取 TINGDONG_API_URL 和 TINGDONG_API_TOKEN
命令执行 通过
声明 NONE
→
推断 NONE
代码仅使用 urllib 和 requests,无 shell 执行

可疑产物与外联

高危 IP 地址
111.229.22.145

SKILL.md:54

中危 外部 URL
http://111.229.22.145:8092

SKILL.md:54

中危 外部 URL
https://mp.weixin.qq.com/s/xxxxx

SKILL.md:61

中危 外部 URL
http://111.229.22.145:8092/api/v1/podcast/submit

SKILL.md:66

中危 外部 URL
http://111.229.22.145:8092/api/v1/podcast/td_20260820_103528_d9ea7fd1

SKILL.md:82

中危 外部 URL
http://111.229.22.145:8092/tingdongle/audio/xxx.mp3

SKILL.md:88

中危 外部 URL
http://111.229.22.145:8092/api/v1/podcast/batch

SKILL.md:111

中危 外部 URL
https://zhuanlan.zhihu.com/p/xxxxx

SKILL.md:124

中危 外部 URL
http://111.229.22.145:8092/tingdongle/audio/

SKILL.md:163

中危 外部 URL
http://111.229.22.145:8092/api/v1

references/api_docs.md:5

中危 外部 URL
http://111.229.22.145:8092/tingdongle/audio/13178f73201e.mp3

references/api_docs.md:95

中危 外部 URL
https://mp.weixin.qq.com/s/xxxxxxxx

references/content_sources.md:9

依赖与供应链

包名版本来源漏洞备注
requests * pip 否 monitor.py 依赖 requests 库但无版本锁定,建议添加 requirements.txt

文件构成

7 个文件 · 648 行
Markdown 4 个文件 · 455 行Python 2 个文件 · 188 行JSON 1 个文件 · 5 行
需关注文件 · 4
SKILL.md Markdown · 170 行
文章内容外传至第三方服务器 · 硬编码第三方 IP 地址 · 111.229.22.145 · http://111.229.22.145:8092 · https://mp.weixin.qq.com/s/xxxxx · http://111.229.22.145:8092/api/v1/podcast/submit · http://111.229.22.145:8092/api/v1/podcast/td_20260820_103528_d9ea7fd1 · http://111.229.22.145:8092/tingdongle/audio/xxx.mp3 · http://111.229.22.145:8092/api/v1/podcast/batch · https://zhuanlan.zhihu.com/p/xxxxx · http://111.229.22.145:8092/tingdongle/audio/
references/api_docs.md Markdown · 158 行
http://111.229.22.145:8092/api/v1 · http://111.229.22.145:8092/tingdongle/audio/13178f73201e.mp3
scripts/monitor.py Python · 86 行
缺少依赖锁定文件
references/content_sources.md Markdown · 105 行
https://mp.weixin.qq.com/s/xxxxxxxx · https://mp.weixin.qq.com/s?__biz=xxx&mid=xxx · https://www.zhihu.com/question/xxx/answer/xxx · https://zhuanlan.zhihu.com/p/xxx
其他文件 · generate_podcast.py · TODO.md · _meta.json

安全亮点

纯 API 客户端,无本地恶意代码
代码逻辑清晰,无 shell 执行、凭证收割等危险操作
文档与代码行为一致,无影子功能
环境变量读取用于配置而非凭证收割
未访问敏感路径如 ~/.ssh、~/.aws、.env