安全决策报告

smyx-child-happy-moment-capture-analysis

儿童开心时刻识别技能功能正常,存在轻微文档-实现不一致(网络请求未声明),subprocess代码被注释但未删除存在潜在风险,无凭证收割或恶意行为证据。

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

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

通过
攻击链与高危发现

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

通过
依赖与供应链卫生

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

风险分是怎么被拉高的

subprocess代码存在但被注释 +12

skills/smyx_common/scripts/skill.py:62-75 ai_chat方法构建subprocess命令但实际未调用,代码未删除存在恢复风险

网络请求未在文档声明 +8

SKILL.md未声明通过requests调用远程API,allowed-tools映射中无对应声明

本地数据库未声明 +2

使用SQLite存储用户凭证(token/open_token),SKILL.md未提及

最关键的证据

中危 文档欺骗

注释的subprocess代码存在恢复风险

skills/smyx_common/scripts/skill.py中的ai_chat方法构建了subprocess命令数组(cmd=['openclaw','agent'...]),虽然实际未执行(subprocess.run被注释),但代码仍然存在。如被激活可执行任意shell命令。

skills/smyx_common/scripts/skill.py:62-75
删除注释的subprocess代码,或明确在SKILL.md中声明openclaw agent调用能力
低危 文档欺骗

网络请求能力未声明

代码通过requests库调用远程API服务进行视频分析,但SKILL.md的allowed-tools映射中未声明network:WRITE权限。

skills/smyx_common/scripts/util.py:305
在SKILL.md的Resources部分声明网络请求能力
低危 敏感访问

环境变量读取未声明

config.py从环境变量读取用户身份(OPENCLAW_SENDER_OPEN_ID, OPENCLAW_SENDER_USERNAME, FEISHU_OPEN_ID),SKILL.md未提及。

skills/smyx_common/scripts/config.py:97-104
在SKILL.md中声明读取的特定环境变量及其用途
提示 文档欺骗

本地SQLite数据库未声明

使用SQLite数据库存储用户凭证(token/open_token)和会话信息,存储在工作区data目录,SKILL.md未提及持久化存储。

skills/smyx_common/scripts/dao.py:67
在SKILL.md数据处理部分声明本地缓存策略

声明能力 vs 实际能力

文件系统 通过
声明 READ
→
推断 READ
SKILL.md:input参数+scripts/smyx_child_happy_moment_capture_analysis.py:87 open()
网络访问 阻止
声明 NONE
→
推断 WRITE
skills/smyx_common/scripts/util.py:305 requests.request()调用远程API
环境变量 阻止
声明 NONE
→
推断 READ
skills/smyx_common/scripts/config.py:97 读取OPENCLAW_SENDER_OPEN_ID等环境变量
命令执行 通过
声明 NONE
→
推断 NONE
skills/smyx_common/scripts/skill.py:62-75 注释的subprocess代码
数据库 阻止
声明 NONE
→
推断 WRITE
skills/smyx_common/scripts/dao.py:67 create_engine创建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 个文件 · 2704 行
Python 18 个文件 · 2363 行Markdown 3 个文件 · 306 行YAML 6 个文件 · 29 行Text 2 个文件 · 6 行
需关注文件 · 5
skills/smyx_common/scripts/util.py Python · 718 行
网络请求能力未声明
skills/smyx_common/scripts/config.py Python · 399 行
环境变量读取未声明
skills/smyx_common/scripts/dao.py Python · 499 行
本地SQLite数据库未声明
SKILL.md Markdown · 194 行
https://lifeemergence.com/sample.html
skills/smyx_common/scripts/skill.py Python · 85 行
注释的subprocess代码存在恢复风险
其他文件 · skill.py · api_doc.md · smyx_analysis.py · smyx_child_happy_moment_capture_analysis.py · api_service.py · api_service.py +1

安全亮点

依赖包版本已锁定(pydash==8.0.6, SQLAlchemy==2.0.46, PyYAML==6.0.3)
无凭证收割行为,UserDao仅在本地SQLite存储不外传
网络请求使用标准HTTPS,API地址由配置管理非硬编码
无base64编码执行或命令注入风险
argparse参数解析安全,无shell=True使用
数据库路径强制重定向到工作区data目录防止目录遍历