OpenClaw Sicherheitshärtung & Vulnerability-Response 2026: CVE-2026-25253 Fallstudie, Firewall-Regeln, Minimal-Privilege-Deployment

≈ 13 Min. Lesezeit · MACCOME

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.

CVE-2026-25253 Incident-Recap: Warum 135.000 Instanzen exponiert waren

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:

  • Gateway default bind-Adresse ist 0.0.0.0; ohne Firewall oder Reverse-Proxy-Auth ist der Management-Port dem gesamten Internet ausgesetzt.
  • Frühe Installer erzwingen weder OPENCLAW_GATEWAY_TOKEN noch TLS, sodass Klartext-Kanäle MITM-anfällig sind.
  • Viele Nutzer führen 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.

Drei Kern-Sicherheitsprinzipien (Nicht verhandelbar)

Unabhängig vom Deployment-Typ müssen alle drei gleichzeitig gelten:

  1. Niemals Gateway direkt ins Internet exponieren: bind nur auf Loopback (127.0.0.1) oder private IP. Zugriff muss über Reverse Proxy (Nginx/Caddy) oder Tunnel (Cloudflare Tunnel) mit verpflichtender Authentifizierung an der Edge laufen.
  2. Starke Authentifizierung erzwingen: Jede Anfrage an Gateway muss gültiges OPENCLAW_GATEWAY_TOKEN enthalten (≥32 Zeichen, Rotation alle 90 Tage).
  3. Minimale Angriffsfläche: Host öffnet nur essentielle Ports (SSH 22, HTTPS 443). Gateway-interner Port (Standard 18789) darf niemals auf 0.0.0.0 lauschen.

Docker-Deployment-Sicherheitscheckliste

Wenn Sie OpenClaw via Docker / Docker Compose betreiben, prüfen Sie jeden Punkt:

ChecklisteSichere KonfigurationGefährdendes BeispielBehebungsbefehl / Schritt
network_modeCustom Bridge oder Host mit eingeschränkter Port-Mappingports: "0.0.0.0:18789:18789"Ändern zu 127.0.0.1:18789:18789 oder ausschließlich über Reverse Proxy
--read-onlyContainer-Rootfs read-only; Volumes explizit gelistetread_only: true fehltCompose um read_only: true erweitern; ./openclaw-data:/home/node/.openclaw Volume sicherstellen
User & Volume-BerechtigungenAls non-root (node:1000) laufen; Host-Volume UID/GID identischContainer root, Host-Verz. 755 zu liberaluser: "1000:1000"; Volume-Verzeichnisse vorher chown 1000:1000
Restart-Policyunless-stopped oder on-failure:3Kein Restart (Container exittet nach Crash)Self-Healing sicherstellen; mit Healthcheck kombinieren
OPENCLAW_GATEWAY_TOKENÜber Environment injiziert; Länge ≥32; CLI-Konfig identischLeeres Token oder im Image hartgecodedenvironment: 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.

systemd / VPS (Ubuntu 24.04) Härtungscheckliste

Beim Betrieb als systemd-Service auf einer VPS müssen folgende Firewall- und OS-Level-Controls gesetzt werden:

4.1 Firewall-Regeln (ufw)

  1. Standardmäßig incoming verweigern, nur notwendige Ports erlauben:
bash
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
  1. Prüfen, dass Gateway-Port (18789) nicht öffentlich erreichbar ist:
bash
sudo ufw status numbered
# Es sollte keine Regel 18789/tcp als allow erscheinen

4.2 sshd-Härtung

  • Passwort-Auth deaktivieren, nur Key erlauben: PasswordAuthentication no
  • Standardport ändern (nicht 22) oder Quell-IPs in Firewall einschränken
  • fail2ban installieren, um Brute-Force zu dämmen (empfohlen)

4.3 Logrotation

OpenClaw-Logs landen standardmäßig unter /tmp/openclaw/openclaw-YYYY-MM-DD.log. Logrotate konfigurieren, um Disk-Exhaustion zu verhindern:

bash
# /etc/logrotate.d/openclaw
/tmp/openclaw/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

4.4 Gehärtete systemd-Unit-Beispiel

ini
[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

npm-Global-Install-Sicherheitseinstellungen

Bei lokaler npm-Installation (häufig auf Dev-Boxen oder manuellem Ops) muss Gateway bind-Adresse zwingend angepasst werden:

bash
# 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:

nginx
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

Vulnerability-Response-Playbook: 5-Stufen (Detect → 72h Monitoring)

  1. Stufe 1 — Detection & Impact-Assessment:
    • Version prüfen: openclaw --version. Wenn < 2026.2.0 und Gateway internet-facing, sofort als Hochrisiko einstufen.
    • Exposure scannen: nmap -p 18789 <your-public-ip> für Port-Erreichbarkeit.
  2. Stufe 2 — Config & Data-Backup:
    • Komplettbackup ~/.openclaw/: tar -czf openclaw-backup-$(date +%F).tar.gz ~/.openclaw
    • Gateway-Zustand exportieren (Pairs, Channels, Tokens): openclaw gateway export > gateway-state.json
  3. Stufe 3 — Upgrade & Härtung:
    • CLI-Upgrade: npm update -g openclaw oder docker pull openclaw/openclaw:latest
    • gateway.bind auf 127.0.0.1 zurücksetzen; bei Reverse Proxy TLS+Auth aktiv prüfen.
    • Token-Rotation: openclaw gateway token rotate; alle CLI-Instanzen und CI-Env-Vars updaten.
  4. Stufe 4 — Connectivity-Verification:
    • Gateway restart: openclaw gateway restart
    • Lokaler Health: openclaw gateway status sollte "healthy" anzeigen.
    • Externer Zugriffstest: von einem anderen Rechner aus Versuch – sollte entweder vom Proxy blockiert oder 401/403 liefern.
  5. Stufe 5 — 72h-Monitoring-Window:
    • Logs auf Anomalien: openclaw logs --follow | grep -i error
    • Alle Channels (Telegram/Slack) normal, kein Pairing-Loss prüfen.
    • Nach 72h clean: Härtungsschritte im Runbook dokumentieren und nächste Token-Rotation planen.

Security-Baseline-Selbstcheckliste (Ports / Auth / Logs / Updates / Backups)

Führen Sie diese 5 Punkte monatlich aus, um sicherzustellen, dass OpenClaw nicht durch Config-Drift oder veraltete Version erneut exponiert wird:

KategorieCheck-Befehl / AktionBestanden-KriteriumNicht bestanden → Remediation
Portsss -tlnp | grep 18789Listen-Adresse = 127.0.0.1openclaw config set gateway.bind 127.0.0.1 + Restart
Authopenclaw config get gateway.token (Länge & Alter)Token ≥32 Zeichen, Rotation <90 Tageopenclaw gateway token rotate; alle Abhängigkeiten updaten
Logsdu -sh /tmp/openclaw/ & Logrotate-StatusLogdir <500MB, Logrotate aktivLogrotate-Konfig anpassen, alte Logs löschen
Updatesopenclaw --version vs Latest ReleaseVersion ≥ 2026.2.0 (aktuell stable)npm update -g openclaw oder docker pull
BackupsPrüfen ~/.openclaw/backup/ auf Archive <7 Tage altVollständiges Backup innerhalb letzte 7 Tageopenclaw backup sofort ausführen

Technische Referenzen

  • CVE-2026-25253 offizielles Advisory: GHSA-2026-25253 (Betroffene Versionen: <2026.2.0, CVSS 9.8 kritisch).
  • OpenClaw Gateway Standardport: 18789 (Control UI teilt sich Port, nur localhost).
  • Ab v2026.2.0 Standard bind auf 127.0.0.1 geändert (localhost + Docker Bridge weiterhin erlaubt, öffentlich nicht).
  • Offizielle Docker-Image-Tags: openclaw/openclaw:latest, :2026.3.13, :stable.

Warum "es läuft" im Production nicht ausreicht

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:

  • Angriffsflächen-Exposition: Ein aus dem öffentlichen Netz erreichbares Gateway ist eine offene Tür. CVE-2026-25253 ist nur die bekannte Schwachstelle; Zero-Days oder zukünftige Bugs werden denselben Pfad ausnutzen.
  • Compliance-Verstoß: Enterprise-Audits verlangen, dass alle externen Services Authentifizierung und Least-Privilege-Review durchlaufen. Ungehärtete Instanzen bestehen SOC2 / ISO27001 nicht.
  • Irreversibler运维-Schaden: Wenn ein Backdoor platziert oder Daten manipuliert wurden, kann nachträgliche Härtung nicht garantieren, dass das System sauber ist. Einzige sichere Option: Zerstören und neu aufsetzen.

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.