安全决策报告

smyx-driver-flushing-sweat-detection-analysis

技能声明为本地视频分析,实际将视频上传至外部云服务(lifeemergence.com);未声明凭证存储机制和网络通信行为;内部身份自动生成且凭证明文写入本地文件,存在数据外泄风险。

安装决策优先 来源: ClawHub 扫描时间: 18 天前
文件 31
IOC 12
越权项 2
发现 6
最直接的威胁证据
01
用户上传驾驶员面部视频 初始入口 · skills/smyx_analysis/scripts/smyx_analysis.py
02
视频文件通过HTTP POST上传至外部云 权限提升 · skills/smyx_common/scripts/util.py
03
用户凭证和身份标识随请求发送至外部服务器 最终危害 · skills/smyx_common/scripts/util.py

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

阻止
攻击链与高危发现

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

通过
依赖与供应链卫生

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

攻击链

01
用户上传驾驶员面部视频

初始入口 · skills/smyx_analysis/scripts/smyx_analysis.py:85

02
视频文件通过HTTP POST上传至外部云

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

03
用户凭证和身份标识随请求发送至外部服务器

最终危害 · skills/smyx_common/scripts/util.py:316

04
凭证副本存储在本地SQLite数据库

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

风险分是怎么被拉高的

文档欺骗-视频上传外部云 +20

SKILL.md描述为'本地DMS摄像头分析',但代码将视频上传至https://lifeemergence.com处理

未声明凭证存储 +10

skill.py:75-90 将token/open_token存储到本地SQLite数据库,未在文档中声明

未声明身份生成机制 +5

OpenIdUtil自动生成User_xxx格式身份并写入data/smyx-api-key.txt

硬编码敏感配置 +5

config.yaml包含app_id和tenant_code等业务标识

依赖版本未锁定 +5

requirements.txt中requests>=2.28.0无版本上限

最关键的证据

中危 文档欺骗

视频数据上传外部云服务未声明

SKILL.md描述技能功能为'通过车载DMS摄像头实时分析',暗示本地处理。但代码实现通过requests库将视频文件POST到https://lifeemergence.com外部云服务进行AI分析。

skills/smyx_analysis/scripts/api_service.py:19
在SKILL.md中明确说明视频会上传到外部云服务lifeemergence.com,并提供数据处理政策链接
中危 凭证窃取

凭证明文存储在本地文件

OpenIdUtil.get_api_key_file_open_id()将内部身份标识写入data/smyx-api-key.txt文件,明文存储。

skills/smyx_common/scripts/util.py:268
使用环境变量替代本地文件存储敏感标识,或加密存储
中危 数据外泄

身份凭证上传外部服务器

RequestUtil在每次HTTP请求时自动携带X-Access-Token、X-Api-Key、Authorization等认证头发送至外部API,凭证与用户身份数据绑定传输。

skills/smyx_common/scripts/util.py:316
确保外部服务使用了安全的TLS传输,并审查其凭证保护政策
中危 文档欺骗

未声明内部身份生成机制

OpenIdUtil自动生成User_xxxxxx格式的内部身份标识,用户完全不知情的情况下被分配了匿名身份。

skills/smyx_common/scripts/util.py:256
在隐私政策中披露身份自动生成机制,或提供用户选择退出机制
低危 供应链

依赖包版本未锁定

requirements.txt中requests>=2.28.0没有设置上限,可能引入包含漏洞的新版本。

skills/smyx_analysis/requirements.txt:1
锁定到具体版本,如requests==2.31.0
低危 权限提升

读取环境变量中的飞书身份

ConstantEnum.init()从环境变量读取FEISHU_OPEN_ID,可能获取其他系统身份信息。

skills/smyx_common/scripts/config.py:66
仅在明确需要飞书集成时才读取此变量

声明能力 vs 实际能力

文件系统 阻止
声明 READ
→
推断 WRITE
skills/smyx_analysis/scripts/smyx_analysis.py:103 写结果到--output指定路径
数据库 通过
声明 NONE
→
推断 WRITE
skills/smyx_common/scripts/dao.py:68 创建并写入SQLite数据库smyx-common-claw.db
网络访问 阻止
声明 READ
→
推断 WRITE
skills/smyx_analysis/scripts/api_service.py:19 调用http_post上传视频文件到外部API
环境变量 通过
声明 NONE
→
推断 READ
skills/smyx_common/scripts/config.py:63-67 读取OPENCLAW_SENDER_OPEN_ID/FEISHU_OPEN_ID

可疑产物与外联

中危 外部 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 否 已锁定版本
yaml ==6.0.3 pip 否 已锁定版本

文件构成

31 个文件 · 2724 行
Python 18 个文件 · 2363 行Markdown 4 个文件 · 321 行YAML 6 个文件 · 29 行Text 2 个文件 · 6 行JSON 1 个文件 · 5 行
需关注文件 · 5
skills/smyx_common/scripts/util.py Python · 718 行
凭证明文存储在本地文件 · 身份凭证上传外部服务器 · 未声明内部身份生成机制
skills/smyx_common/scripts/config.py Python · 399 行
读取环境变量中的飞书身份
SKILL.md Markdown · 178 行
https://lifeemergence.com/sample.html
skill-card.md Markdown · 63 行
https://clawhub.ai/user/smyx-sunjinhui · https://clawhub.ai/smyx-sunjinhui/skills/smyx-driver-flushing-sweat-detection-analysis
skills/smyx_analysis/scripts/api_service.py Python · 40 行
视频数据上传外部云服务未声明
其他文件 · dao.py · skill.py · smyx_analysis.py · smyx_driver_flushing_sweat_detection_analysis.py · api_doc.md · api_service.py +1

安全亮点

代码结构清晰,使用了模块化设计(smyx_common共享基础模块)
文件上传有格式校验(mp4/avi/mov)和大小限制(10MB)
HTTP请求有超时控制(120秒)
SQLite数据库使用工作区共享data目录而非技能私有目录
有基本的错误处理和异常捕获
不包含明显的恶意代码(如反向shell、base64解码执行等)