安全决策报告

smyx-teen-screen-addiction-detection-analysis

技能声称是青少年屏幕成瘾检测工具,但代码中存在已注释的远程代码执行准备逻辑(subprocess.run),且系统将用户凭证(token)传输至外部API并持久化存储于本地SQLite数据库,文档未声明这些行为。

安装决策优先 来源: ClawHub 扫描时间: 16 天前
文件 29
IOC 10
越权项 2
发现 5
最直接的威胁证据
01
用户安装技能,读取SKILL.md理解功能为青少年屏幕成瘾检测 初始入口 · SKILL.md
02
技能初始化时自动调用外部API进行身份注册 权限提升 · skills/smyx_common/scripts/util.py
03
外部API返回的凭证(token)被存储到本地SQLite数据库 权限提升 · skills/smyx_common/scripts/dao.py

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

阻止
攻击链与高危发现

报告包含 4 步攻击链,另有 0 项高危或严重发现。

通过
依赖与供应链卫生

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

攻击链

01
用户安装技能,读取SKILL.md理解功能为青少年屏幕成瘾检测

初始入口 · SKILL.md:1

02
技能初始化时自动调用外部API进行身份注册

权限提升 · skills/smyx_common/scripts/util.py:257

03
外部API返回的凭证(token)被存储到本地SQLite数据库

权限提升 · skills/smyx_common/scripts/dao.py:63

04
已注释的subprocess代码若被激活可执行任意命令(潜在风险)

最终危害 · skills/smyx_common/scripts/skill.py:48

风险分是怎么被拉高的

阴影功能-已注释的RCE准备代码 +15

skills/smyx_common/scripts/skill.py:48-52 准备了subprocess.run执行openclaw agent命令,虽已注释但表明意图

未声明的凭证外传行为 +15

系统自动将open_id等身份凭证POST到外部API (lifeemergence.com),文档未声明

凭证本地持久化存储 +8

UserDao将API token/open_token存入本地SQLite数据库 smyx-common-claw.db

配置暴露敏感信息 +4

config.yaml包含app-id、tenant-code等敏感配置

最关键的证据

中危 代码混淆

已注释的远程代码执行准备代码

AgentSkill.ai_chat()方法中包含完整的subprocess.run执行逻辑,被注释但保留。构建了cmd列表用于执行openclaw agent命令,虽未激活但表明存在RCE意图。

skills/smyx_common/scripts/skill.py:48
如非必要,应删除此注释代码。如需使用subprocess,应在SKILL.md中明确声明shell:WRITE权限。
中危 数据外泄

未声明的凭证外传行为

RequestUtil._get_or_create_user()自动将用户名(open_id)通过POST请求发送到外部API https://lifeemergence.com/jeecg-boot-xzgz/sys/phoneLogin 进行身份注册/登录,SKILL.md未声明此行为。

skills/smyx_common/scripts/util.py:257
应在SKILL.md前置准备部分明确声明系统会自动进行身份验证并与外部服务通信。
中危 凭证窃取

凭证本地持久化存储

UserDao将API返回的token和openToken明文存储在本地SQLite数据库 smyx-common-claw.db 中,数据库位于工作区data目录,理论上可被其他技能访问。

skills/smyx_common/scripts/dao.py:63
考虑使用系统密钥环或加密存储;限制数据库文件权限;评估多技能共享数据库的风险。
低危 供应链

依赖包版本锁定

skills/smyx_analysis/requirements.txt 和 skills/smyx_common/requirements.txt 声明了精确版本号,降低了供应链风险。

skills/smyx_analysis/requirements.txt:1
良好实践,无需修改。
低危 敏感访问

配置文件中暴露敏感标识符

config.yaml包含app-id (x1a3s4nwy1s2r4se)、tenant-code、feishu-app-id等敏感配置项。

skills/smyx_common/scripts/config.yaml:1
建议使用环境变量替代硬编码值;这些值应视为机密不应公开。

声明能力 vs 实际能力

文件系统 阻止
声明 READ
推断 WRITE
scripts/smyx_teen_screen_addiction_detection_analysis.py:54 写入--output指定文件
网络访问 阻止
声明 READ
推断 WRITE
skills/smyx_common/scripts/util.py:257 将凭证POST到外部API
命令执行 通过
声明 NONE
推断 WRITE
skills/smyx_common/scripts/skill.py:48-52 注释的subprocess.run代码
数据库 通过
声明 NONE
推断 WRITE
skills/smyx_common/scripts/dao.py:63 创建本地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 个文件 · 2676 行
Python 18 个文件 · 2363 行Markdown 3 个文件 · 278 行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 · 183 行
https://lifeemergence.com/sample.html
skills/smyx_common/scripts/skill.py Python · 85 行
已注释的远程代码执行准备代码
其他文件 · config.py · skill.py · api_doc.md · smyx_analysis.py · smyx_teen_screen_addiction_detection_analysis.py · api_service.py +2

安全亮点

依赖包版本锁定(pydash==8.0.6, SQLAlchemy==2.0.46, PyYAML==6.0.3),无已知漏洞
代码结构清晰,主要功能实现与文档描述基本一致
存在文件大小/格式验证逻辑,防止资源滥用
数据库路径通过AgentContextUtil隔离到工作区data目录,避免污染技能目录