安全决策报告

elderly-fall-detection-analysis

发现阴影功能风险:subprocess远程执行代码存在但被注释,存在文档-行为不一致;凭证管理涉及内部标识读写但未外泄;整体功能正常但代码结构存在潜在恶意利用空间。

安装决策优先 来源: ClawHub 扫描时间: 24 天前
文件 29
IOC 10
越权项 3
发现 4
最直接的威胁证据
01
用户安装elderly-fall-detection-analysis技能 初始入口 · SKILL.md
02
攻击者利用注释的subprocess代码框架激活远程命令执行 权限提升 · skills/smyx_common/scripts/skill.py
03
通过openclaw agent执行任意系统命令完成权限提升 最终危害 · skills/smyx_common/scripts/skill.py

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

阻止
攻击链与高危发现

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

复核
依赖与供应链卫生

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

攻击链

01
用户安装elderly-fall-detection-analysis技能

初始入口 · SKILL.md:1

02
攻击者利用注释的subprocess代码框架激活远程命令执行

权限提升 · skills/smyx_common/scripts/skill.py:40

03
通过openclaw agent执行任意系统命令完成权限提升

最终危害 · skills/smyx_common/scripts/skill.py:45

风险分是怎么被拉高的

阴影功能-注释的远程执行代码 +25

skills/smyx_common/scripts/skill.py:40-60存在注释掉的subprocess.run(cmd)调用框架,可通过取消注释激活远程命令执行

内部身份标识管理 +10

OpenIdUtil自动生成User_xxxxxx标识并持久化到本地SQLite,存在内部标识泄露风险但未主动外传

外部API端点依赖 +10

依赖lifeemergence.com系列外部服务,API地址硬编码在yaml配置中,无法验证服务端可信性

最关键的证据

高危 文档欺骗

注释代码中存在未声明的远程执行能力

skills/smyx_common/scripts/skill.py的AgentSkill.ai_chat方法包含完整的subprocess.run(cmd)调用框架,当前被注释但可随时激活,SKILL.md未声明此shell执行能力

skills/smyx_common/scripts/skill.py:40
删除注释中的subprocess调用代码,或在SKILL.md中明确声明允许调用openclaw agent命令
中危 凭证窃取

内部用户标识自动生成与持久化

OpenIdUtil自动生成User_xxxxxx格式的内部标识并存储到本地SQLite数据库,该标识作为API认证凭证使用,虽未外传但存在内部标识泄露风险

skills/smyx_common/scripts/util.py:248
明确内部标识的安全边界,考虑加密存储或限制访问权限
中危 供应链

依赖包版本未锁定

requirements.txt使用pydash==8.0.6、SQLAlchemy==2.0.46等固定版本,但requests依赖在顶层SKILL.md声明为requests>=2.28.0,存在供应链风险

SKILL.md:61
统一锁定所有依赖版本,使用pip freeze生成完整依赖清单
低危 权限提升

环境变量读取未声明

config.py读取OPENCLAW_SENDER_OPEN_ID、OPENCLAW_SENDER_USERNAME、FEISHU_OPEN_ID等环境变量,影响API认证行为但SKILL.md未声明

skills/smyx_common/scripts/config.py:65
在文档中声明依赖的环境变量及其用途

声明能力 vs 实际能力

文件系统 通过
声明 READ
→
推断 READ
scripts/elderly_fall_detection_analysis.py:45 读取本地图片/视频文件
网络访问 通过
声明 READ
→
推断 READ
skills/smyx_common/scripts/util.py:310 通过requests调用外部API
命令执行 阻止
声明 NONE
→
推断 WRITE
skills/smyx_common/scripts/skill.py:40 注释的subprocess.run(cmd)框架可激活shell:WRITE
数据库 阻止
声明 NONE
→
推断 WRITE
skills/smyx_common/scripts/dao.py:61 创建SQLite数据库smyx-common-claw.db
环境变量 阻止
声明 NONE
→
推断 READ
skills/smyx_common/scripts/config.py:65-71 读取OPENCLAW_SENDER_OPEN_ID等环境变量

可疑产物与外联

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

SKILL.md:33

中危 外部 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 否 固定版本

文件构成

29 个文件 · 2606 行
Python 18 个文件 · 2357 行Markdown 3 个文件 · 214 行YAML 6 个文件 · 29 行Text 2 个文件 · 6 行
需关注文件 · 4
skills/smyx_common/scripts/util.py Python · 718 行
内部用户标识自动生成与持久化
skills/smyx_common/scripts/config.py Python · 399 行
环境变量读取未声明
SKILL.md Markdown · 174 行
依赖包版本未锁定 · https://lifeemergence.com/sample.html
skills/smyx_common/scripts/skill.py Python · 85 行
注释代码中存在未声明的远程执行能力
其他文件 · dao.py · skill.py · smyx_analysis.py · elderly_fall_detection_analysis.py · api_service.py · api_service.py +2

安全亮点

代码结构清晰,主要功能为图像分析,无明显恶意代码模式
数据库操作使用工作区data目录隔离,符合沙箱规范
API凭证存储在本地文件而非硬编码,安全性较好
未发现base64编码执行、裸IP请求、eval()动态代码执行等高危模式
外部API端点为知名域名(lifeemergence.com),非可疑IP或C2服务器