安全决策报告

human-emotion-recognition-analysis

技能主体功能正常,但存在文档-行为差异:数据库存储和内部身份管理未在SKILL.md中声明,属于阴影功能。

安装决策优先 来源: ClawHub 扫描时间: 20 天前
文件 30
IOC 12
越权项 2
发现 4
最直接的威胁证据

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

通过
攻击链与高危发现

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

通过
依赖与供应链卫生

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

风险分是怎么被拉高的

文档-行为差异 +15

SKILL.md未声明database:WRITE权限,但代码使用SQLite存储用户token和身份

内部身份管理阴影功能 +10

OpenIdUtil自动创建用户身份、读取data/smyx-api-key.txt在文档中无说明

外部API通信 +5

连接到lifeemergence.com发送媒体文件,符合声明但需用户确认数据处理

依赖版本锁定 +-5

所有依赖均有版本锁定,降低供应链风险

最关键的证据

中危 文档欺骗

数据库操作未在SKILL.md中声明

代码使用SQLite数据库(smyx-common-claw.db)存储用户身份、token等敏感信息,但SKILL.md的资源索引和前置准备中均未声明database:WRITE权限。skill-card.md提到了'tokens in a workspace SQLite database',但SKILL.md缺少此说明。

skills/smyx_common/scripts/dao.py:61
在SKILL.md资源索引中添加数据库资源声明,说明存储用户token和身份的用途
中危 文档欺骗

内部身份管理机制未文档化

OpenIdUtil类实现了自动创建用户身份、读取data/smyx-api-key.txt、自动生成User_前缀用户名等内部身份管理逻辑,但SKILL.md中仅用'系统自动处理'一笔带过,未详细说明这些操作

skills/smyx_common/scripts/util.py:230
补充说明内部身份机制的存储位置和管理方式
低危 敏感访问

环境变量读取

代码读取OPENCLAW_SENDER_OPEN_ID、OPENCLAW_SENDER_USERNAME、FEISHU_OPEN_ID等环境变量获取身份信息

skills/smyx_common/scripts/config.py:89
确认这些环境变量来源是否符合预期,属于合法框架行为
低危 供应链

第三方依赖有版本锁定

pydash==8.0.6, SQLAlchemy==2.0.46, yaml==6.0.3, requests>=2.28.0 均指定版本,供应链风险低

skills/smyx_analysis/requirements.txt:1
当前依赖管理安全

声明能力 vs 实际能力

文件系统 通过
声明 READ
推断 READ
SKILL.md:资源索引 scripts/human_emotion_recognition_analysis.py:validate_file()
网络访问 通过
声明 READ
推断 READ
SKILL.md:前置准备 requests>=2.28.0
数据库 阻止
声明 NONE
推断 WRITE
skills/smyx_common/scripts/dao.py:61-100 创建SQLite数据库 smyx-common-claw.db
环境变量 阻止
声明 NONE
推断 READ
skills/smyx_common/scripts/config.py:89-93 读取OPENCLAW_SENDER_OPEN_ID等环境变量
命令执行 通过
声明 NONE
推断 NONE
无shell执行

可疑产物与外联

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

SKILL.md:34

中危 外部 URL
https://clawhub.ai/user/18072937735

skill-card.md:9

中危 外部 URL
https://clawhub.ai/18072937735/skills/smyx-human-emotion-recognition-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

依赖与供应链

包名版本来源漏洞备注
pydash 8.0.6 pip 版本锁定
SQLAlchemy 2.0.46 pip 版本锁定
yaml 6.0.3 pip 版本锁定 PyYAML
requests >=2.28.0 pip 版本有下界

文件构成

30 个文件 · 2812 行
Python 18 个文件 · 2497 行Markdown 4 个文件 · 280 行YAML 6 个文件 · 29 行Text 2 个文件 · 6 行
需关注文件 · 5
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中声明
SKILL.md Markdown · 176 行
https://lifeemergence.com/sample.html
skill-card.md Markdown · 64 行
https://clawhub.ai/user/18072937735 · https://clawhub.ai/18072937735/skills/smyx-human-emotion-recognition-analysis
其他文件 · human_emotion_recognition_analysis.py · skill.py · smyx_analysis.py · api_service.py · skill.py · api_service.py +1

安全亮点

依赖版本全部锁定,供应链风险低
无base64编码、eval()等代码混淆行为
无远程代码执行、reverse shell等RCE指标
无凭证收割后外传的恶意行为
API端点为明确的域名(https://lifeemergence.com),非裸IP
文件操作仅限于用户提供的媒体文件,符合声明
整体代码结构清晰,使用标准框架调用远程API