Skill Trust Decision

tingdong-skill

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

Install decision first Source: ClawHub Scanned: 23 days ago
Files 7
Artifacts 15
Violations 0
Findings 3

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

PackageVersionSourceKnown vulnNotes
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

Security positives

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