安全决策报告

plant-wilting-monitoring-analysis

这是一个合法的植物枯萎监测分析技能,功能正常但存在配置文件暴露API凭证和环境变量读取行为的安全瑕疵。

安装决策优先 来源: ClawHub 扫描时间: 18 天前
文件 29
IOC 12
越权项 0
发现 4

为什么得出这个结论

0/4 个维度触发
通过
声明与实际能力

声明资源与推断能力基本一致。

复核
隐藏执行与外联

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

通过
攻击链与高危发现

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

通过
依赖与供应链卫生

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

风险分是怎么被拉高的

配置文件暴露凭证 +10

config.yaml包含App-ID、飞书App-ID等配置

环境变量读取用户标识 +5

ConstantEnum.init()读取OPENCLAW_SENDER_OPEN_ID等环境变量

依赖版本未锁定 +5

requirements.txt中pydash、SQLAlchemy、PyYAML均无版本锁定

最关键的证据

低危 敏感访问

配置文件包含API凭证

skills/smyx_common/scripts/config.yaml 包含 App-ID (x1a3s4nwy1s2r4se)、飞书App-ID (cli_a93d769369badcb1) 等配置信息

skills/smyx_common/scripts/config.yaml:1
使用环境变量或密钥管理服务替代配置文件中的明文凭证
低危 敏感访问

读取环境变量获取用户标识

ConstantEnum.init() 从环境变量读取 OPENCLAW_SENDER_OPEN_ID、OPENCLAW_SENDER_USERNAME、FEISHU_OPEN_ID 用于身份关联

skills/smyx_common/scripts/config.py:96
确认这些环境变量来源可信,仅用于内部身份关联不外传
低危 供应链

依赖包版本未锁定

requirements.txt 中 pydash==8.0.6、SQLAlchemy==2.0.46、PyYAML==6.0.3 使用精确版本,但 skills/smyx_analysis/requirements.txt 中使用了 == 锁定版本

skills/smyx_analysis/requirements.txt:1
确认 yaml==6.0.3 是否为 PyYAML 的正确包名,建议统一使用 PyYAML>=6.0.1
提示 敏感访问

本地数据库存储用户信息

使用SQLite本地数据库 (smyx-common-claw.db) 存储用户token、open_token等敏感信息

skills/smyx_common/scripts/dao.py:85
确认数据库文件权限设置正确,防止未授权访问

声明能力 vs 实际能力

文件系统 通过
声明 READ
→
推断 WRITE
scripts/plant_wilting_monitoring_analysis.py:61 写入输出文件
网络访问 通过
声明 READ
→
推断 READ
RequestUtil.http_request() 仅调用外部API
命令执行 通过
声明 NONE
→
推断 NONE
未发现subprocess/popen调用
环境变量 通过
声明 NONE
→
推断 READ
skills/smyx_common/scripts/config.py:96-103 读取OPENCLAW_SENDER_OPEN_ID等

可疑产物与外联

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

SKILL.md:35

中危 外部 URL
https://clawhub.ai/user/smyx-sunjinhui

skill-card.md:9

中危 外部 URL
https://clawhub.ai/smyx-sunjinhui/skills/smyx-plant-wilting-monitoring-analysis

skill-card.md:39

中危 外部 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 (PyYAML) 6.0.3 pip 否 包名不标准(应为PyYAML),但版本已锁定

文件构成

29 个文件 · 2656 行
Python 18 个文件 · 2357 行Markdown 3 个文件 · 264 行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 · 186 行
https://lifeemergence.com/sample.html
skill-card.md Markdown · 59 行
https://clawhub.ai/user/smyx-sunjinhui · https://clawhub.ai/smyx-sunjinhui/skills/smyx-plant-wilting-monitoring-analysis
其他文件 · util.py · skill.py · smyx_analysis.py · plant_wilting_monitoring_analysis.py · api_service.py · skill.py +2

安全亮点

代码结构清晰,无混淆或隐藏恶意逻辑
无远程脚本下载或执行行为
无反向shell或RCE漏洞
无凭证外传或数据泄露行为
使用yaml.safe_load()防止YAML注入
API请求使用HTTPS加密传输
skill-card.md 披露了潜在风险(身份创建、媒体上传)