Scan Report
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.
Use with caution
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.
Attack Chain 6 steps
⬡
Escalation Skill presents as read-only monitoring tool in SKILL.md
SKILL.md:1◎
Entry User runs monitor.py to check plugin updates
scripts/monitor.py:2300⬡
Escalation Code accesses /root/.openclaw/workspace/ for registry and plugin information
scripts/monitor.py:45⬡
Escalation DiffAnalyzer clones Git repos and runs git commands via subprocess
scripts/diff_analyzer.py:75⬡
Escalation FixApplier.apply_fix() applies patches to adapter files via subprocess
scripts/adapter_auto_fix.py:760◉
Impact Files in /root/.openclaw/workspace/integration/adapter/ modified without clear user consent
scripts/adapter_auto_fix.py:771Findings 5 items
| Severity | Finding | Location |
|---|---|---|
| High | Documentation mismatch - file modification not declared Doc Mismatch | SKILL.md:1 |
| High | Undeclared shell execution via patch command RCE | scripts/adapter_auto_fix.py:760 |
| Medium | Script generation capability not documented Doc Mismatch | scripts/monitor.py:1650 |
| Low | Hardcoded placeholder password Sensitive Access | scripts/email_sender.py:47 |
| Low | Environment variable access for credentials Credential Theft | scripts/email_sender.py:37 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | READ | WRITE | ✗ Violation | adapter_auto_fix.py:771 uses subprocess.run(['patch', ...]) to modify adapter fi… |
| Shell | READ | WRITE | ✗ Violation | monitor.py:28 uses subprocess.run for 'clawhub' commands; adapter_auto_fix.py:76… |
| Network | READ | READ | ✓ Aligned | Uses network only for version checking via clawhub CLI |
| Environment | NONE | READ | ✗ Violation | email_sender.py:37-38 reads EVOLUTION_WATCHER_SENDER_EMAIL/PASSWORD |
1 High 3 findings
High API Key 疑似硬编码凭证
password = "your-app-password" scripts/email_sender.py:47 Info Email 邮箱地址
[email protected] scripts/email_sender.py:25 Info Email 邮箱地址
[email protected] scripts/email_sender.py:44 File Tree
36 files · 294.4 KB · 7784 lines 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
Dependencies 2 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
pyyaml | unpinned | import yaml | No | Used for fix_templates.yaml parsing |
markdown | unpinned | import markdown | No | Optional dependency for email formatting |
Security Positives
✓ 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)