安全决策报告

staff-absence-detection-analysis

技能声称仅用于人员离岗监测,但代码包含大量未声明的用户身份管理、凭证存储和自动注册功能,存在文档欺骗和阴影功能问题。

安装决策优先 来源: ClawHub 扫描时间: 2026/8/10
文件 28
IOC 10
越权项 4
发现 6
最直接的威胁证据
高危 文档欺骗
未声明的本地用户自动创建机制

SKILL.md声称'用户身份参数由系统内部自动处理,不得向用户展示',但代码在util.py:315-360实现了完整的自动用户创建逻辑,包括生成User_xxxxxx格式用户名、写入本地SQLite数据库、持久化存储。

skills/smyx_common/scripts/util.py:315

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

阻止
攻击链与高危发现

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

通过
依赖与供应链卫生

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

风险分是怎么被拉高的

阴影功能-用户身份管理 +20

SKILL.md未声明自动创建本地用户(User_xxxxxx)的机制

阴影功能-凭证持久化 +15

在data/目录创建SQLite数据库存储API token和open_token

文档欺骗-声明不符 +15

文档强调'系统自动处理身份不暴露',但代码实际创建持久化本地用户记录

无版本锁定依赖 +5

requirements.txt使用精确版本,但smyx_common等依赖未声明来源和版本

API认证流程不透明 +5

自动手机号登录(/sys/phoneLogin)流程未在文档说明

最关键的证据

高危 文档欺骗

未声明的本地用户自动创建机制

SKILL.md声称'用户身份参数由系统内部自动处理,不得向用户展示',但代码在util.py:315-360实现了完整的自动用户创建逻辑,包括生成User_xxxxxx格式用户名、写入本地SQLite数据库、持久化存储。

skills/smyx_common/scripts/util.py:315
在SKILL.md中明确说明本地用户管理机制,包括是否创建本地用户、存储哪些数据、数据保留期限
高危 凭证窃取

未声明的凭证本地持久化存储

代码在data/目录下创建SQLite数据库(smyx-common-claw.db)存储API token、open_token等敏感凭证,文档未提及此行为。

skills/smyx_common/scripts/dao.py:40
明确说明是否存储凭证、存储位置、安全保护措施
中危 文档欺骗

外部API自动注册流程未披露

RequestUtil.http_request中存在自动用户注册逻辑,当本地无凭证时调用/sys/phoneLogin注册新用户,用户未被告知。

skills/smyx_common/scripts/util.py:265
说明是否会在用户不知情情况下注册账户
中危 敏感访问

环境变量读取行为未声明

config.py从环境变量读取OPENCLAW_SENDER_OPEN_ID、OPENCLAW_SENDER_USERNAME、FEISHU_OPEN_ID等身份信息。

skills/smyx_common/scripts/config.py:127
在文档中说明支持的环境变量及其用途
中危 文档欺骗

共享库(smyx_common)行为未披露

技能依赖skills/smyx_common共享库,包含完整的API服务、数据库、工具函数,但SKILL.md资源索引中未提及该依赖库的存在和作用。

skills/smyx_common/scripts/util.py:1
说明与smyx_common共享库的关系,列出依赖的技能
低危 供应链

共享库依赖无版本锁定

smyx_analysis和smyx_common技能互为依赖,但requirements.txt中未列出对smyx_common的依赖关系。

skills/smyx_analysis/requirements.txt:1
明确声明对smyx_common的依赖关系和版本要求

声明能力 vs 实际能力

文件系统 阻止
声明 READ
推断 WRITE
dao.py:98-145 创建本地SQLite数据库
网络访问 阻止
声明 READ
推断 WRITE
util.py:265-285 自动注册用户到外部API
环境变量 阻止
声明 NONE
推断 READ
config.py:127-131 读取OPENCLAW_SENDER_OPEN_ID等环境变量
数据库 阻止
声明 NONE
推断 WRITE
dao.py:40-50 持久化用户凭证到本地SQLite

可疑产物与外联

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

SKILL.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

依赖与供应链

包名版本来源漏洞备注
requests >=2.28.0 pip 声明于SKILL.md前置准备
pydash 8.0.6 pip 精确版本锁定
SQLAlchemy 2.0.46 pip 精确版本锁定
smyx_common 未知 内部技能 跨技能依赖,未在requirements.txt中声明

文件构成

28 个文件 · 2826 行
Python 17 个文件 · 2493 行Markdown 3 个文件 · 298 行YAML 6 个文件 · 29 行Text 2 个文件 · 6 行
需关注文件 · 4
skills/smyx_common/scripts/util.py Python · 718 行
未声明的本地用户自动创建机制 · 外部API自动注册流程未披露 · 共享库(smyx_common)行为未披露
skills/smyx_common/scripts/config.py Python · 399 行
环境变量读取行为未声明
skills/smyx_common/scripts/dao.py Python · 499 行
未声明的凭证本地持久化存储
SKILL.md Markdown · 178 行
https://lifeemergence.com/sample.html
其他文件 · staff_absence_detection_analysis.py · skill.py · smyx_analysis.py · api_service.py · skill.py · api_doc.md +2

安全亮点

代码结构清晰,使用标准库和知名依赖(SQLAlchemy)
文件访问限于用户上传的媒体文件和data目录
未发现base64编码、远程shell执行等高危恶意模式
数据库路径重定向机制可防止多技能间数据库污染