安全决策报告

购物省钱宝 - 京东/淘宝/拼多多优惠查询

未声明的 ClawHub 版本检查网络请求(shadow network access),属阴影功能。

安装决策优先 来源: ClawHub 扫描时间: 5 天前
文件 5
IOC 6
越权项 1
发现 3
最直接的威胁证据

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

通过
攻击链与高危发现

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

复核
依赖与供应链卫生

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

风险分是怎么被拉高的

未声明的 shadow network access +25

skill.py 模块导入时自动调用 _check_version() 访问 clawhub.ai,且每次 API 调用前也触发,但 SKILL.md 全文未提及此行为

无版本锁定的第三方依赖 requests +10

utils.py 导入 requests 但未声明版本,存在供应链风险

环境变量读取但无外传证据 +5

读取 API_BASE_URL/timeout/PRICECOMPARE_NO_VERSION_CHECK,但未发现外传

隐蔽的版本检查逻辑 +5

版本检查静默失败不影响主功能,但会每日联网一次,属于阴影行为

最关键的证据

中危 文档欺骗

未声明的 ClawHub 版本检查(阴影功能)

skill.py 模块级导入时自动执行 _check_version(),会发起 GET 请求到 https://clawhub.ai/api/v1/skills/pricecompare 查询最新版本,且在每次 API 调用前的 _wrapped_call_api 中再次触发(每天最多一次)。SKILL.md 全文未提及此网络行为,属于典型的 shadow network access。

skill.py:37-57, 66
在 SKILL.md 中声明版本检查行为,或提供环境变量(如 PRICECOMPARE_NO_VERSION_CHECK)作为 opt-out 机制并写入文档
低危 供应链

requests 依赖无版本锁定

utils.py 导入 requests 但 requirements.txt 中无版本约束,存在依赖劫持风险

utils.py:7
在 requirements.txt 中添加 requests>=2.28.0 锁定版本
低危 文档欺骗

API 端点域名在代码中可被环境变量覆盖

config.py 允许通过 API_BASE_URL 环境变量重定向请求目标,但 SKILL.md 硬编码了 op.squirrel2.cn,不提示可配置性

config.py:9
在 SKILL.md 中说明可通过环境变量配置 API 端点,或移除该灵活性

声明能力 vs 实际能力

网络访问 阻止
声明 READ
推断 READ
skill.py:37-57 _check_version() 在模块导入时静默执行,访问 clawhub.ai 但 SKILL.md 全文未声明
文件系统 通过
声明 NONE
推断 NONE
无文件系统操作
命令执行 通过
声明 NONE
推断 NONE
无 shell 执行
环境变量 通过
声明 NONE
推断 READ
config.py:9-10 读取 API_BASE_URL/API_TIMEOUT,skill.py:38 读取 PRICECOMPARE_NO_VERSION_CHECK,但未外传

可疑产物与外联

中危 外部 URL
http://op.squirrel2.cn/api/v1/

SKILL.md:11

中危 外部 URL
https://op.squirrel2.cn

config.py:11

中危 外部 URL
https://clawhub.ai/api/v1/skills/

skill.py:35

中危 外部 URL
https://clawhub.ai/skills/

skill.py:36

中危 外部 URL
https://item.jd.com/10021724657015.html

skill.py:247

中危 外部 URL
https://e.tb.cn/h.iVW7Wnbs5Woz1ZI

skill.py:249

依赖与供应链

包名版本来源漏洞备注
requests * pip 无版本锁定

文件构成

5 个文件 · 1092 行
Python 4 个文件 · 974 行Markdown 1 个文件 · 118 行
需关注文件 · 4
utils.py Python · 317 行
requests 依赖无版本锁定
skill.py Python · 266 行
未声明的 ClawHub 版本检查(阴影功能) · https://clawhub.ai/api/v1/skills/ · https://clawhub.ai/skills/ · https://item.jd.com/10021724657015.html · https://e.tb.cn/h.iVW7Wnbs5Woz1ZI
SKILL.md Markdown · 118 行
http://op.squirrel2.cn/api/v1/
config.py Python · 88 行
API 端点域名在代码中可被环境变量覆盖 · https://op.squirrel2.cn
其他文件 · formatters.py

安全亮点

无代码执行/RCE/反向Shell行为
无凭证收割或环境变量外传
无文件写入或敏感路径访问
API 调用逻辑清晰,与文档声明的端点一致
核心功能代码简洁,无混淆
版本检查静默失败不阻塞主流程