Scan Report
25 /100
openclaw-backup-restore
Backup, restore, validate, and GitHub-sync OpenClaw workspace state files with versioning, rollback, and off-machine recovery
Legitimate backup/restore skill with well-designed sanitization, but SKILL.md fails to declare its use of git operations (shell:WRITE equivalent) and network access, creating a doc-to-code mismatch.
Safe to install
Add an 'allowed-tools' declaration and a 'Security Notes' section to SKILL.md explicitly listing git operations and the backup repo sync feature. This will close the doc deception gap without requiring any code changes.
Findings 3 items
| Severity | Finding | Location |
|---|---|---|
| Medium | Git sync feature completely absent from SKILL.md Doc Mismatch | SKILL.md:48 |
| Low | No allowed-tools declaration in SKILL.md Priv Escalation | SKILL.md:1 |
| Low | openclaw.json access not prominently flagged Sensitive Access | SKILL.md:17 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | NONE | WRITE | ✗ Violation | backup.mjs:109 copies workspace files to backup dir; restore.mjs:139 writes file… |
| Network | NONE | READ | ✗ Violation | backup-and-push.mjs:44 git remote get-url; lines 46-55 git clone/fetch/pull/push |
| Shell | NONE | WRITE | ✗ Violation | backup-and-push.mjs:35-37 spawnSync('git', [...]) — git add/commit/push are shel… |
| Environment | NONE | READ | ✗ Violation | backup.mjs:28 OPENCLAW_BACKUP_DIR; restore.mjs:21, list.mjs:18, validate.mjs:18 … |
| Skill Invoke | NONE | NONE | — | No inter-skill invocation observed |
1 Critical 12 findings
Critical Dangerous Command 危险 Shell 命令
curl | bash FINAL-DELIVERY-REPORT.md:168 Medium External URL 外部 URL
https://keepachangelog.com/en/1.0.0/ CHANGELOG.md:5 Medium External URL 外部 URL
https://semver.org/spec/v2.0.0.html CHANGELOG.md:6 Medium External URL 外部 URL
https://discord.com/invite/clawd CONTRIBUTING.md:58 Medium External URL 外部 URL
https://docs.openclaw.ai QUICKSTART.md:155 Medium External URL 外部 URL
https://img.shields.io/badge/License-MIT-yellow.svg README.md:5 Medium External URL 外部 URL
https://opensource.org/licenses/MIT README.md:5 Medium External URL 外部 URL
https://img.shields.io/badge/node-%3E%3D18-brightgreen README.md:6 Medium External URL 外部 URL
https://nodejs.org/ README.md:6 Medium External URL 外部 URL
https://clawhub.ai/skills/openclaw-workspace-backup-restore README.md:305 Medium External URL 外部 URL
https://clawhub.com README.md:320 Medium External URL 外部 URL
https://clawlite.ai README.md:321 File Tree
25 files · 128.5 KB · 4648 lines Markdown 14f · 3369L
JavaScript 6f · 1162L
JSON 2f · 59L
Shell 3f · 58L
├─
▾
examples
│ ├─
automated-backup.sh
Shell
│ ├─
basic-backup.sh
Shell
│ └─
pre-deployment-hook.sh
Shell
├─
▾
scripts
│ ├─
backup-and-push.mjs
JavaScript
│ ├─
backup.mjs
JavaScript
│ ├─
list.mjs
JavaScript
│ ├─
restore.mjs
JavaScript
│ └─
validate.mjs
JavaScript
├─
▾
tests
│ └─
test.mjs
JavaScript
├─
_meta.json
JSON
├─
CHANGELOG.md
Markdown
├─
CONTRIBUTING.md
Markdown
├─
DELIVERY_REPORT.md
Markdown
├─
EXAMPLES.md
Markdown
├─
FEATURE_DEFINITION.md
Markdown
├─
FINAL-DELIVERY-REPORT.md
Markdown
├─
P0-1-DELIVERY-REPORT.md
Markdown
├─
P0-2-DELIVERY-REPORT.md
Markdown
├─
package.json
JSON
├─
QUICKSTART.md
Markdown
├─
README.md
Markdown
├─
RELEASE_CHECKLIST.md
Markdown
├─
RELEASE-CHECKLIST.md
Markdown
├─
RUNBOOK.md
Markdown
└─
SKILL.md
Markdown
Dependencies 1 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
none (Node.js built-ins only) | N/A | stdlib | No | Uses only: fs, path, crypto, os, child_process, util — no external packages |
Security Positives
✓ No external npm dependencies — only uses Node.js built-in modules (fs, path, crypto, os, child_process), eliminating supply chain risk
✓ Sensitive field sanitization is well-implemented: openclaw.json keys matching /token|key|secret|password|apikey|api_key|auth|credential|bearer/i are replaced with '[REDACTED]'
✓ Pre-restore safety backup: every restore operation automatically creates a pre-restore backup before modifying workspace files
✓ SHA-256 hash verification in manifest prevents silent backup corruption
✓ No base64-encoded payloads, no eval(), no obfuscated code — all scripts are plain, readable JavaScript
✓ Dry-run mode for restore prevents accidental data loss
✓ No credential harvesting or exfiltration: git operations target user-specified remotes only
✓ Backups stored under user-controlled paths (OPENCLAW_BACKUP_DIR env var override supported)
✓ The 'curl | bash' pre-scan IOC is a false positive — it appears only as documentation text in FINAL-DELIVERY-REPORT.md discussing ClawLite's installer, not as executed code