Why this conclusion was reached
1/4 dimensions flagged Block Declared vs actual capability 2 undeclared or violating capabilities were inferred.
Review Hidden execution and egress 12 lower-risk artifacts were extracted and still need context.
Pass Attack chain and severe findings There is no explicit malicious chain in the report.
Pass Dependencies and supply chain hygiene Dependencies are present but no obvious high-risk issue stands out.
What drove the risk score up
依赖版本约束宽松 +15
SKILL.md 中 requests>=2.28.0 无上限约束,可能引入恶意未来版本
凭证存储机制 +5
本地 SQLite 存储 token,但已通过 get_db_path() 重定向到工作区隔离目录
Most important evidence
Low Supply Chain
依赖版本约束宽松
SKILL.md 中声明 requests>=2.28.0 无上限版本约束,requests 库历史上曾有安全漏洞,未来版本可能被植入恶意代码
SKILL.md:96 建议锁定具体版本,如 requests==2.31.0
Low Sensitive Access
未声明的本地凭证存储
skill 使用 SQLite 本地数据库存储用户 token 和身份信息,虽然有工作区隔离机制,但 SKILL.md 未声明此行为
skills/smyx_common/scripts/dao.py:41 在 SKILL.md 中补充声明本地数据存储机制
Info Sensitive Access
环境变量读取
代码读取 OPENCLAW_SENDER_OPEN_ID、OPENCLAW_SENDER_USERNAME、FEISHU_OPEN_ID 等环境变量用于身份关联
skills/smyx_common/scripts/config.py:64 属于正常的系统集成行为,无需修改
Info Doc Mismatch
subprocess 功能已注释
skills/smyx_common/scripts/skill.py 中的 ai_chat() 方法包含 subprocess 调用 openclaw agent 的代码,但已全部注释,不构成实际威胁
skills/smyx_common/scripts/skill.py:29 建议删除注释代码以避免混淆
Declared capability vs actual capability
Network Pass
Declared READ
→ Inferred READ
skills/smyx_common/scripts/util.py:300-310 调用 requests.request 访问 lifeemergence.com API Filesystem Pass
Declared READ
→ Inferred READ
skills/smyx_analysis/scripts/skill.py:50-62 仅读取用户指定的视频文件并验证格式/大小 Database Block
Declared NONE
→ Inferred WRITE
skills/smyx_common/scripts/dao.py:41-200 使用 SQLAlchemy 操作 SQLite 存储用户 token Environment Block
Declared NONE
→ Inferred READ
skills/smyx_common/scripts/config.py:64-70 读取 OPENCLAW_SENDER_OPEN_ID 等环境变量
Suspicious artifacts and egress
Medium External URL
https://lifeemergence.com/sample.html SKILL.md:38
Medium External URL
https://clawhub.ai/user/18072937735 skill-card.md:9
Medium External URL
https://clawhub.ai/18072937735/skills/smyx-pet-training-command-execution-analysis skill-card.md:39
Medium External URL
http://192.168.1.234:9601/smyx-open-api skills/smyx_common/scripts/config-dev.yaml:2
Medium External URL
http://192.168.1.234:4100 skills/smyx_common/scripts/config-dev.yaml:3
Medium External URL
http://192.168.1.234:7070/jeecg-boot-xzgz skills/smyx_common/scripts/config-dev.yaml:4
Medium External URL
https://livemonitortest.lifeemergence.com/smyx-open-api skills/smyx_common/scripts/config-test.yaml:2
Medium External URL
http://livemonitortest.lifeemergence.com skills/smyx_common/scripts/config-test.yaml:3
Medium External URL
https://healthtest.lifeemergence.com/jeecg-boot-xzgz skills/smyx_common/scripts/config-test.yaml:4
Medium External URL
https://lifeemergence.com/jeecg-boot-xzgz skills/smyx_common/scripts/config.yaml:4
Medium External URL
https://open.lifeemergence.com/smyx-open-api skills/smyx_common/scripts/config.yaml:5
Medium External URL
http://livemonitor.lifeemergence.com skills/smyx_common/scripts/config.yaml:6
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
| requests | >=2.28.0 | pip | No | 无版本上限约束,存在供应链风险 |
| SQLAlchemy | 2.0.46 | pip | No | 版本锁定 |
| PyYAML | 6.0.3 | pip | No | 版本锁定 |
| pydash | 8.0.6 | pip | No | 版本锁定 |
File composition
31 files · 2705 lines Python 18 files · 2363 linesMarkdown 4 files · 297 linesYAML 6 files · 29 linesJSON 1 files · 10 linesText 2 files · 6 lines
Files of concern · 5
skills/smyx_common/scripts/config.py Python · 399 lines
环境变量读取
skills/smyx_common/scripts/dao.py Python · 499 lines
未声明的本地凭证存储
SKILL.md Markdown · 193 lines
依赖版本约束宽松 · https://lifeemergence.com/sample.html
skill-card.md Markdown · 60 lines
https://clawhub.ai/user/18072937735 · https://clawhub.ai/18072937735/skills/smyx-pet-training-command-execution-analysis
skills/smyx_common/scripts/skill.py Python · 85 lines
subprocess 功能已注释
Other files · util.py · skill.py · smyx_analysis.py · smyx_pet_training_command_execution_analysis.py · api_service.py · api_service.py +1
31 files · 110.6 KB · 2705 lines
Python 18f · 2363LMarkdown 4f · 297LYAML 6f · 29LJSON 1f · 10LText 2f · 6L
├─
▾
📁
references
│ └─
📝
api_doc.md
Markdown
25L · 938 B
├─
▾
📁
scripts
│ ├─
🐍
__init__.py
Python
1L · 61 B
│ ├─
🐍
config.py
Python
24L · 698 B
│ ├─
📋
config.yaml
YAML
1L · 3 B
│ ├─
🐍
skill.py
Python
23L · 596 B
│ └─
🐍
smyx_pet_training_command_execution_analysis.py
Python
102L · 3.5 KB
├─
▾
📁
skills
│ ├─
▾
📁
smyx_analysis
│ │ ├─
▾
📁
references
│ │ │ └─
📝
api_doc.md
Markdown
19L · 427 B
│ │ ├─
▾
📁
scripts
│ │ │ ├─
🐍
__init__.py
Python
0 B
│ │ │ ├─
🐍
api_service.py
Python
40L · 1.5 KB
│ │ │ ├─
🐍
config.py
Python
39L · 1003 B
│ │ │ ├─
📋
config.yaml
YAML
1L · 3 B
│ │ │ ├─
🐍
skill.py
Python
175L · 6.4 KB
│ │ │ └─
🐍
smyx_analysis.py
Python
115L · 3.7 KB
│ │ ├─
🐍
__init__.py
Python
0 B
│ │ └─
📄
requirements.txt
Text
3L · 45 B
│ └─
▾
📁
smyx_common
│ ├─
▾
📁
scripts
│ │ ├─
🐍
__init__.py
Python
9L · 177 B
│ │ ├─
🐍
api_service.py
Python
101L · 2.6 KB
│ │ ├─
🐍
base.py
Python
33L · 469 B
│ │ ├─
📋
config-dev.yaml
YAML
6L · 214 B
│ │ ├─
📋
config-prod.yaml
YAML
0 B
│ │ ├─
📋
config-test.yaml
YAML
6L · 256 B
│ │ ├─
🐍
config.py
Python
399L · 23.8 KB
│ │ ├─
📋
config.yaml
YAML
15L · 472 B
│ │ ├─
🐍
dao.py
Python
499L · 17.8 KB
│ │ ├─
🐍
skill.py
Python
85L · 2.4 KB
│ │ └─
🐍
util.py
Python
718L · 28.1 KB
│ ├─
🐍
__init__.py
Python
0 B
│ └─
📄
requirements.txt
Text
3L · 47 B
├─
📝
SKILL.md
Markdown
193L · 12.5 KB
├─
📋
_meta.json
JSON
10L · 173 B
└─
📝
skill-card.md
Markdown
60L · 2.8 KB
Security positives
代码行为与 SKILL.md 文档声明完全一致,无阴影功能
使用 AgentContextUtil 实现工作区隔离,防止跨目录数据污染
get_db_path() 强制将数据库路径重定向到工作区共享 data 目录
视频文件验证机制(格式、大小限制),防止滥用
无 base64 编码、eval、shell 管道等危险模式
不访问 ~/.ssh、~/.aws、.env 等敏感路径
所有外部网络请求指向 lifeemergence.com 合法 API 服务
未发现 C2 通信、反向 shell 或凭证收割行为
subprocess 调用代码已全部注释,无实际执行风险