安全决策报告

smyx-fish-surface-symptom-detection-analysis

发现未声明的阴影功能(ai_chat方法含subprocess调用框架),但代码已注释,实际无恶意行为。技能为合法的鱼体健康分析工具,依赖管理规范,无凭证外泄。

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

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

通过
攻击链与高危发现

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

通过
依赖与供应链卫生

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

风险分是怎么被拉高的

未声明的阴影功能 +20

skills/smyx_common/scripts/skill.py 的 ai_chat() 方法包含 subprocess 调用 openclaw agent 的代码框架,但未在 SKILL.md 中声明

内部 IP 和外部 URL +10

config-dev.yaml 包含内网 IP 192.168.1.234,config.yaml 包含多个 lifeemergence.com 外部 URL

用户身份自动创建机制 +10

OpenIdUtil.resolve_current_open_id() 自动生成 User_ 前缀用户名并写入本地 SQLite 数据库,未在文档中明确说明

最关键的证据

中危 文档欺骗

未声明的阴影功能:subprocess 调用框架

skills/smyx_common/scripts/skill.py 中的 AgentSkill.ai_chat() 方法包含调用 'openclaw agent' 命令的 subprocess 代码框架(已注释),但 SKILL.md 中完全未提及此功能,存在文档-行为差异。

skills/smyx_common/scripts/skill.py:31
如无使用需求建议直接删除 ai_chat() 方法;如需保留必须在 SKILL.md 中声明并说明用途
低危 权限提升

未声明的数据库操作

代码使用 SQLAlchemy 操作本地 SQLite 数据库(smyx-common-claw.db)存储用户身份信息,但 SKILL.md 中未声明数据库访问能力。

skills/smyx_common/scripts/dao.py:1
在 SKILL.md 的资源索引中增加数据库相关说明
低危 供应链

依赖版本已锁定

skills/smyx_analysis/requirements.txt 和 skills/smyx_common/requirements.txt 均使用固定版本号,依赖管理规范。

skills/smyx_analysis/requirements.txt:1
保持当前版本锁定策略
提示 敏感访问

用户身份自动管理

OpenIdUtil 自动解析/创建用户身份(User_前缀),读取 data/smyx-api-key.txt 文件存储内部身份,未在文档中明确说明数据存储位置和生命周期。

skills/smyx_common/scripts/util.py:227
在隐私政策或 SKILL.md 中明确说明用户身份数据的存储位置和处理方式

声明能力 vs 实际能力

文件系统 通过
声明 READ
推断 READ
scripts/smyx_analysis.py:87 仅读取用户提供的输入文件
网络访问 通过
声明 READ
推断 WRITE
skills/smyx_common/scripts/util.py:RequestUtil.http_request 发送 POST 请求到 API,但属于合法业务调用
命令执行 通过
声明 NONE
推断 NONE
skills/smyx_common/scripts/skill.py:31-43 ai_chat() 方法框架性包含 subprocess 调用但已注释
数据库 阻止
声明 NONE
推断 WRITE
skills/smyx_common/scripts/dao.py 使用 SQLAlchemy 操作 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

依赖与供应链

包名版本来源漏洞备注
pydash 8.0.6 pip 版本已锁定
SQLAlchemy 2.0.46 pip 版本已锁定
PyYAML 6.0.3 pip 版本已锁定

文件构成

29 个文件 · 2712 行
Python 18 个文件 · 2363 行Markdown 3 个文件 · 314 行YAML 6 个文件 · 29 行Text 2 个文件 · 6 行
需关注文件 · 4
skills/smyx_common/scripts/util.py Python · 718 行
用户身份自动管理
skills/smyx_common/scripts/dao.py Python · 499 行
未声明的数据库操作
SKILL.md Markdown · 194 行
https://lifeemergence.com/sample.html
skills/smyx_common/scripts/skill.py Python · 85 行
未声明的阴影功能:subprocess 调用框架
其他文件 · config.py · skill.py · api_doc.md · smyx_analysis.py · smyx_fish_surface_symptom_detection_analysis.py · api_service.py +2

安全亮点

依赖版本全部锁定(pydash==8.0.6, SQLAlchemy==2.0.46, PyYAML==6.0.3),无供应链风险
无 base64 编码、eval、动态代码生成等混淆技术
无 ~/.ssh、~/.aws、.env 等敏感路径访问
无凭证收割或 API 密钥外泄行为
无外部 IP 非常规端口的隐蔽 C2 通信
代码结构清晰,使用标准 requests 库进行合法 API 调用
API 端点指向明确的企业域名(lifeemergence.com)
subprocess 代码框架已注释,不产生实际执行