Scan Report
65 /100
backup-2-github
Backup OpenClaw personalized configuration and user data to GitHub
Hardcoded default GitHub repository could silently exfiltrate user configuration data to an unintended third-party repository if token is set but repo is not configured.
Do not install this skill
Remove the hardcoded default repository 'fangbb-coder/OC-backup' and require explicit GITHUB_REPO configuration. This prevents accidental data exfiltration to an external repository.
Attack Chain 4 steps
◎
Entry User installs skill and sets GITHUB_TOKEN env var (e.g., from CI/CD or shared config)
backup.py:24⬡
Escalation User runs backup without configuring GITHUB_REPO, skill silently uses default 'fangbb-coder/OC-backup'
backup.py:27◉
Impact All user configs (USER.md, IDENTITY.md, SOUL.md, TOOLS.md, MEMORY.md, openclaw.json, cron configs) pushed to hardcoded third-party repo
backup.py:134◉
Impact Attacker (repo owner 'fangbb-coder') gains access to user's full AI persona, identity, tools, and schedule data
_clawsafe/pre-scan.jsonFindings 4 items
| Severity | Finding | Location |
|---|---|---|
| High | Hardcoded Default Repository Exposes User Data Data Exfil | backup.py:27 |
| Medium | Credentials Backup Claimed But Not Implemented Doc Mismatch | SKILL.md:24 |
| Medium | Unpinned Dependency Versions Supply Chain | requirements.txt:1 |
| Low | Undeclared Environment Variable Access Sensitive Access | backup.py:24 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | READ | READ | ✓ Aligned | Reads ~/.openclaw/workspace and ~/.openclaw paths only for backup purposes |
| Network | WRITE | WRITE | ✗ Violation | SKILL.md declares 'github' capability but backup.py silently defaults to hardcod… |
| Environment | NONE | READ | ✗ Violation | Reads GITHUB_TOKEN and GITHUB_REPO from env vars without declaring in SKILL.md |
| Shell | NONE | NONE | — | No shell execution found |
File Tree
5 files · 15.3 KB · 542 lines Python 1f · 283L
Markdown 2f · 241L
YAML 1f · 15L
Text 1f · 3L
├─
backup.py
Python
├─
README.md
Markdown
├─
requirements.txt
Text
├─
SKILL.md
Markdown
└─
skill.yaml
YAML
Dependencies 2 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
PyGithub | >=1.59.0 | pip | No | Version not pinned, uses >= constraint |
python-dotenv | >=1.0.0 | pip | No | Version not pinned, uses >= constraint |
Security Positives
✓ No shell execution (subprocess, os.system, curl|bash) — legitimate use of PyGithub API client
✓ No base64 encoding, eval, or obfuscation detected
✓ No hardcoded credentials in source code
✓ Dry-run mode allows safe preview without data transfer
✓ Uses .env file pattern for token storage (not hardcoded)
✓ Exclusion patterns prevent accidental backup of large/cached files