安全决策报告

smyx-pet-oral-snapshot-gum-redness-analysis

技能核心功能正常(宠物口腔图像分析),但存在未声明的阴影功能:隐藏命令行参数(--open-id、--api-key)、用户凭证(token/open_id)传输至外部API(lifeemergence.com)、本地SQLite数据库存储用户敏感信息,属于文档-行为不符。

安装决策优先 来源: ClawHub 扫描时间: 2026/9/23
文件 30
IOC 10
越权项 2
发现 5
最直接的威胁证据

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

通过
攻击链与高危发现

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

通过
依赖与供应链卫生

依赖结构存在,但暂未看到明显高危告警。

风险分是怎么被拉高的

阴影功能-隐藏参数 +10

--open-id和--api-key使用argparse.SUPPRESS隐藏,SKILL.md未提及

数据外传-用户凭证 +15

token/open_id等凭证通过RequestUtil.http_request发送至lifeemergence.com,SKILL.md未声明

本地存储-敏感数据 +10

dao.py创建SQLite数据库smyx-common-claw.db存储username/token/open_token,SKILL.md未声明

阴影功能-内部身份处理 +5

OpenIdUtil从smyx-api-key.txt读取内部身份并自动创建默认用户,文档描述不完整

最关键的证据

中危 文档欺骗

隐藏参数未在SKILL.md声明

smyx_pet_oral_snapshot_gum_redness_analysis.py 使用 argparse.SUPPRESS 隐藏 --open-id 和 --api-key 参数,SKILL.md完全未提及这些参数的存在和用途。

scripts/smyx_pet_oral_snapshot_gum_redness_analysis.py:33
在SKILL.md脚本参数说明表格中添加open-id和api-key参数说明,或说明这些是内部保留参数
中危 数据外泄

用户凭证传输至外部API未声明

RequestUtil.http_request()方法会将token/open_id/X-Access-Token等敏感凭证通过HTTP Header发送到lifeemergence.com域名。SKILL.md只声明'调用服务端API进行口腔分析',未说明会传输认证凭证。

skills/smyx_common/scripts/util.py:340
在SKILL.md明确声明'本技能需要与服务端API进行身份认证,会传输用户标识信息'
中危 敏感访问

本地数据库存储用户敏感信息未声明

dao.py创建SQLite数据库smyx-common-claw.db,存储User表包含username/token/open_token等敏感字段。SKILL.md资源索引和注意事项中均未提及会有本地数据存储。

skills/smyx_common/scripts/dao.py:185
在SKILL.md声明'技能会创建本地数据库存储用户会话信息',或考虑使用临时内存存储避免持久化
低危 文档欺骗

内部身份自动创建机制描述不完整

OpenIdUtil.resolve_current_open_id()会自动从smyx-api-key.txt读取、创建User_开头的默认用户,SKILL.md只说'系统自动完成身份关联',未说明会去读文件或创建本地用户。

skills/smyx_common/scripts/util.py:420
在SKILL.md身份处理章节补充'脚本会自动读取配置文件或创建默认用户'
低危 供应链

依赖版本已锁定(正面)

skills/smyx_analysis/requirements.txt 和 skills/smyx_common/requirements.txt 均使用精确版本号(pydash==8.0.6, SQLAlchemy==2.0.46等),无版本通配符。

skills/smyx_analysis/requirements.txt:1
保持当前做法,无需修改

声明能力 vs 实际能力

文件系统 通过
声明 READ
→
推断 WRITE
dao.py:47-90 文件写入smyx-common-claw.db
网络访问 阻止
声明 READ
→
推断 READ+WRITE
util.py:320-380 请求发送token/open_id到API服务器
命令执行 通过
声明 NONE
→
推断 NONE
无subprocess调用
环境变量 通过
声明 NONE
→
推断 READ
config.py:58-62 读取OPENCLAW_SENDER_OPEN_ID等环境变量
数据库 阻止
声明 NONE
→
推断 WRITE
dao.py:103 创建并操作SQLite数据库

可疑产物与外联

中危 外部 URL
https://lifeemergence.com/sample.html

SKILL.md:38

中危 外部 URL
http://192.168.1.234:9601/smyx-open-api

skills/smyx_common/scripts/config-dev.yaml:2

中危 外部 URL
http://192.168.1.234:4100

skills/smyx_common/scripts/config-dev.yaml:3

中危 外部 URL
http://192.168.1.234:7070/jeecg-boot-xzgz

skills/smyx_common/scripts/config-dev.yaml:4

中危 外部 URL
https://livemonitortest.lifeemergence.com/smyx-open-api

skills/smyx_common/scripts/config-test.yaml:2

中危 外部 URL
http://livemonitortest.lifeemergence.com

skills/smyx_common/scripts/config-test.yaml:3

中危 外部 URL
https://healthtest.lifeemergence.com/jeecg-boot-xzgz

skills/smyx_common/scripts/config-test.yaml:4

中危 外部 URL
https://lifeemergence.com/jeecg-boot-xzgz

skills/smyx_common/scripts/config.yaml:4

中危 外部 URL
https://open.lifeemergence.com/smyx-open-api

skills/smyx_common/scripts/config.yaml:5

中危 外部 URL
http://livemonitor.lifeemergence.com

skills/smyx_common/scripts/config.yaml:6

依赖与供应链

包名版本来源漏洞备注
requests >=2.28.0 pip 否 SKILL.md声明的依赖,无版本上限锁定
pydash 8.0.6 requirements.txt 否 精确版本锁定
SQLAlchemy 2.0.46 requirements.txt 否 精确版本锁定
PyYAML 6.0.3 requirements.txt 否 精确版本锁定

文件构成

30 个文件 · 2644 行
Python 18 个文件 · 2363 行Markdown 3 个文件 · 236 行YAML 6 个文件 · 29 行JSON 1 个文件 · 10 行Text 2 个文件 · 6 行
需关注文件 · 4
skills/smyx_common/scripts/util.py Python · 718 行
用户凭证传输至外部API未声明 · 内部身份自动创建机制描述不完整
skills/smyx_common/scripts/dao.py Python · 499 行
本地数据库存储用户敏感信息未声明
SKILL.md Markdown · 192 行
https://lifeemergence.com/sample.html
scripts/smyx_pet_oral_snapshot_gum_redness_analysis.py Python · 102 行
隐藏参数未在SKILL.md声明
其他文件 · config.py · skill.py · smyx_analysis.py · api_service.py · skill.py · api_service.py +2

安全亮点

核心功能代码清晰,宠物口腔图像分析逻辑正常
依赖包版本已锁定(pydash==8.0.6, SQLAlchemy==2.0.46),无供应链风险
无恶意代码混淆(无base64解码执行、无动态eval)
无反向shell、远程代码执行等高危行为
网络请求仅发送到明确的API域名(lifeemergence.com),无裸IP或可疑URL
SKILL.md文档结构完整,描述了核心功能和触发条件