Im Januar 2026 gab OpenClaw CVE-2026-25253 bekannt — eine Remote-Code-Execution-Schwachstelle, durch die über 135.000 öffentlich zugängliche Instanzen aufgrund lockerer Standardkonfigurationen gefährdet waren. Wenn Ihre OpenClaw-Bereitstellung (egal ob npm, Docker oder VPS) noch keine Sicherheits-Baseline-Audit bestanden hat, ist jetzt der Zeitpunkt zum Härten. Dieser Artikel behandelt den Incident-Recap, drei bereitstellungsspezifische Härtungs-Checklisten (Docker, systemd/VPS, npm global) sowie einen 5-Stufen-Response-Playbook (Detect → Backup → Upgrade → Verify → 72h Monitoring), um Ihren Agent von "läuft" zu "battle-tested" zu transformieren.
Mitte Januar 2026 veröffentlichte das OpenClaw-Sicherheitsteam CVE-2026-25253: Wenn Gateway mit Standardkonfiguration (Listening auf 0.0.0.0 ohne Authentifizierung) läuft, kann ein Angreifer über ein präpariertes WebSocket-Handshake Remote Code Execution ausführen. Shodan-Scans zeigten über 135.000 Instanzen, die ohne Authentifizierung zugänglich waren — von Privatentwicklern über kleine Teams bis hin zu Unternehmen mit falsch konfigurierten Tunnels.
Die Ursache war kein Code-Bug, sondern zu permissiveDefaults:
0.0.0.0; ohne Firewall oder Reverse-Proxy-Auth ist der Management-Port dem gesamten Internet ausgesetzt.OPENCLAW_GATEWAY_TOKEN noch TLS, sodass Klartext-Kanäle MITM-anfällig sind.openclaw onboard auf einer VPS aus und betrachten die Bereitstellung als abgeschlossen, überspringen dabei gateway.bind Anpassung und ufw-Regeln.Der Vorfall führte ab v2026.2.0 zur Änderung: Standard-bind-Adresse jetzt 127.0.0.1, Installer enthält obligatorische Sicherheits-Checks. Bestehende Instanzen benötigen jedoch manuelle Nachbesserung — dieser Artikel liefert die umsetzbare Checkliste.
Unabhängig vom Deployment-Typ müssen alle drei gleichzeitig gelten:
OPENCLAW_GATEWAY_TOKEN enthalten (≥32 Zeichen, Rotation alle 90 Tage).Wenn Sie OpenClaw via Docker / Docker Compose betreiben, prüfen Sie jeden Punkt:
| Checkliste | Sichere Konfiguration | Gefährdendes Beispiel | Behebungsbefehl / Schritt |
|---|---|---|---|
| network_mode | Custom Bridge oder Host mit eingeschränkter Port-Mapping | ports: "0.0.0.0:18789:18789" | Ändern zu 127.0.0.1:18789:18789 oder ausschließlich über Reverse Proxy |
| --read-only | Container-Rootfs read-only; Volumes explizit gelistet | read_only: true fehlt | Compose um read_only: true erweitern; ./openclaw-data:/home/node/.openclaw Volume sicherstellen |
| User & Volume-Berechtigungen | Als non-root (node:1000) laufen; Host-Volume UID/GID identisch | Container root, Host-Verz. 755 zu liberal | user: "1000:1000"; Volume-Verzeichnisse vorher chown 1000:1000 |
| Restart-Policy | unless-stopped oder on-failure:3 | Kein Restart (Container exittet nach Crash) | Self-Healing sicherstellen; mit Healthcheck kombinieren |
| OPENCLAW_GATEWAY_TOKEN | Über Environment injiziert; Länge ≥32; CLI-Konfig identisch | Leeres Token oder im Image hartgecoded | environment: OPENCLAW_GATEWAY_TOKEN=${TOKEN}; auch auf Host via openclaw config set gateway.token $TOKEN |
Danach mit docker exec <container> netstat -tlnp prüfen, dass Gateway nur auf 127.0.0.1:18789 (oder Reverse-Proxy-Port) lauscht.
Beim Betrieb als systemd-Service auf einer VPS müssen folgende Firewall- und OS-Level-Controls gesetzt werden:
sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 22/tcp # SSH sudo ufw allow 443/tcp # HTTPS (falls Reverse Proxy) sudo ufw allow 80/tcp # HTTP (optional, Redirect zu HTTPS) sudo ufw enable
sudo ufw status numbered # Es sollte keine Regel 18789/tcp als allow erscheinen
PasswordAuthentication noOpenClaw-Logs landen standardmäßig unter /tmp/openclaw/openclaw-YYYY-MM-DD.log. Logrotate konfigurieren, um Disk-Exhaustion zu verhindern:
# /etc/logrotate.d/openclaw
/tmp/openclaw/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
[Unit]
Description=OpenClaw Gateway
After=network.target
[Service]
Type=simple
User=node
Group=node
ExecStart=/usr/bin/openclaw gateway start
ExecStop=/usr/bin/openclaw gateway stop
Restart=on-failure
RestartSec=5
# Sicherheitshärtung
PrivateTmp=yes
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/home/node/.openclaw /var/log/openclaw
Environment="OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}"
# Optional: Ressourcen-Limits
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
Bei lokaler npm-Installation (häufig auf Dev-Boxen oder manuellem Ops) muss Gateway bind-Adresse zwingend angepasst werden:
# Gateway zwingend auf 127.0.0.1 binden openclaw config set gateway.bind 127.0.0.1 # Verifikation openclaw config get gateway.bind # Sollte 127.0.0.1 ausgeben
Falls externe Erreichbarkeit benötigt wird, muss ein Reverse Proxy (Nginx/Caddy) mit HTTP-Basic-Auth oder OAuth kombiniert werden:
location /openclaw/ {
proxy_pass http://127.0.0.1:18789/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# Basic Auth (Beispiel)
auth_basic "OpenClaw Admin";
auth_basic_user_file /etc/nginx/.htpasswd;
# Oder OAuth2-Proxy-Integration
openclaw --version. Wenn < 2026.2.0 und Gateway internet-facing, sofort als Hochrisiko einstufen.nmap -p 18789 <your-public-ip> für Port-Erreichbarkeit.~/.openclaw/: tar -czf openclaw-backup-$(date +%F).tar.gz ~/.openclawopenclaw gateway export > gateway-state.jsonnpm update -g openclaw oder docker pull openclaw/openclaw:latestgateway.bind auf 127.0.0.1 zurücksetzen; bei Reverse Proxy TLS+Auth aktiv prüfen.openclaw gateway token rotate; alle CLI-Instanzen und CI-Env-Vars updaten.openclaw gateway restartopenclaw gateway status sollte "healthy" anzeigen.openclaw logs --follow | grep -i errorFühren Sie diese 5 Punkte monatlich aus, um sicherzustellen, dass OpenClaw nicht durch Config-Drift oder veraltete Version erneut exponiert wird:
| Kategorie | Check-Befehl / Aktion | Bestanden-Kriterium | Nicht bestanden → Remediation |
|---|---|---|---|
| Ports | ss -tlnp | grep 18789 | Listen-Adresse = 127.0.0.1 | openclaw config set gateway.bind 127.0.0.1 + Restart |
| Auth | openclaw config get gateway.token (Länge & Alter) | Token ≥32 Zeichen, Rotation <90 Tage | openclaw gateway token rotate; alle Abhängigkeiten updaten |
| Logs | du -sh /tmp/openclaw/ & Logrotate-Status | Logdir <500MB, Logrotate aktiv | Logrotate-Konfig anpassen, alte Logs löschen |
| Updates | openclaw --version vs Latest Release | Version ≥ 2026.2.0 (aktuell stable) | npm update -g openclaw oder docker pull |
| Backups | Prüfen ~/.openclaw/backup/ auf Archive <7 Tage alt | Vollständiges Backup innerhalb letzte 7 Tage | openclaw backup sofort ausführen |
openclaw/openclaw:latest, :2026.3.13, :stable.Viele Teams verfolgen während PoC oder temporärer Deployments eine "just-get-it-running"-Mentalität und überspringen Firewall-Konfiguration, Token-Rotation und Logrotation. Das mag auf einem Dev-System 15 Minuten sparen, birgt aber in Produktion drei fatale Risiken:
Sicherheitshärtung ist Schritt eins, kein Afterthought. Für produktive OpenClaw-Workloads, die Stabilität und Langlebigkeit erfordern, bietet MACCOME's Managed Offering alle Baselines out-of-the-box (automatische Token-Rotation, Firewall-Whitelisting, 24/7-Intrusion-Monitoring) — nutzbar ohne Self-Hosting-Overhead. Wenn Sie Self-Hosting wählen, auditieren Sie jeden Punkt dieser Checkliste und dokumentieren Sie die Ergebnisse im Team-Ops-Manual.
Häufig gestellte Fragen
Ich nutze OpenClaw v2026.1.0 — bin ich von CVE-2026-25253 betroffen?
Betroffene Versionen sind <2026.2.0, aber Ausnutzung nur möglich, wenn Gateway direkt öffentlich erreichbar ist (kein Reverse Proxy oder Firewall). Selbst wenn Version betroffen: bind auf 127.0.0.1 oder kontrollierter Tunnel reduziert Risiko erheblich. Upgrade und bind-Härtung dennoch empfohlen.
Ich habe bereits read_only: true in Docker Compose gesetzt — ist eine Firewall dann noch nötig?
Ja. read_only verhindert Änderungen innerhalb des Containers, aber der Gateway-Port könnte immer noch extern erreichbar sein. Vollständige Härtung erfordert: read-only + bind 127.0.0.1 + Reverse-Proxy-Auth.
Führt Token-Rotation zu Verbindungsabbrüchen bestehender Kanäle (Telegram/Slack)?
Ja. Gateway-Token ist das CLI↔Gateway-Credential; nach Rotation müssen alle CLI/Agents neu gepaart werden. Channel-Level-Tokens (z.B. Telegram-Bot-Token) sind nicht betroffen.
Was, wenn Production externe Dienstbereitstellung zwingend erfordert? Wie Least Privilege umsetzen?
Least Privilege = (Gateway nur localhost) + (Reverse-Proxy erzwingt TLS+Auth) + (Quell-IP-Whitelist sofern möglich). Proxy-Layer (Nginx/Caddy/Traefik) sollte in separatem Container oder Edge-Node laufen und nur authentifizierte Requests an 127.0.0.1:18789 forwarden.
Wie prüfe ich, ob meine Instanz bereits kompromittiert wurde?
Auf Spuren prüfen: 1) Unbekannte CLI-Tokens in openclaw config list; 2) Verbindungslogs mit fremden IPs in ~/.openclaw/logs/; 3) Verdächtige Kind-Prozesse (curl/wget ausgehend). Bei Fund: sofort isolieren, backupen und neu aufsetzen.