Why this conclusion was reached
1/4 dimensions flagged Pass Declared vs actual capability Declared resources and inferred behavior are broadly aligned.
Block Hidden execution and egress 1 high-risk artifacts or egress signals were extracted.
Pass Attack chain and severe findings There is no explicit malicious chain in the report.
Review Dependencies and supply chain hygiene 1 dependency or supply-chain issues need attention.
What drove the risk score up
数据外传至第三方服务器 +10
用户文章内容发送至 111.229.22.145,但已在隐私说明中声明
缺少依赖锁定 +5
monitor.py 使用 requests 库但无 requirements.txt,pip install 无版本锁定
HTTP 非 HTTPS +5
API 通信使用 HTTP 明文传输,存在中间人攻击风险
Most important evidence
Low Data Exfil
文章内容外传至第三方服务器
用户提交的文章链接/内容会被发送至第三方服务器 111.229.22.145:8092 进行 AI 分析和语音合成。虽然 SKILL.md:158-161 隐私说明中有声明,但用户可能未充分注意此风险。
SKILL.md:54 在触发时再次提醒用户数据将发送至外部服务器
Low Supply Chain
缺少依赖锁定文件
monitor.py 使用 requests 库但项目缺少 requirements.txt 或 Pipfile,pip install 无版本锁定,可能引入依赖漏洞。
scripts/monitor.py:4 添加 requirements.txt 或 pyproject.toml 锁定依赖版本
Info Sensitive Access
硬编码第三方 IP 地址
111.229.22.145 为中国境内 IP,代码中多处硬编码该地址。用户无法轻易审计该服务器的安全性和数据处理政策。
SKILL.md:54 考虑支持 HTTPS 并提供服务器域名而非 IP,提高可审计性
Declared capability vs actual capability
Filesystem Pass
Declared NONE
→ Inferred NONE
generate_podcast.py:1-102, monitor.py:1-86 - 无文件写入操作,仅读取环境变量 Network Pass
Declared WRITE
→ Inferred WRITE
SKILL.md:54 声明调用外部 REST API,代码通过 urllib/requests 发送 HTTP 请求 Environment Pass
Declared READ
→ Inferred READ
generate_podcast.py:18-19 读取 TINGDONG_API_URL 和 TINGDONG_API_TOKEN Shell Pass
Declared NONE
→ Inferred NONE
代码仅使用 urllib 和 requests,无 shell 执行
Suspicious artifacts and egress
High IP Address
111.229.22.145 SKILL.md:54
Medium External URL
http://111.229.22.145:8092 SKILL.md:54
Medium External URL
https://mp.weixin.qq.com/s/xxxxx SKILL.md:61
Medium External URL
http://111.229.22.145:8092/api/v1/podcast/submit SKILL.md:66
Medium External URL
http://111.229.22.145:8092/api/v1/podcast/td_20260820_103528_d9ea7fd1 SKILL.md:82
Medium External URL
http://111.229.22.145:8092/tingdongle/audio/xxx.mp3 SKILL.md:88
Medium External URL
http://111.229.22.145:8092/api/v1/podcast/batch SKILL.md:111
Medium External URL
https://zhuanlan.zhihu.com/p/xxxxx SKILL.md:124
Medium External URL
http://111.229.22.145:8092/tingdongle/audio/ SKILL.md:163
Medium External URL
http://111.229.22.145:8092/api/v1 references/api_docs.md:5
Medium External URL
http://111.229.22.145:8092/tingdongle/audio/13178f73201e.mp3 references/api_docs.md:95
Medium External URL
https://mp.weixin.qq.com/s/xxxxxxxx references/content_sources.md:9
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
| requests | * | pip | No | monitor.py 依赖 requests 库但无版本锁定,建议添加 requirements.txt |
File composition
7 files · 648 lines Markdown 4 files · 455 linesPython 2 files · 188 linesJSON 1 files · 5 lines
Files of concern · 4
SKILL.md Markdown · 170 lines
文章内容外传至第三方服务器 · 硬编码第三方 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 lines
http://111.229.22.145:8092/api/v1 · http://111.229.22.145:8092/tingdongle/audio/13178f73201e.mp3
scripts/monitor.py Python · 86 lines
缺少依赖锁定文件
references/content_sources.md Markdown · 105 lines
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
Other files · generate_podcast.py · TODO.md · _meta.json
7 files · 18.8 KB · 648 lines
Markdown 4f · 455LPython 2f · 188LJSON 1f · 5L
├─
▾
📁
references
│ ├─
📝
api_docs.md
Markdown
158L · 3.0 KB
│ └─
📝
content_sources.md
Markdown
105L · 2.7 KB
├─
▾
📁
scripts
│ ├─
🐍
generate_podcast.py
Python
102L · 3.4 KB
│ └─
🐍
monitor.py
Python
86L · 2.8 KB
├─
📝
SKILL.md
Markdown
170L · 5.8 KB
├─
📝
TODO.md
Markdown
22L · 1.1 KB
└─
📋
_meta.json
JSON
5L · 127 B
Security positives
纯 API 客户端,无本地恶意代码
代码逻辑清晰,无 shell 执行、凭证收割等危险操作
文档与代码行为一致,无影子功能
环境变量读取用于配置而非凭证收割
未访问敏感路径如 ~/.ssh、~/.aws、.env