Files

66 lines
2.1 KiB
Markdown

# Security Policy
## Threat Model (Summary)
- This dashboard reads local OpenClaw runtime data from `~/.openclaw/...`.
- Some operations can trigger local hooks and update workflows.
- Secrets and provider admin keys must remain opt-in and least-privilege.
## Secure Defaults
- `OPENCLAW_LOAD_KEYS_ENV=0` (disabled by default)
- `OPENCLAW_ENABLE_PROVIDER_AUDIT=0`
- `OPENCLAW_ENABLE_CONFIG_ENDPOINT=0`
- `OPENCLAW_ALLOW_ATTACHMENT_FILEPATH_COPY=0`
- `OPENCLAW_ALLOW_ATTACHMENT_COPY_FROM_TMP=0`
- `OPENCLAW_ALLOW_ATTACHMENT_COPY_FROM_WORKSPACE=0`
- `OPENCLAW_ALLOW_ATTACHMENT_COPY_FROM_OPENCLAW_HOME=0`
- `OPENCLAW_ENABLE_SYSTEMCTL_RESTART=0`
- `OPENCLAW_ENABLE_MUTATING_OPS=0`
- `DASHBOARD_HOST=127.0.0.1`
- `DASHBOARD_CORS_ORIGINS=` (empty = loopback only, no wildcard)
Mutating operations are additionally restricted to localhost callers.
## CORS Policy
CORS is restricted by default — only loopback origins (`localhost`, `127.0.0.1`) are allowed.
To allow external origins (e.g. for Tailscale Funnel access), set:
```
DASHBOARD_CORS_ORIGINS=https://your-tailscale-hostname.ts.net
```
Multiple origins: comma-separated. Use `*` only in trusted environments.
## Command Execution
All child_process calls use `execFileSync` with argument arrays (no shell interpolation).
Zero `execSync` calls exist in the codebase. The `runCmd()` helper wraps `execFileSync` with timeout and error handling.
## File Copy (FILEPATH_COPY)
When `OPENCLAW_ALLOW_ATTACHMENT_FILEPATH_COPY=1` is set:
- Source paths must match configured allowed prefixes
- Symlinks are resolved via `realpathSync` and re-checked against allowed prefixes
- Each sub-directory (`/tmp`, workspace, `.openclaw`) requires its own explicit env flag
## VirusTotal Compliance Checklist
Before each release:
1. Generate hashes:
```bash
shasum -a 256 api-server.js agent-dashboard.html SKILL.md README.md .env.example > vt-hashes.txt
```
2. Submit hashes/files to VirusTotal.
3. Record report IDs in release notes.
4. Block release if suspicious detections are unresolved.
## Reporting a Vulnerability
Open a private security report with:
- affected version
- reproduction steps
- impact assessment
- suggested mitigation