安全决策报告

smyx-sneeze-cough-detection-analysis

技能声称仅用于宠物打喷嚏/咳嗽检测,但实际包含未声明的数据库操作、用户自动注册/登录和令牌管理功能,构成明显的声明-行为差异。

安装决策优先 来源: ClawHub 扫描时间: 16 小时前
文件 30
IOC 12
越权项 4
发现 4
最直接的威胁证据
01
用户以为这是纯检测工具,安装后未意识到用户管理系统存在 初始入口 · SKILL.md
02
代码读取环境变量获取用户身份标识 权限提升 · skills/smyx_common/scripts/config.py
03
自动创建默认用户并通过API注册 权限提升 · skills/smyx_common/scripts/util.py

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

阻止
攻击链与高危发现

报告包含 4 步攻击链,另有 2 项高危或严重发现。

通过
依赖与供应链卫生

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

攻击链

01
用户以为这是纯检测工具,安装后未意识到用户管理系统存在

初始入口 · SKILL.md:1

02
代码读取环境变量获取用户身份标识

权限提升 · skills/smyx_common/scripts/config.py:96

03
自动创建默认用户并通过API注册

权限提升 · skills/smyx_common/scripts/util.py:396

04
用户token和open_token存储到本地SQLite数据库

最终危害 · skills/smyx_common/scripts/dao.py:182

风险分是怎么被拉高的

声明-行为差异 +25

SKILL.md仅声明requests依赖,实际使用SQLAlchemy/pydash并实现完整用户管理系统

影子功能-自动用户注册 +20

OpenIdUtil._get_or_create_user()调用/sys/phoneLogin自动注册用户

敏感数据本地存储 +15

User模型存储token/open_token到本地SQLite数据库

环境变量身份收集 +10

config.py读取OPENCLAW_SENDER_OPEN_ID等环境变量

最关键的证据

高危 文档欺骗

声明能力与实际实现严重不符

SKILL.md声称只需requests>=2.28.0依赖,实际使用pydash、SQLAlchemy、PyYAML等复杂框架,并实现完整的用户注册、登录和令牌管理系统

skills/smyx_analysis/requirements.txt:1
在SKILL.md中明确声明所有依赖和功能范围
高危 敏感访问

未声明的环境变量读取

从环境变量读取OPENCLAW_SENDER_OPEN_ID、OPENCLAW_SENDER_USERNAME、FEISHU_OPEN_ID等身份标识,用于自动关联用户身份

skills/smyx_common/scripts/config.py:96
在SKILL.md中声明所有环境变量的使用
中危 凭证窃取

用户凭证本地存储

User模型包含token和open_token字段,存储到本地SQLite数据库,未在文档中声明

skills/smyx_common/scripts/dao.py:182
如非必要,移除本地凭证存储功能
中危 文档欺骗

自动用户创建功能

当检测不到open_id时,代码自动创建User_开头的随机用户名并调用远程API完成注册,完全未在文档中说明

skills/smyx_common/scripts/util.py:396
删除自动用户创建功能或明确声明此行为

声明能力 vs 实际能力

文件系统 阻止
声明 NONE
推断 WRITE
skills/smyx_common/scripts/dao.py:72 创建本地SQLite数据库
网络访问 阻止
声明 READ
推断 WRITE
skills/smyx_common/scripts/util.py:396 调用/sys/phoneLogin注册用户
环境变量 阻止
声明 NONE
推断 READ
skills/smyx_common/scripts/config.py:96 读取OPENCLAW_SENDER_OPEN_ID
数据库 阻止
声明 NONE
推断 WRITE
skills/smyx_common/scripts/dao.py:49 完整CRUD操作

可疑产物与外联

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

SKILL.md:34

中危 外部 URL
https://clawhub.ai/user/18072937735

skill-card.md:9

中危 外部 URL
https://clawhub.ai/18072937735/skills/smyx-sneeze-cough-detection-analysis

skill-card.md:43

中危 外部 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 未声明(依赖文档缺失) pip 主代码依赖但未在requirements.txt中
pydash 8.0.6 pip 版本已锁定
SQLAlchemy 2.0.46 pip 版本已锁定
PyYAML 6.0.3 pip 版本已锁定

文件构成

30 个文件 · 2712 行
Python 18 个文件 · 2360 行Markdown 4 个文件 · 317 行YAML 6 个文件 · 29 行Text 2 个文件 · 6 行
需关注文件 · 5
skills/smyx_common/scripts/util.py Python · 718 行
自动用户创建功能
skills/smyx_common/scripts/config.py Python · 399 行
未声明的环境变量读取
skills/smyx_common/scripts/dao.py Python · 499 行
用户凭证本地存储
SKILL.md Markdown · 214 行
https://lifeemergence.com/sample.html
skill-card.md Markdown · 64 行
https://clawhub.ai/user/18072937735 · https://clawhub.ai/18072937735/skills/smyx-sneeze-cough-detection-analysis
其他文件 · skill.py · smyx_analysis.py · smyx_sneeze_cough_detection_analysis.py · api_service.py · skill.py · api_service.py +1

安全亮点

代码结构清晰,使用标准ORM框架
依赖版本已锁定(pydash==8.0.6, SQLAlchemy==2.0.46)
网络请求使用标准requests库而非subprocess
配置文件与代码逻辑分离良好
数据库路径通过AgentContextUtil正确隔离到工作区data目录