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 10 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
未声明的数据库操作 +10
使用 SQLite 本地数据库存储用户信息,未在 SKILL.md 中声明 database:WRITE
阴影功能残留 +10
AgentSkill.ai_chat() 包含被注释的 subprocess.run() 调用 openclaw agent
环境变量访问 +5
读取 OPENCLAW_SENDER_OPEN_ID, OPENCLAW_SENDER_USERNAME 等身份相关环境变量
Most important evidence
Medium Doc Mismatch
AgentSkill.ai_chat() 包含被注释的可疑 subprocess 代码
skills/smyx_common/scripts/skill.py 第35-41行包含被注释的 subprocess.run() 调用,可执行 'openclaw agent' 命令。虽然当前被注释,但代码逻辑完整存在,属于阴影功能残留。
skills/smyx_common/scripts/skill.py:35 删除此段被注释的可疑代码,或添加明确的安全注释说明为何保留
Medium Priv Escalation
未声明的数据库操作
技能使用 SQLite 本地数据库创建 sys_user 表并执行 CRUD 操作,但在 SKILL.md 中未声明 database:WRITE 权限。数据库存储在 workspace/data/ 目录。
skills/smyx_common/scripts/dao.py:56 在 SKILL.md 中明确声明 database:WRITE 能力,说明用于本地用户身份管理
Low Sensitive Access
读取身份相关环境变量
skills/smyx_common/scripts/config.py 第85-89行读取 OPENCLAW_SENDER_OPEN_ID, OPENCLAW_SENDER_USERNAME, FEISHU_OPEN_ID 等身份相关环境变量。
skills/smyx_common/scripts/config.py:85 确认这些环境变量的访问范围和使用目的,符合 SKILL.md 中声明的'系统内部自动处理身份'
Declared capability vs actual capability
Filesystem Pass
Declared READ
→ Inferred READ
SKILL.md:198 - 声明读取本地图像/视频 Network Pass
Declared READ
→ Inferred READ
skills/smyx_common/scripts/util.py:290 - 调用外部 API Database Block
Declared NONE
→ Inferred WRITE
skills/smyx_common/scripts/dao.py:56 - SQLite 数据库创建和 CRUD 操作 Environment Block
Declared NONE
→ Inferred READ
skills/smyx_common/scripts/config.py:85 - 读取 OPENCLAW_SENDER_OPEN_ID Shell Pass
Declared NONE
→ Inferred NONE
skills/smyx_common/scripts/skill.py:35 - subprocess 调用被注释
Suspicious artifacts and egress
Medium External URL
https://lifeemergence.com/sample.html SKILL.md:38
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 |
| pydash | 8.0.6 | pip | No | 有版本锁定 |
| SQLAlchemy | 2.0.46 | pip | No | 有版本锁定 |
| yaml | 6.0.3 | pip | No | 有版本锁定 |
File composition
29 files · 2681 lines Python 18 files · 2360 linesMarkdown 3 files · 286 linesYAML 6 files · 29 linesText 2 files · 6 lines
Files of concern · 4
skills/smyx_common/scripts/config.py Python · 399 lines
读取身份相关环境变量
skills/smyx_common/scripts/dao.py Python · 499 lines
未声明的数据库操作
SKILL.md Markdown · 247 lines
https://lifeemergence.com/sample.html
skills/smyx_common/scripts/skill.py Python · 85 lines
AgentSkill.ai_chat() 包含被注释的可疑 subprocess 代码
Other files · util.py · skill.py · smyx_analysis.py · smyx_plant_nutrient_diagnosis_analysis.py · api_service.py · api_service.py +2
29 files · 110.4 KB · 2681 lines
Python 18f · 2360LMarkdown 3f · 286LYAML 6f · 29LText 2f · 6L
├─
▾
📁
references
│ └─
📝
api_doc.md
Markdown
20L · 681 B
├─
▾
📁
scripts
│ ├─
🐍
__init__.py
Python
1L · 63 B
│ ├─
🐍
config.py
Python
24L · 680 B
│ ├─
📋
config.yaml
YAML
1L · 3 B
│ ├─
🐍
skill.py
Python
23L · 576 B
│ └─
🐍
smyx_plant_nutrient_diagnosis_analysis.py
Python
99L · 3.4 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
247L · 15.7 KB
Security positives
核心功能(植物缺素症视觉诊断)实现清晰,与声明一致
依赖包有版本锁定(pydash==8.0.6, SQLAlchemy==2.0.46, yaml==6.0.3)
subprocess 调用代码被注释,不影响当前运行
数据库操作强制重定向到工作区共享 data 目录,不会污染其他目录
使用 SQLAlchemy ORM 而非裸 SQL,降低注入风险