安全决策报告

smyx-plant-nutrient-diagnosis-analysis

植物缺素症视觉诊断技能,核心功能正常,存在未声明数据库操作和被注释的可疑 subprocess 代码。

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

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

通过
攻击链与高危发现

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

通过
依赖与供应链卫生

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

风险分是怎么被拉高的

未声明的数据库操作 +10

使用 SQLite 本地数据库存储用户信息,未在 SKILL.md 中声明 database:WRITE

阴影功能残留 +10

AgentSkill.ai_chat() 包含被注释的 subprocess.run() 调用 openclaw agent

环境变量访问 +5

读取 OPENCLAW_SENDER_OPEN_ID, OPENCLAW_SENDER_USERNAME 等身份相关环境变量

最关键的证据

中危 文档欺骗

AgentSkill.ai_chat() 包含被注释的可疑 subprocess 代码

skills/smyx_common/scripts/skill.py 第35-41行包含被注释的 subprocess.run() 调用,可执行 'openclaw agent' 命令。虽然当前被注释,但代码逻辑完整存在,属于阴影功能残留。

skills/smyx_common/scripts/skill.py:35
删除此段被注释的可疑代码,或添加明确的安全注释说明为何保留
中危 权限提升

未声明的数据库操作

技能使用 SQLite 本地数据库创建 sys_user 表并执行 CRUD 操作,但在 SKILL.md 中未声明 database:WRITE 权限。数据库存储在 workspace/data/ 目录。

skills/smyx_common/scripts/dao.py:56
在 SKILL.md 中明确声明 database:WRITE 能力,说明用于本地用户身份管理
低危 敏感访问

读取身份相关环境变量

skills/smyx_common/scripts/config.py 第85-89行读取 OPENCLAW_SENDER_OPEN_ID, OPENCLAW_SENDER_USERNAME, FEISHU_OPEN_ID 等身份相关环境变量。

skills/smyx_common/scripts/config.py:85
确认这些环境变量的访问范围和使用目的,符合 SKILL.md 中声明的'系统内部自动处理身份'

声明能力 vs 实际能力

文件系统 通过
声明 READ
→
推断 READ
SKILL.md:198 - 声明读取本地图像/视频
网络访问 通过
声明 READ
→
推断 READ
skills/smyx_common/scripts/util.py:290 - 调用外部 API
数据库 阻止
声明 NONE
→
推断 WRITE
skills/smyx_common/scripts/dao.py:56 - SQLite 数据库创建和 CRUD 操作
环境变量 阻止
声明 NONE
→
推断 READ
skills/smyx_common/scripts/config.py:85 - 读取 OPENCLAW_SENDER_OPEN_ID
命令执行 通过
声明 NONE
→
推断 NONE
skills/smyx_common/scripts/skill.py:35 - subprocess 调用被注释

可疑产物与外联

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

SKILL.md:38

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

文件构成

29 个文件 · 2681 行
Python 18 个文件 · 2360 行Markdown 3 个文件 · 286 行YAML 6 个文件 · 29 行Text 2 个文件 · 6 行
需关注文件 · 4
skills/smyx_common/scripts/config.py Python · 399 行
读取身份相关环境变量
skills/smyx_common/scripts/dao.py Python · 499 行
未声明的数据库操作
SKILL.md Markdown · 247 行
https://lifeemergence.com/sample.html
skills/smyx_common/scripts/skill.py Python · 85 行
AgentSkill.ai_chat() 包含被注释的可疑 subprocess 代码
其他文件 · util.py · skill.py · smyx_analysis.py · smyx_plant_nutrient_diagnosis_analysis.py · api_service.py · api_service.py +2

安全亮点

核心功能(植物缺素症视觉诊断)实现清晰,与声明一致
依赖包有版本锁定(pydash==8.0.6, SQLAlchemy==2.0.46, yaml==6.0.3)
subprocess 调用代码被注释,不影响当前运行
数据库操作强制重定向到工作区共享 data 目录,不会污染其他目录
使用 SQLAlchemy ORM 而非裸 SQL,降低注入风险