安全决策报告

smyx-elderly-gait-instability-detection-analysis

合法的老年人步态视频分析技能,代码结构清晰但存在隐私相关风险(静默身份创建、数据外传、凭证本地存储)

安装决策优先 来源: ClawHub 扫描时间: 2026/9/22
文件 30
IOC 12
越权项 1
发现 5

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

通过
攻击链与高危发现

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

复核
依赖与供应链卫生

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

风险分是怎么被拉高的

静默身份创建与存储 +10

OpenIdUtil 自动生成 User_xxxx 身份并存储到本地 SQLite 数据库

外部数据外传 +10

视频数据和用户信息通过 HTTPS POST 到外部 API (lifeemergence.com)

凭证本地存储 +5

token/open_token 存储在 smyx-common-claw.db 中

最关键的证据

低危 敏感访问

静默身份创建机制

OpenIdUtil.resolve_current_open_id() 在用户不知情时自动创建本地身份(User_xxxxxx 格式),并存储到 SQLite 数据库。代码逻辑:优先读取 data/smyx-api-key.txt → 查询本地数据库首个默认用户 → 不存在则生成新用户并持久化。

skills/smyx_common/scripts/util.py:293
确保用户知情并同意自动身份创建行为
低危 数据外泄

视频分析数据外传

用户上传的步态视频(可能含敏感健康信息)通过 HTTPS POST 发送到外部 API (lifeemergence.com 相关域名)。SKILL.md 声明了隐私合规要求但未明确说明数据流向。

skills/smyx_common/scripts/config.yaml:4
在 SKILL.md 中明确披露所有外部数据接收方
低危 凭证窃取

认证凭证本地持久化

User 模型存储 token 和 open_token 到本地 SQLite 数据库 smyx-common-claw.db。虽然凭证用于 API 认证,但如果数据库文件被窃取可能导致账户接管。

skills/smyx_common/scripts/dao.py:67
使用系统密钥链替代明文存储,或使用临时凭证
提示 供应链

subprocess 调用已注释

AgentSkill.ai_chat() 方法中构建了 subprocess 调用 openclaw agent 命令的逻辑(cmd 数组和 subprocess.run),但均被注释掉。当前代码不会执行任意命令。

skills/smyx_common/scripts/skill.py:35
如非必要功能,建议彻底删除被注释的代码
提示 敏感访问

环境变量读取

ConstantEnum.init() 读取 OPENCLAW_SENDER_OPEN_ID、OPENCLAW_SENDER_USERNAME、FEISHU_OPEN_ID 等环境变量用于身份解析。

skills/smyx_common/scripts/config.py:150
确保环境变量来源可信,无敏感信息泄露

声明能力 vs 实际能力

文件系统 通过
声明 NONE
→
推断 READ
scripts/smyx_analysis.py:89 读取本地视频文件
网络访问 通过
声明 READ
→
推断 WRITE
SKILL.md 声明使用网络 URL 输入;实际代码发送数据到外部 API
环境变量 阻止
声明 NONE
→
推断 READ
config.py:150 读取 OPENCLAW_SENDER_OPEN_ID/OPENCLAW_SENDER_USERNAME

可疑产物与外联

中危 外部 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-elderly-gait-instability-detection-analysis

skill-card.md:41

中危 外部 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

依赖与供应链

包名版本来源漏洞备注
pydash 8.0.6 pip 否 有版本锁定
SQLAlchemy 2.0.46 pip 否 有版本锁定
PyYAML 6.0.3 pip 否 有版本锁定
requests * pip 否 SKILL.md 声明 requests>=2.28.0,但实际 requirements.txt 未锁定版本

文件构成

30 个文件 · 2714 行
Python 18 个文件 · 2363 行Markdown 4 个文件 · 316 行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 · 182 行
https://lifeemergence.com/sample.html
skill-card.md Markdown · 60 行
https://clawhub.ai/user/smyx-sunjinhui · https://clawhub.ai/smyx-sunjinhui/skills/smyx-elderly-gait-instability-detection-analysis
skills/smyx_common/scripts/skill.py Python · 85 行
subprocess 调用已注释
其他文件 · skill.py · smyx_analysis.py · smyx_elderly_gait_instability_detection_analysis.py · api_service.py · api_doc.md · api_service.py

安全亮点

代码结构清晰,模块化设计良好
依赖包有版本锁定(pydash==8.0.6, SQLAlchemy==2.0.46, PyYAML==6.0.3)
无 base64 编码执行、eval()、裸 IP 请求等高危模式
subprocess 远程执行代码已被注释,不会执行
SQLAlchemy ORM 防止 SQL 注入
文件路径验证逻辑(_validate_file 函数)
数据库路径重定向机制防止污染主工作区