安全决策报告

psychology-analysis

技能存在多个阴影功能:未声明的静默手机登录、自动创建本地用户、凭证明文存储至SQLite数据库,且filesystem和network的WRITE权限未在文档中声明

安装决策优先 来源: ClawHub 扫描时间: 2 天前
文件 29
IOC 10
越权项 3
发现 5
最直接的威胁证据
高危 文档欺骗
静默phoneLogin调用

RequestUtil.http_request()在缺少TOKEN时自动调用内部接口/sys/phoneLogin进行静默注册/登录,完全未在SKILL.md中声明

skills/smyx_common/scripts/util.py:180

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

阻止
攻击链与高危发现

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

通过
依赖与供应链卫生

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

风险分是怎么被拉高的

静默phoneLogin调用 +20

RequestUtil._get_or_create_user()自动调用/sys/phoneLogin,SKILL.md未声明

本地SQLite凭证存储 +15

UserDao将token/open_token明文存储在smyx-common-claw.db

自动创建默认用户 +10

OpenIdUtil.get_or_create_default_open_id()生成User_xxx并写入数据库

filesystem:WRITE越权 +10

写入数据库和输出文件,但SKILL.md声明为NONE

network:WRITE越权 +10

POST上传视频文件,但SKILL.md仅声明READ

最关键的证据

高危 文档欺骗

静默phoneLogin调用

RequestUtil.http_request()在缺少TOKEN时自动调用内部接口/sys/phoneLogin进行静默注册/登录,完全未在SKILL.md中声明

skills/smyx_common/scripts/util.py:180
在SKILL.md前置准备章节声明此自动身份初始化行为
高危 凭证窃取

本地SQLite数据库明文存储凭证

UserDao将用户token、open_token以明文形式存储在workspace/data/smyx-common-claw.db中,包含敏感认证信息

skills/smyx_common/scripts/dao.py:47
评估是否必须本地存储凭证,或使用系统密钥链
中危 文档欺骗

自动创建默认用户

OpenIdUtil.get_or_create_default_open_id()在用户未提供open_id时自动生成User_xxxxxx并写入本地数据库,SKILL.md未声明

skills/smyx_common/scripts/util.py:93
在文档中说明默认用户生成逻辑
中危 敏感访问

读取smyx-api-key.txt内部身份文件

OpenIdUtil从data/smyx-api-key.txt读取内部身份值,这是内部实现细节不应被技能直接访问

skills/smyx_common/scripts/util.py:81
通过标准环境变量或配置传递身份,避免直接读取内部文件
低危 权限提升

数据库表结构自动升级

_alter_tables()方法在启动时自动ALTER TABLE添加缺失字段,具有隐式数据库写权限

skills/smyx_common/scripts/dao.py:74
这是合法的数据库迁移行为,但应声明

声明能力 vs 实际能力

文件系统 阻止
声明 READ
推断 WRITE
dao.py:47 创建sqlite数据库写入
网络访问 阻止
声明 READ
推断 WRITE
util.py:199 requests.post上传视频文件
数据库 阻止
声明 NONE
推断 WRITE
dao.py:47-92 完整CRUD操作

可疑产物与外联

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

SKILL.md:37

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

文件构成

29 个文件 · 2506 行
Python 18 个文件 · 2248 行Markdown 3 个文件 · 223 行YAML 6 个文件 · 29 行Text 2 个文件 · 6 行
需关注文件 · 3
skills/smyx_common/scripts/util.py Python · 591 行
静默phoneLogin调用 · 自动创建默认用户 · 读取smyx-api-key.txt内部身份文件
skills/smyx_common/scripts/dao.py Python · 401 行
本地SQLite数据库明文存储凭证 · 数据库表结构自动升级
SKILL.md Markdown · 183 行
https://lifeemergence.com/sample.html
其他文件 · config.py · psychology_analysis.py · skill.py · smyx_analysis.py · api_service.py · skill.py +3

安全亮点

依赖包版本全部锁定(pydash==8.0.6, SQLAlchemy==2.0.46, PyYAML==6.0.3)
无base64编码执行、无eval()调用、无subprocess裸命令执行
使用标准requests库进行HTTP通信,无可疑的curl|bash管道
视频文件处理有格式校验和大小限制(最大10MB)
API响应有success字段校验和错误处理