安全决策报告

smyx-respiratory-rate-abnormal-detect-analysis

宠物呼吸频率监测技能存在多处文档-行为差异,涉及视频数据外传、用户身份静默注册、凭证本地存储等未声明操作,具有中等隐私风险。

安装决策优先 来源: ClawHub 扫描时间: 12 天前
文件 29
IOC 10
越权项 4
发现 7
最直接的威胁证据
高危 数据外泄
视频数据静默上传第三方

SKILL.md声明'通过摄像头分析',实际代码将用户视频文件通过HTTP POST上传到https://open.lifeemergence.com/smyx-open-api服务器

skills/smyx_analysis/scripts/skill.py:88

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

阻止
攻击链与高危发现

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

复核
依赖与供应链卫生

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

风险分是怎么被拉高的

文档-行为差异:视频外传未声明 +15

SKILL.md声明本地分析,实际代码将视频上传到lifeemergence.com服务器

文档-行为差异:用户身份静默注册 +15

OpenIdUtil在用户不知情时自动创建User_{hash}账号并注册到第三方服务

文档-行为差异:凭证本地存储 +10

未声明SQLite数据库存储用户token、open_token等敏感凭证

敏感路径访问 +5

访问工作区data目录读写配置和凭证

最关键的证据

高危 数据外泄

视频数据静默上传第三方

SKILL.md声明'通过摄像头分析',实际代码将用户视频文件通过HTTP POST上传到https://open.lifeemergence.com/smyx-open-api服务器

skills/smyx_analysis/scripts/skill.py:88
在SKILL.md中明确声明视频数据会上传至第三方服务处理
高危 文档欺骗

用户身份静默注册机制

OpenIdUtil.resolve_current_open_id()在用户不知情时自动生成User_xxxx格式的username,并通过/sys/phoneLogin接口静默注册到第三方服务lifeemergence.com

skills/smyx_common/scripts/util.py:237
在SKILL.md中明确声明自动用户创建机制或提供退出选项
高危 凭证窃取

凭证本地数据库存储

UserDao创建SQLite数据库存储用户token、open_token等敏感凭证,存储路径为工作区data目录

skills/smyx_common/scripts/dao.py:54
评估本地存储凭证的必要性,考虑加密存储或使用系统密钥链
中危 敏感访问

环境变量遍历读取

config.py从环境变量读取OPENCLAW_SENDER_OPEN_ID、OPENCLAW_SENDER_USERNAME、FEISHU_OPEN_ID等敏感标识

skills/smyx_common/scripts/config.py:165
审查环境变量读取的必要性,限制敏感变量访问
中危 文档欺骗

内部身份参数隐藏

SKILL.md明确说明'不得询问或暴露身份参数',但open_id通过argparse.SUPPRESS隐藏传递,代码中有多处## ARK_CLAW ##注释标记

scripts/smyx_respiratory_rate_abnormal_detect_analysis.py:50
透明化身份参数处理流程
低危 供应链

依赖版本部分锁定

smyx_analysis/requirements.txt中requests依赖未指定版本,可能引入恶意版本风险

skills/smyx_analysis/requirements.txt:1
锁定所有依赖版本
低危 供应链

硬编码API密钥

config.yaml中硬编码了app-id和tenant-code

skills/smyx_common/scripts/config.yaml:1
使用环境变量或密钥管理服务

声明能力 vs 实际能力

文件系统 阻止
声明 READ
推断 WRITE
scripts/smyx_analysis.py:88 写入output文件
网络访问 阻止
声明 READ
推断 WRITE
skills/smyx_common/scripts/util.py:280 上传视频文件到外部API
环境变量 阻止
声明 NONE
推断 READ
skills/smyx_common/scripts/config.py:165 读取OPENCLAW_SENDER_OPEN_ID等环境变量
数据库 阻止
声明 NONE
推断 WRITE
skills/smyx_common/scripts/dao.py:54 创建并操作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 无版本锁定,存在供应链风险
pydash 8.0.6 pip 版本已锁定
SQLAlchemy 2.0.46 pip 版本已锁定
yaml 6.0.3 pip PyYAML版本已锁定

文件构成

29 个文件 · 2646 行
Python 18 个文件 · 2363 行Markdown 3 个文件 · 248 行YAML 6 个文件 · 29 行Text 2 个文件 · 6 行
需关注文件 · 6
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 · 209 行
https://lifeemergence.com/sample.html
skills/smyx_analysis/scripts/skill.py Python · 175 行
视频数据静默上传第三方
scripts/smyx_respiratory_rate_abnormal_detect_analysis.py Python · 102 行
内部身份参数隐藏
其他文件 · smyx_analysis.py · api_service.py · skill.py · api_service.py · config.py · api_doc.md

安全亮点

代码结构清晰,模块化设计良好
使用HTTPS进行网络通信
依赖版本大部分已锁定(pydash、SQLAlchemy)
文件大小和格式有校验(10MB限制,支持mp4/avi/mov)
数据库隔离机制(workforce data目录)
debug模式可控制敏感日志输出