扫描报告
45 /100
evolution-watcher
Plugin update monitoring and adaptation tool for star architecture
Skill declares read-only monitoring but contains file modification capabilities (patch application) through subprocess that contradict stated security claims.
谨慎使用
Review and either remove the patch application functionality or clearly declare write/shell capabilities in SKILL.md. Consider if the FixApplier is necessary for the stated monitoring use case.
攻击链 6 步
⬡
提权 Skill presents as read-only monitoring tool in SKILL.md
SKILL.md:1◎
入口 User runs monitor.py to check plugin updates
scripts/monitor.py:2300⬡
提权 Code accesses /root/.openclaw/workspace/ for registry and plugin information
scripts/monitor.py:45⬡
提权 DiffAnalyzer clones Git repos and runs git commands via subprocess
scripts/diff_analyzer.py:75⬡
提权 FixApplier.apply_fix() applies patches to adapter files via subprocess
scripts/adapter_auto_fix.py:760◉
影响 Files in /root/.openclaw/workspace/integration/adapter/ modified without clear user consent
scripts/adapter_auto_fix.py:771安全发现 5 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 高危 | Documentation mismatch - file modification not declared 文档欺骗 | SKILL.md:1 |
| 高危 | Undeclared shell execution via patch command 代码执行 | scripts/adapter_auto_fix.py:760 |
| 中危 | Script generation capability not documented 文档欺骗 | scripts/monitor.py:1650 |
| 低危 | Hardcoded placeholder password 敏感访问 | scripts/email_sender.py:47 |
| 低危 | Environment variable access for credentials 凭证窃取 | scripts/email_sender.py:37 |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 文件系统 | READ | WRITE | ✗ 越权 | adapter_auto_fix.py:771 uses subprocess.run(['patch', ...]) to modify adapter fi… |
| 命令执行 | READ | WRITE | ✗ 越权 | monitor.py:28 uses subprocess.run for 'clawhub' commands; adapter_auto_fix.py:76… |
| 网络访问 | READ | READ | ✓ 一致 | Uses network only for version checking via clawhub CLI |
| 环境变量 | NONE | READ | ✗ 越权 | email_sender.py:37-38 reads EVOLUTION_WATCHER_SENDER_EMAIL/PASSWORD |
1 高危 3 项发现
高危 API 密钥 疑似硬编码凭证
password = "your-app-password" scripts/email_sender.py:47 提示 邮箱 邮箱地址
[email protected] scripts/email_sender.py:25 提示 邮箱 邮箱地址
[email protected] scripts/email_sender.py:44 目录结构
36 文件 · 294.4 KB · 7784 行 Python 6f · 5165L
JSON 3f · 1262L
Markdown 26f · 1139L
YAML 1f · 218L
├─
▾
config
│ ├─
fix_templates.yaml
YAML
│ └─
monitor_sources.json
JSON
├─
▾
reports
│ ├─
summary.json
JSON
│ ├─
updates_20260317_222549.md
Markdown
│ ├─
updates_20260317_222850.md
Markdown
│ ├─
updates_20260317_235919.md
Markdown
│ ├─
updates_20260318_001141.md
Markdown
│ ├─
updates_20260318_001912.md
Markdown
│ ├─
updates_20260318_003257.md
Markdown
│ ├─
updates_20260318_005713.md
Markdown
│ ├─
updates_20260318_010915.md
Markdown
│ ├─
updates_20260318_014522.md
Markdown
│ ├─
updates_20260318_015842.md
Markdown
│ ├─
updates_20260318_021254.md
Markdown
│ ├─
updates_20260318_021408.md
Markdown
│ ├─
updates_20260318_024436.md
Markdown
│ ├─
updates_20260318_065840.md
Markdown
│ ├─
updates_20260318_071011.md
Markdown
│ ├─
updates_20260318_074256.md
Markdown
│ ├─
updates_20260318_103409.md
Markdown
│ ├─
updates_20260318_142158.md
Markdown
│ ├─
updates_20260318_143336.md
Markdown
│ ├─
updates_20260318_162350.md
Markdown
│ ├─
updates_20260318_172351.md
Markdown
│ ├─
updates_20260318_182333.md
Markdown
│ ├─
updates_20260318_192605.md
Markdown
│ ├─
updates_20260319_062644.md
Markdown
│ ├─
updates_20260319_071143.md
Markdown
│ └─
updates_log.json
JSON
├─
▾
scripts
│ ├─
adapter_auto_fix.py
Python
│ ├─
diff_analyzer.py
Python
│ ├─
email_sender.py
Python
│ ├─
monitor.py
Python
│ └─
test_end_to_end.py
Python
├─
SKILL.md
Markdown
└─
test_b4.py
Python
依赖分析 2 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
pyyaml | unpinned | import yaml | 否 | Used for fix_templates.yaml parsing |
markdown | unpinned | import markdown | 否 | Optional dependency for email formatting |
安全亮点
✓ Skill includes backup functionality before applying patches (sandbox_validate creates temp copies)
✓ Includes health check verification after fix application
✓ Dry-run mode available in UpgradeScriptGenerator
✓ Reports are generated for human review before execution
✓ Authorization flow mentioned for fix application (apply_fix requires 'authorized' parameter)