安全决策报告

smyx-crop-specific-disease-analysis

经济作物病害识别技能,代码结构清晰,但存在未声明的本地凭证存储机制和环境变量访问行为。

安装决策优先 来源: ClawHub 扫描时间: 2026/8/18
文件 29
IOC 10
越权项 2
发现 5

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

通过
攻击链与高危发现

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

复核
依赖与供应链卫生

发现 1 项需要关注的依赖或供应链线索。

风险分是怎么被拉高的

未声明的本地凭证存储 +10

SKILL.md未声明使用SQLite存储用户token/open_token

未声明的环境变量访问 +8

读取OPENCLAW_SENDER_OPEN_ID等环境变量未在文档中声明

自动用户注册行为 +5

OpenIdUtil自动创建User_开头的默认用户并注册登录

依赖无版本锁定 +5

requests>=2.28.0使用浮动版本

最关键的证据

中危 凭证窃取

本地SQLite数据库存储敏感凭证

dao.py将用户token、open_token等敏感凭证明文存储在SQLite数据库中。虽然路径被重定向到工作区data目录,但数据库文件本身未经加密。

skills/smyx_common/scripts/dao.py:49
建议对存储的凭证进行加密或使用平台安全的凭证存储机制
中危 文档欺骗

未声明的自动用户创建与注册行为

OpenIdUtil.resolve_current_open_id()在未提供open_id时,自动生成User_开头的用户名,调用/sys/phoneLogin接口注册并登录系统。SKILL.md未声明此行为。

skills/smyx_common/scripts/util.py:296
在SKILL.md中明确说明自动用户创建机制,或提供禁用选项
中危 敏感访问

未声明的环境变量读取行为

config.py的init()方法读取多个环境变量(OPENCLAW_SENDER_OPEN_ID, OPENCLAW_SENDER_USERNAME, FEISHU_OPEN_ID),但SKILL.md未声明此行为。

skills/smyx_common/scripts/config.py:98
在SKILL.md的隐私与数据安全声明中补充说明读取的环境变量列表
低危 供应链

依赖包无版本锁定

smyx_analysis/requirements.txt中requests>=2.28.0使用浮动版本,可能引入依赖安全风险。

skills/smyx_analysis/requirements.txt:1
建议锁定具体版本如requests==2.31.0
低危 凭证窃取

API密钥明文配置

config.yaml中存储明文App-Id和API密钥。虽然这是框架设计模式的一部分,但建议使用环境变量或密钥管理服务。

skills/smyx_common/scripts/config.yaml:5
建议使用环境变量注入敏感配置

声明能力 vs 实际能力

文件系统 通过
声明 READ
→
推断 WRITE
skills/smyx_analysis/scripts/smyx_analysis.py:63 读取本地文件用于分析
网络访问 通过
声明 READ
→
推断 READ
skills/smyx_common/scripts/util.py:200 HTTP请求调用外部API
环境变量 阻止
声明 NONE
→
推断 READ
skills/smyx_common/scripts/config.py:98 读取OPENCLAW_SENDER_OPEN_ID等变量
数据库 阻止
声明 NONE
→
推断 WRITE
skills/smyx_common/scripts/dao.py:49 创建SQLite存储用户凭证

可疑产物与外联

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

SKILL.md:29

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

文件构成

29 个文件 · 2711 行
Python 18 个文件 · 2363 行Markdown 3 个文件 · 313 行YAML 6 个文件 · 29 行Text 2 个文件 · 6 行
需关注文件 · 4
skills/smyx_common/scripts/util.py Python · 718 行
未声明的自动用户创建与注册行为
skills/smyx_common/scripts/config.py Python · 399 行
未声明的环境变量读取行为
skills/smyx_common/scripts/dao.py Python · 499 行
本地SQLite数据库存储敏感凭证
SKILL.md Markdown · 274 行
https://lifeemergence.com/sample.html
其他文件 · skill.py · smyx_analysis.py · smyx_crop_specific_disease_analysis.py · api_service.py · skill.py · api_service.py +2

安全亮点

数据库路径重定向机制防止数据库文件污染技能目录
API请求超时设置合理(120秒)
文件大小和格式验证完善
代码结构清晰,模块化良好
敏感环境变量有隔离处理