安全决策报告

smyx-driver-flushing-sweat-detection-analysis

技能文档声明为驾驶员健康监测工具,但代码包含大量未声明的影子功能:本地SQLite数据库存储用户凭证、自动创建缺省用户、环境变量读取、Agent工作区感知、以及已注释的远程命令执行代码。存在文档-行为严重不符。

安装决策优先 来源: ClawHub 扫描时间: 16 天前
文件 30
IOC 12
越权项 2
发现 7
最直接的威胁证据
高危 文档欺骗
影子功能-本地SQLite数据库存储

SKILL.md未声明该技能会创建和管理本地SQLite数据库(smyx-common-claw.db),存储用户凭证信息(User模型包含token、open_token字段)。数据库路径强制重定向到Agent工作区共享data目录。

skills/smyx_common/scripts/dao.py:100

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

阻止
攻击链与高危发现

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

复核
依赖与供应链卫生

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

风险分是怎么被拉高的

文档-行为严重不符(影子功能) +25

SKILL.md未声明本地数据库、用户创建、Agent工作区感知功能

本地存储敏感凭证 +15

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

环境变量读取未声明 +8

读取OPENCLAW_SENDER_OPEN_ID等环境变量

注释的危险代码 +8

skills/smyx_common/scripts/skill.py中注释的subprocess.run代码

供应链风险 +4

requests>=2.28.0无版本锁定

外部API数据传输 +3

token数据POST到lifeemergence.com域名

最关键的证据

高危 文档欺骗

影子功能-本地SQLite数据库存储

SKILL.md未声明该技能会创建和管理本地SQLite数据库(smyx-common-claw.db),存储用户凭证信息(User模型包含token、open_token字段)。数据库路径强制重定向到Agent工作区共享data目录。

skills/smyx_common/scripts/dao.py:100
补充文档声明本地数据库用途;若非必要,考虑使用内存模式或删除持久化存储
高危 凭证窃取

用户凭证存储风险

User模型包含token和open_token字段,会通过API获取后存储到本地SQLite,并在后续请求中作为认证头发送。数据库文件位于工作区共享目录,可能被其他技能访问。

skills/smyx_common/scripts/dao.py:310
评估凭证存储必要性;如需存储应加密;确保数据库路径隔离
中危 敏感访问

环境变量读取未声明

代码读取多个环境变量用于身份识别和Agent工作区检测:OPENCLAW_SENDER_OPEN_ID、OPENCLAW_SENDER_USERNAME、FEISHU_OPEN_ID、OPENCLAW_WORKSPACE。SKILL.md未提及环境变量访问。

skills/smyx_common/scripts/config.py:88
补充环境变量访问声明,或移除非必要的环境变量读取
中危 代码混淆

已注释的危险代码-subprocess

skills/smyx_common/scripts/skill.py中ai_chat方法包含完整的subprocess.run调用代码(已注释),可执行openclaw agent命令。这表明原设计支持远程命令执行,当前虽被禁用但代码仍存在。

skills/smyx_common/scripts/skill.py:36
删除已注释的危险代码,或明确声明该功能的存在和用途
中危 文档欺骗

自动用户创建功能未声明

OpenIdUtil类实现自动创建缺省用户逻辑:当无open_id时生成User_{6位随机哈希}并写入本地数据库。SKILL.md未声明此行为,且用户对此用户创建过程不知情。

skills/smyx_common/scripts/util.py:280
补充用户创建机制文档;确保符合隐私合规要求
低危 供应链

依赖包版本未锁定

SKILL.md声明requests>=2.28.0,但未锁定最大版本号,存在依赖供应链风险。

SKILL.md:53
锁定依赖版本:requests>=2.28.0,<2.32.0
低危 数据外泄

外部API数据传输

代码向lifeemergence.com域名发送包含token的HTTP请求。需确认数据传输范围和目的地的合规性。

skills/smyx_common/scripts/util.py:410
明确数据外传范围;在隐私政策中声明第三方API调用

声明能力 vs 实际能力

文件系统 阻止
声明 READ
推断 WRITE
scripts/smyx_driver_flushing_sweat_detection_analysis.py:77-80 代码写入output文件; dao.py:140 os.makedirs创建目录
网络访问 阻止
声明 READ
推断 WRITE
util.py:RequestUtil.http_post 发送POST请求携带token到外部API
数据库 通过
声明 NONE
推断 WRITE
dao.py:100-160 创建SQLite数据库smyx-common-claw.db,存储用户凭证
环境变量 通过
声明 NONE
推断 READ
config.py:88-93 读取OPENCLAW_SENDER_OPEN_ID等环境变量
命令执行 通过
声明 NONE
推断 ADMIN
skills/smyx_common/scripts/skill.py:36-53 注释的subprocess.run代码可启用远程命令执行

可疑产物与外联

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

SKILL.md:34

中危 外部 URL
https://clawhub.ai/user/smyx-sunjinhui

skill-card.md:9

中危 外部 URL
https://clawhub.ai/smyx-sunjinhui/skills/smyx-driver-flushing-sweat-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 >=2.28.0 pip 无版本锁定上界
pydash 8.0.6 pip
SQLAlchemy 2.0.46 pip
PyYAML 6.0.3 pip

文件构成

30 个文件 · 2721 行
Python 18 个文件 · 2363 行Markdown 4 个文件 · 323 行YAML 6 个文件 · 29 行Text 2 个文件 · 6 行
需关注文件 · 6
skills/smyx_common/scripts/util.py Python · 718 行
自动用户创建功能未声明 · 外部API数据传输
skills/smyx_common/scripts/config.py Python · 399 行
环境变量读取未声明
skills/smyx_common/scripts/dao.py Python · 499 行
影子功能-本地SQLite数据库存储 · 用户凭证存储风险
SKILL.md Markdown · 178 行
依赖包版本未锁定 · https://lifeemergence.com/sample.html
skill-card.md Markdown · 65 行
https://clawhub.ai/user/smyx-sunjinhui · https://clawhub.ai/smyx-sunjinhui/skills/smyx-driver-flushing-sweat-detection-analysis
skills/smyx_common/scripts/skill.py Python · 85 行
已注释的危险代码-subprocess
其他文件 · skill.py · smyx_analysis.py · smyx_driver_flushing_sweat_detection_analysis.py · api_doc.md · api_service.py · api_service.py

安全亮点

代码结构清晰,采用模块化设计(common/analysis分离)
有完整的错误处理和异常捕获机制
数据库操作使用SQLAlchemy ORM,防止SQL注入
配置文件支持多环境(dev/test/prod)切换
API响应有success字段校验