扫描报告
22 /100
local-self-healing-machine-learning
A fully local ML engine that learns from agent runtime history, detects errors via embeddings or regex, and autonomously evolves fix strategies with auditable GEP protocol.
A legitimate self-healing ML engine with minor documentation gaps: filesystem WRITE and shell execution are used for core functionality (git operations, code evolution, skill auto-heal) but are not explicitly declared in SKILL.md's capability section. Remote Ollama install via curl|bash is documented as an optional setup step. No actual malicious behavior observed.
可以安装
Add an explicit 'Declared Capabilities' section to SKILL.md listing filesystem:WRITE (for code evolution and skill auto-heal), shell:WRITE (for git/npm operations), and network:READ (localhost Ollama). Clarify that hardcoded test credentials in test/ are test fixtures for the sanitize module. Consider pinning dotenv version.
安全发现 7 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 中危 | Undeclared filesystem WRITE capability 文档欺骗 | src/gep/skillDistiller.js:89 |
| 中危 | Undeclared shell:WRITE capability via execSync 文档欺骗 | src/ops/self_repair.js:9 |
| 中危 | Remote script execution via curl|bash documented in SKILL.md 供应链 | SKILL.md:43 |
| 低危 | Unpinned dotenv dependency 供应链 | package.json:19 |
| 低危 | Skill auto-heal runs npm install in skills directory 权限提升 | src/ops/skills_monitor.js:67 |
| 提示 | Reads session logs from ~/.openclaw/agents/ 敏感访问 | src/evolve.js:65 |
| 提示 | SKILL.md tagline overstates 'zero network calls' 文档欺骗 | SKILL.md:17 |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 文件系统 | NONE | WRITE | ✗ 越权 | src/ops/skills_monitor.js:89 writes SKILL.md stubs; src/gep/skillDistiller.js wr… |
| 命令执行 | NONE | WRITE | ✗ 越权 | src/ops/self_repair.js:9 execSync('git rebase --abort'); src/ops/skills_monitor.… |
| 网络访问 | READ | READ | ✓ 一致 | src/ml/embeddings.js:88 POSTs to http://localhost:11434 (Ollama). Declared in SK… |
| 环境变量 | NONE | READ | ✓ 一致 | index.js:7 dotenv config; src/evolve.js:36 process.env reads for EVOLVE_STRATEGY… |
| 技能调用 | NONE | READ | ✓ 一致 | src/ops/skills_monitor.js:31 reads SKILL.md and package.json from skills directo… |
| 剪贴板 | NONE | NONE | — | No clipboard access found |
| 浏览器 | NONE | NONE | — | No browser access; dashboard serves local HTML only |
| 数据库 | NONE | NONE | — | No database access found; uses local JSON/JSONL files |
6 严重 10 项发现
严重 危险命令 危险 Shell 命令
curl -fsSL https://ollama.com/install.sh | sh SKILL.md:43 严重 API 密钥 硬编码 API 密钥
sk-abcdefghijklmnopqrstuvwxyz test/sanitize.test.js:10 严重 API 密钥 硬编码 API 密钥
ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx test/sanitize.test.js:19 严重 API 密钥 硬编码 API 密钥
gho_abcdefghijklmnopqrstuvwxyz1234567890 test/sanitize.test.js:21 严重 API 密钥 硬编码 API 密钥
AKIAIOSFODNN7EXAMPLE test/sanitize.test.js:29 严重 危险命令 危险 Shell 命令
rm -rf / test/skillDistiller.test.js:210 中危 外部 URL 外部 URL
https://mastermindshq.business SKILL.md:5 中危 外部 URL 外部 URL
https://ollama.com/install.sh SKILL.md:43 提示 邮箱 邮箱地址
[email protected] test/sanitize.test.js:57 提示 邮箱 邮箱地址
[email protected] test/sanitize.test.js:74 目录结构
71 文件 · 489.3 KB · 13151 行 JavaScript 66f · 12525L
HTML 1f · 365L
Markdown 2f · 206L
JSON 2f · 55L
├─
▾
dashboard
│ ├─
index.html
HTML
│ └─
server.js
JavaScript
├─
▾
memory
│ └─
knowledge.json
JSON
├─
▾
scripts
│ ├─
analyze_by_skill.js
JavaScript
│ ├─
extract_log.js
JavaScript
│ ├─
generate_history.js
JavaScript
│ ├─
gep_append_event.js
JavaScript
│ ├─
gep_personality_report.js
JavaScript
│ ├─
human_report.js
JavaScript
│ ├─
suggest_version.js
JavaScript
│ └─
validate-modules.js
JavaScript
├─
▾
src
│ ├─
▾
gep
│ │ ├─
a2a.js
JavaScript
│ │ ├─
a2aProtocol.js
JavaScript
│ │ ├─
analyzer.js
JavaScript
│ │ ├─
assetCallLog.js
JavaScript
│ │ ├─
assets.js
JavaScript
│ │ ├─
assetStore.js
JavaScript
│ │ ├─
bridge.js
JavaScript
│ │ ├─
candidates.js
JavaScript
│ │ ├─
contentHash.js
JavaScript
│ │ ├─
deviceId.js
JavaScript
│ │ ├─
envFingerprint.js
JavaScript
│ │ ├─
hubSearch.js
JavaScript
│ │ ├─
llmReview.js
JavaScript
│ │ ├─
memoryGraph.js
JavaScript
│ │ ├─
memoryGraphAdapter.js
JavaScript
│ │ ├─
mutation.js
JavaScript
│ │ ├─
narrativeMemory.js
JavaScript
│ │ ├─
paths.js
JavaScript
│ │ ├─
personality.js
JavaScript
│ │ ├─
prompt.js
JavaScript
│ │ ├─
questionGenerator.js
JavaScript
│ │ ├─
reflection.js
JavaScript
│ │ ├─
sanitize.js
JavaScript
│ │ ├─
selector.js
JavaScript
│ │ ├─
signals.js
JavaScript
│ │ ├─
skillDistiller.js
JavaScript
│ │ ├─
solidify.js
JavaScript
│ │ ├─
strategy.js
JavaScript
│ │ ├─
taskReceiver.js
JavaScript
│ │ └─
validationReport.js
JavaScript
│ ├─
▾
ml
│ │ ├─
embeddings.js
JavaScript
│ │ ├─
errorClassifier.js
JavaScript
│ │ ├─
feedbackLoop.js
JavaScript
│ │ ├─
knowledgeBase.js
JavaScript
│ │ ├─
predictor.js
JavaScript
│ │ └─
trainer.js
JavaScript
│ ├─
▾
ops
│ │ ├─
cleanup.js
JavaScript
│ │ ├─
commentary.js
JavaScript
│ │ ├─
index.js
JavaScript
│ │ ├─
innovation.js
JavaScript
│ │ ├─
self_repair.js
JavaScript
│ │ ├─
skills_monitor.js
JavaScript
│ │ └─
trigger.js
JavaScript
│ └─
evolve.js
JavaScript
├─
▾
test
│ ├─
contentHash.test.js
JavaScript
│ ├─
embeddings.test.js
JavaScript
│ ├─
feedbackLoop.test.js
JavaScript
│ ├─
knowledgeBase.test.js
JavaScript
│ ├─
mutation.test.js
JavaScript
│ ├─
predictor.test.js
JavaScript
│ ├─
sanitize.test.js
JavaScript
│ ├─
selector.test.js
JavaScript
│ ├─
signals.test.js
JavaScript
│ ├─
skillDistiller.test.js
JavaScript
│ ├─
strategy.test.js
JavaScript
│ └─
validationReport.test.js
JavaScript
├─
index.js
JavaScript
├─
package.json
JSON
├─
SECURITY.md
Markdown
└─
SKILL.md
Markdown
依赖分析 1 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
dotenv | ^16.4.7 | npm | 否 | Version not pinned (uses caret range) |
安全亮点
✓ No actual credential theft or data exfiltration observed — sanitize.js actively redacts API keys, tokens, emails, and private keys from capsule payloads before any potential broadcast
✓ Comprehensive safety mechanisms: blast radius limits, ethics committee, circuit breakers, rollback on failure, LLM review gate before skill distillation
✓ Auto-update is disabled by default and requires explicit opt-in via openclaw.json — supply chain risk is acknowledged and mitigated
✓ Skill distiller strips dangerous validation commands (rm -rf /, shell expansions) before execution — rm -rf / in tests is a test case for this safety feature, not a live vulnerability
✓ Hardcoded API keys in test/sanitize.test.js are clearly fake test fixtures (sk-abcdefgh..., ghp_xxx..., AKIAIOSFODNN7EXAMPLE) used for regression testing of the redactString function
✓ Hub search, task receiver, and A2A HTTP transport are all stubbed out — local-only build confirmed by code
✓ Device ID is a randomly generated UUID stored locally, not a hardware fingerprint
✓ Environment fingerprint collects only node version, platform, and arch — no MAC addresses, hostnames, or hardware identifiers
✓ Session scope isolation prevents cross-channel/cross-project memory contamination via EVOLVER_SESSION_SCOPE
✓ EVOLVE_ALLOW_SELF_MODIFY is off by default with explicit warning 'Not recommended'
✓ No base64-encoded execution, no eval(), no obfuscation, no anti-analysis techniques