安全决策报告

smyx-separation-anxiety-relief-analysis

合法的宠物分离焦虑检测技能,代码行为与文档声明基本一致,存在少量设计瑕疵但不构成实质威胁。

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

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

通过
攻击链与高危发现

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

通过
依赖与供应链卫生

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

风险分是怎么被拉高的

subprocess 被注释但存在痕迹 +8

skill.py 保留了 ai_chat() 方法的 subprocess 调用注释,虽未激活但存在设计瑕疵

凭证明文存储 +6

用户凭证(token、open_token)明文存储在 SQLite 数据库和文本文件中

依赖无版本锁定 +4

requests>=2.28.0 无上限版本锁定,存在供应链风险

环境变量读取 +2

读取 OPENCLAW_SENDER_OPEN_ID 等环境变量,符合业务需求但值得注意

最关键的证据

低危 供应链

依赖包无版本上限锁定

SKILL.md 声明 requests>=2.28.0 但无上限版本,可能引入恶意更新

SKILL.md:146
锁定具体版本,如 requests==2.31.0
低危 代码混淆

subprocess 调用代码被注释但未删除

skills/smyx_common/scripts/skill.py 保留了 ai_chat() 方法和 subprocess 相关注释代码,虽未执行但增加分析难度

skills/smyx_common/scripts/skill.py:15
完全删除不再使用的 subprocess 相关代码
低危 敏感访问

用户凭证明文存储

用户 token、open_token 明文存储在 SQLite 数据库和 data/smyx-api-key.txt 中,LocalSystem 权限下可被读取

skills/smyx_common/scripts/dao.py:65
考虑加密存储或使用系统密钥管理服务
提示 文档欺骗

SKILL.md 未声明数据库和文件写入能力

文档声明 filesystem:READ 和 network:READ,但代码实际使用 SQLite 数据库和写入日志文件

SKILL.md:1
补充声明 database 资源使用

声明能力 vs 实际能力

文件系统 通过
声明 READ
→
推断 WRITE
skills/smyx_common/scripts/dao.py:91 创建 SQLite 数据库文件
网络访问 通过
声明 READ
→
推断 READ
skills/smyx_common/scripts/util.py:340 仅向 lifeemergence.com 域名发起 HTTP 请求
命令执行 通过
声明 NONE
→
推断 NONE
skills/smyx_common/scripts/skill.py:18 subprocess 调用已被注释
数据库 通过
声明 NONE
→
推断 WRITE
skills/smyx_common/scripts/dao.py:91 创建 SQLite 数据库 smyx-common-claw.db
环境变量 通过
声明 NONE
→
推断 READ
skills/smyx_common/scripts/config.py:98 读取 OPENCLAW_SENDER_OPEN_ID 等环境变量

可疑产物与外联

中危 外部 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

依赖与供应链

包名版本来源漏洞备注
requests >=2.28.0 pip 否 无版本上限锁定
pydash 8.0.6 pip 否 精确版本
SQLAlchemy 2.0.46 pip 否 精确版本
PyYAML 6.0.3 pip 否 精确版本

文件构成

29 个文件 · 2654 行
Python 18 个文件 · 2360 行Markdown 3 个文件 · 259 行YAML 6 个文件 · 29 行Text 2 个文件 · 6 行
需关注文件 · 3
skills/smyx_common/scripts/dao.py Python · 499 行
用户凭证明文存储
SKILL.md Markdown · 220 行
依赖包无版本上限锁定 · SKILL.md 未声明数据库和文件写入能力 · https://lifeemergence.com/sample.html
skills/smyx_common/scripts/skill.py Python · 85 行
subprocess 调用代码被注释但未删除
其他文件 · util.py · config.py · skill.py · smyx_analysis.py · smyx_separation_anxiety_relief_analysis.py · api_service.py +3

安全亮点

所有网络请求都发往声明的外部域名(lifeemergence.com 系列),无可疑外部通信
代码逻辑清晰,API 服务封装规范,无隐蔽的数据外泄行为
数据库使用工作区隔离机制,不同 Agent 使用独立数据目录
用户身份(open_id)自动生成,不依赖用户输入,保护隐私
subprocess 调用已被注释,不会在当前版本执行
依赖包均为知名开源库(requests、SQLAlchemy、PyYAML、pydash)