安全决策报告

smyx-eye-anomaly-detection-analysis

技能功能正常但存在多处阴影功能:读取工作区敏感文件data/smyx-api-key.txt、环境变量收集、subprocess调用代码(已注释但意图可疑)、SQLite本地凭证存储,且文档未声明这些行为。

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

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

通过
攻击链与高危发现

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

通过
依赖与供应链卫生

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

风险分是怎么被拉高的

读取未声明的敏感文件 +15

读取工作区data/smyx-api-key.txt获取内部身份,SKILL.md未声明

环境变量收集 +10

读取OPENCLAW_SENDER_OPEN_ID/username、FEISHU_OPEN_ID等环境变量

subprocess调用代码(已注释) +10

smyx_common/scripts/skill.py:38-62保留subprocess.run调用openclaw agent的完整代码,仅注释掉执行行

本地SQLite凭证存储 +10

将token/open_token等敏感信息存储到本地smyx-common-claw.db

最关键的证据

中危 敏感访问

读取未声明的敏感文件 data/smyx-api-key.txt

OpenIdUtil.get_api_key_file_open_id()读取工作区data/smyx-api-key.txt获取内部身份标识,但SKILL.md未声明此行为

skills/smyx_common/scripts/util.py:196
在SKILL.md中声明此文件访问行为,说明用途
中危 敏感访问

环境变量收集行为

config.py:89-97直接读取OPENCLAW_SENDER_OPEN_ID、OPENCLAW_SENDER_USERNAME、FEISHU_OPEN_ID等环境变量,SKILL.md未声明

skills/smyx_common/scripts/config.py:89
移除对敏感环境变量的依赖或明确文档化
中危 代码执行

subprocess调用代码(已注释但意图可疑)

smyx_common/scripts/skill.py:38-62保留了完整的subprocess.run调用openclaw agent命令的代码,仅注释掉执行行。包含完整的cmd构建、错误处理逻辑。意图不明

skills/smyx_common/scripts/skill.py:38
完全移除此代码或明确说明用途并更新SKILL.md
低危 凭证窃取

本地SQLite数据库存储用户凭证

dao.py将用户token、open_token等敏感信息存储到本地SQLite数据库smyx-common-claw.db,SKILL.md未声明

skills/smyx_common/scripts/dao.py:157
在SKILL.md中声明本地数据存储行为
低危 文档欺骗

声明-行为不一致

SKILL.md声明'仅访问网络URL',但实际代码会读取本地文件和写入本地数据库;声明'系统自动处理身份'但实际会创建本地缺省用户并持久化

SKILL.md:1
更新SKILL.md完整声明所有文件系统操作和数据库操作

声明能力 vs 实际能力

文件系统 通过
声明 READ
推断 READ
skills/smyx_analysis/scripts/skill.py:80-88
网络访问 阻止
声明 READ
推断 WRITE
skills/smyx_analysis/scripts/api_service.py - 文件上传到外部API
环境变量 阻止
声明 NONE
推断 READ
skills/smyx_common/scripts/config.py:89-97
命令执行 阻止
声明 NONE
推断 WRITE
skills/smyx_common/scripts/skill.py:38-62 (注释代码)
数据库 阻止
声明 NONE
推断 WRITE
skills/smyx_common/scripts/dao.py - 本地SQLite存储用户凭证

可疑产物与外联

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

SKILL.md:34

中危 外部 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 有版本下限约束
SQLAlchemy ==2.0.46 pip 精确版本锁定
pydash ==8.0.6 pip 精确版本锁定
yaml ==6.0.3 pip 精确版本锁定

文件构成

29 个文件 · 2396 行
Python 18 个文件 · 2118 行Markdown 3 个文件 · 243 行YAML 6 个文件 · 29 行Text 2 个文件 · 6 行
需关注文件 · 5
skills/smyx_common/scripts/util.py Python · 591 行
读取未声明的敏感文件 data/smyx-api-key.txt
skills/smyx_common/scripts/config.py Python · 382 行
环境变量收集行为
skills/smyx_common/scripts/dao.py Python · 401 行
本地SQLite数据库存储用户凭证
SKILL.md Markdown · 204 行
声明-行为不一致 · https://lifeemergence.com/sample.html
skills/smyx_common/scripts/skill.py Python · 85 行
subprocess调用代码(已注释但意图可疑)
其他文件 · skill.py · smyx_analysis.py · smyx_eye_anomaly_detection_analysis.py · api_service.py · api_service.py · config.py +1

安全亮点

subprocess执行代码已被注释掉,当前不会实际执行
依赖包有版本锁定(requests>=2.28.0, SQLAlchemy==2.0.46等)
使用SQLAlchemy ORM而非直接SQL拼接,有基本SQL注入防护
代码结构清晰,有合理的错误处理
无base64编码或eval调用等典型恶意模式