Currently supporting:
| Version | Supported |
|---|---|
| 0.1.x | ✅ |
If you discover a security vulnerability, please report it by:
- Email: security@openclaw.ai (or create a private security advisory on GitHub)
- Do NOT open a public issue
- Include:
- Description of the vulnerability
- Steps to reproduce
- Potential impact
- Suggested fix (if any)
We will respond within 48 hours and work with you to resolve the issue.
-
Strong Passwords
- Use at least 16 characters for
ADMIN_PASSWORD - Generate with:
openssl rand -base64 24
- Use at least 16 characters for
-
Secrets
- Regenerate
AUTH_SECRETfor each instance - Generate with:
openssl rand -base64 32 - Never commit
.env.localto git
- Regenerate
-
File Permissions
- Ensure
.env.localis readable only by the app user:chmod 600 .env.local
- Lock down credentials directory:
chmod 700 ~/.openclaw/credentials
- Ensure
-
Reverse Proxy
- Always use HTTPS in production (Caddy auto-handles this)
- Configure rate limiting if exposing publicly
- Whitelist trusted IPs for admin endpoints
-
OpenClaw Gateway
- Keep gateway on loopback (127.0.0.1) if possible
- Configure
trustedProxiesif behind a reverse proxy - Review security audit output:
openclaw status
-
Never commit:
.env.local(passwords, secrets)data/*.json(operational data)data/*.db(usage metrics)- Real usernames, emails, tokens
-
Use branding config:
- Import from
src/config/branding.ts - Use environment variables
- Never hardcode personal info
- Import from
-
Dependencies:
- Run
npm auditregularly - Update dependencies:
npm update - Review Dependabot alerts
- Run
-
Code Review:
- No
eval()orFunction()with user input - Validate and sanitize all input
- Use parameterized queries (SQLite prepared statements)
- Escape user-generated content in UI
- No
- Basic password auth (no 2FA yet)
- Session tokens in cookies (httpOnly, secure in production)
- TODO: Add OAuth2 / SAML support
- Local JSON files (not encrypted at rest)
- SQLite database (not encrypted)
- TODO: Add encryption for sensitive data
- Gateway API exposed on loopback by default
- Control UI exposed via reverse proxy
- TODO: Add mTLS for gateway communication
Before deploying to production:
- Changed
ADMIN_PASSWORDfrom default - Regenerated
AUTH_SECRET - Set file permissions on
.env.local(600) - Configured HTTPS via reverse proxy
- Reviewed
openclaw statussecurity audit - Updated all npm dependencies
- Ran
npm audit fix - Configured firewall (UFW, iptables, etc.)
- Enabled fail2ban or similar (if public-facing)
- Configured backup for
data/directory - Documented incident response plan
We follow coordinated vulnerability disclosure:
- Reporter notifies us privately
- We confirm and develop a fix
- We release a patched version
- Disclosure is made public after patch is available
Thank you for helping keep Mission Control secure! 🔒