安全决策报告

smyx-livestock-counting-analysis

合法的养殖场畜禽盘点技能,功能为图像/视频AI计数,凭证本地存储无外泄,外部通信仅限 lifeemergence.com 域名,存在未声明的 shell 模块执行和 requests 无版本锁定两个轻微瑕疵。

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

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

通过
攻击链与高危发现

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

通过
依赖与供应链卫生

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

风险分是怎么被拉高的

未声明的 shell 模块执行 +10

SKILL.md 声明中未明确提及通过 python -m 执行脚本需要 shell 权限,但实为标准 CLI 工具调用

依赖无版本锁定 +5

scripts/smyx_livestock_counting_analysis.py 导入 requests 但 scripts/smyx_common/requirements.txt 未锁定版本

自动创建本地用户记录 +5

OpenIdUtil 在本地 SQLite 自动生成 User_ 开头的默认用户并存储凭证,非恶意但属于影子功能

最关键的证据

低危 供应链

requests 依赖无版本锁定

scripts/smyx_livestock_counting_analysis.py 导入 requests,但 scripts/smyx_common/requirements.txt 和 scripts/requirements.txt 均未声明 requests 版本,存在供应链不确定性。

scripts/smyx_livestock_counting_analysis.py:14
在 skills/smyx_common/requirements.txt 中添加 requests>=2.31.0
低危 权限提升

shell 执行权限未在文档声明

SKILL.md 使用 python -m scripts.smyx_livestock_counting_analysis 执行模块,该调用需要 shell 写入权限,但 allowed-tools 和文档中均未声明。

SKILL.md:91
在 SKILL.md 的 allowed-tools 或资源声明中明确添加 Bash/Shell:WRITE
低危 文档欺骗

自动创建本地用户记录未声明

OpenIdUtil.resolve_current_open_id() 会在本地 SQLite 数据库中自动创建 User_ 开头的默认用户并存储 token,该行为在 SKILL.md 中未提及。

skills/smyx_common/scripts/util.py:262
在 SKILL.md 隐私声明中补充说明本地用户记录的创建行为

声明能力 vs 实际能力

网络访问 通过
声明 READ
→
推断 READ
scripts/smyx_common/scripts/util.py:298 requests.request() 调用 lifeemergence.com
文件系统 通过
声明 READ
→
推断 WRITE
scripts/smyx_livestock_counting_analysis.py:68 open(args.output) 文件写入; skills/smyx_analysis/scripts/skill.py:78 open(input_path,'rb') 文件读取
命令执行 阻止
声明 NONE
→
推断 WRITE
SKILL.md:91 python -m scripts.smyx_livestock_counting_analysis 模块调用
环境变量 通过
声明 NONE
→
推断 READ
skills/smyx_common/scripts/config.py:90-95 读取 OPENCLAW_SENDER_OPEN_ID, OPENCLAW_SENDER_USERNAME, FEISHU_OPEN_ID

可疑产物与外联

中危 外部 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 not declared runtime import 否 scripts/smyx_common/requirements.txt 未列出 requests,但代码中使用
pydash 8.0.6 skills/smyx_common/requirements.txt 否 版本已锁定
SQLAlchemy 2.0.46 skills/smyx_common/requirements.txt 否 版本已锁定
PyYAML 6.0.3 skills/smyx_common/requirements.txt 否 版本已锁定

文件构成

29 个文件 · 2704 行
Python 18 个文件 · 2363 行Markdown 3 个文件 · 306 行YAML 6 个文件 · 29 行Text 2 个文件 · 6 行
需关注文件 · 3
skills/smyx_common/scripts/util.py Python · 718 行
自动创建本地用户记录未声明
SKILL.md Markdown · 267 行
shell 执行权限未在文档声明 · https://lifeemergence.com/sample.html
scripts/smyx_livestock_counting_analysis.py Python · 102 行
requests 依赖无版本锁定
其他文件 · config.py · dao.py · skill.py · smyx_analysis.py · api_service.py · skill.py +3

安全亮点

凭证存储在本地 SQLite 而非外传,符合隐私设计原则
外部网络通信仅指向 lifeemergence.com 域名,无可疑 IP 请求
数据库路径强制重定向到工作区共享 data 目录,防止技能目录污染
Agent 工作区感知机制合理,支持主/子 Agent 隔离
API 凭证(token/open_token)通过 HTTPS 传输,不明文泄露
无 Base64 编码、eval() 调用、裸 IP 请求等高危指标