OpenClaw Security 2026Der komplette Lagebericht & Hardening-Guide
Reale CVEs, praxiserprobte Hardening-Checklisten, Netzwerk- und Container-Security, Supply-Chain-Absicherung und Incident-Response-Playbooks — alles in einem Dokument. 10 Minuten lesen, 90% sicherer als "läuft doch"-Deployments.
Status 2026 — Lagebericht
Das Hauptproblem ist selten der Code — es sind Exposition, fehlende Disziplin und unrotierte Credentials. Folgende Angriffsvektoren sind 2026 am häufigsten in freier Wildbahn anzutreffen:
Gateway/API-Ports ohne VPN-Schutz direkt im Internet.
Langlebige Keys in .env-Dateien, niemals rotiert.
Fehlende Origin-Validierung ermöglicht Remote-Control.
Ungeprüfte Dependencies mit Backdoors oder Secrets.
Tool/Browser-Kontext zur Datenexfiltration missbraucht.
Kein Logging = kein Incident-Detection = kein NIS2.
CVE & Angriffsmatrix
| Angriffsklasse | CVSS | Vektor | Mitigierung |
|---|---|---|---|
| WebSocket Hijacking | 9.1 | NETWORK | Origin-Header validieren, CSRF-Token |
| API Key Leakage | 8.6 | NETWORK | Key-Rotation, Vault-Integration |
| Remote Code Execution via Skills | 8.4 | NETWORK | Skill-Sandboxing, Dependency-Pinning |
| Prompt Injection | 7.5 | NETWORK | Input-Sanitization, Tool-Scope-Limits |
| Unauthenticated Gateway Access | 9.8 | NETWORK | mTLS, VPN, IP-Allowlist |
| Supply Chain Poisoning | 8.1 | LOCAL | SBOM-Verifizierung, Sigstore Cosign |
| Container Escape | 8.8 | LOCAL | Seccomp, AppArmor, Non-Root |
| Log Injection / Log4Shell-Style | 7.0 | NETWORK | Input-Encoding, structured logging |
Hardening Checklist (24 Items)
🌐 Netzwerk & Exposition
- ✓Private Networking (VPN/Tailscale/WireGuard) — keine Admin-Ports im Internet
- ✓IP-Allowlist für API-Gateway und Admin-UI
- ✓TLS 1.3 everywhere, HSTS aktiviert
- ✓Reverse-Proxy mit WAF (Traefik/Nginx + CrowdSec)
🔑 Auth & Secrets
- ✓API-Keys rotieren alle 90 Tage (automatisiert)
- ✓Secrets in Vault / K8s Secrets / Doppler — nie in .env committed
- ✓JWT mit kurzer Expiry (15 min Access, 7d Refresh)
- ✓MFA für alle Admin-Accounts aktiviert
⚡ WebSocket Security
- ✓Origin-Header validieren (allowlist-based)
- ✓CSRF-Token für alle WebSocket-Upgrades
- ✓Session-Binding und automatischer Reconnect-Schutz
- ✓Rate-Limiting auf WebSocket-Verbindungen
📦 Container & Dependencies
- ✓Alle Images scannen (Trivy/Grype) vor jedem Deploy
- ✓Non-Root User in allen Containern (runAsNonRoot: true)
- ✓ReadOnlyRootFilesystem aktiviert
- ✓Dependency-Pinning + SBOM generieren (Syft)
📊 Monitoring & Logging
- ✓Structured Logging (JSON) mit Korrelations-IDs
- ✓Alert auf Auth-Failures > 5/min (Prometheus/Alertmanager)
- ✓Anomalie-Erkennung auf API-Request-Patterns
- ✓Log-Retention >= 90 Tage (GDPR/NIS2-Anforderung)
🔄 Operations & Compliance
- ✓Incident-Runbook dokumentiert und geübt
- ✓Backup + Restore-Test monatlich
- ✓Audit-Log für alle privilegierten Aktionen
- ✓Quarterly Security Review mit CVE-Tracking
Netzwerk & Firewall
Der erste Schutzwall: Exposition eliminieren. Jeder öffentlich erreichbare Port, der nicht sein muss, ist ein Risiko.
# iptables Hardening für OpenClaw Host
# Alle eingehenden Verbindungen standardmäßig ablehnen
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Loopback erlauben
iptables -A INPUT -i lo -j ACCEPT
# Established connections erlauben
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SSH nur von VPN-Subnetz (anpassen!)
iptables -A INPUT -s 10.0.0.0/8 -p tcp --dport 22 -j ACCEPT
# OpenClaw API nur intern (Tailscale/WireGuard Interface)
iptables -A INPUT -i tailscale0 -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -i wg0 -p tcp --dport 8080 -j ACCEPT
# Prometheus/Grafana nur intern
iptables -A INPUT -i tailscale0 -p tcp --dport 3000 -j ACCEPT
iptables -A INPUT -i tailscale0 -p tcp --dport 9090 -j ACCEPT
# HTTPS von überall (wenn Reverse-Proxy öffentlich)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Speichern
iptables-save > /etc/iptables/rules.v4
# Tailscale ACL (JSON) — Zero-Trust Policy
# In Tailscale Admin Console > Access Controls:
# {
# "acls": [
# { "action": "accept", "src": ["group:admins"], "dst": ["tag:openclaw:8080"] },
# { "action": "accept", "src": ["group:monitoring"], "dst": ["tag:openclaw:9090"] }
# ],
# "tagOwners": { "tag:openclaw": ["group:admins"] }
# }Authentifizierung & Secrets Management
# HashiCorp Vault — Secrets Management für OpenClaw
# 1. Vault starten und initialisieren
vault server -config=/etc/vault.d/vault.hcl
# 2. OpenClaw AppRole konfigurieren
vault auth enable approle
vault write auth/approle/role/openclaw-role secret_id_ttl=24h token_ttl=1h token_max_ttl=4h policies="openclaw-policy"
# 3. Policy definieren
vault policy write openclaw-policy - <<EOF
path "secret/data/openclaw/*" {
capabilities = ["read"]
}
path "secret/data/openclaw/api-keys" {
capabilities = ["read", "list"]
}
EOF
# 4. Secrets schreiben
vault kv put secret/openclaw/api-keys openai_key="sk-..." anthropic_key="sk-ant-..." gemini_key="AIza..."
# 5. Automatic Key Rotation (alle 90 Tage)
vault write sys/policies/password/rotation-policy policy=@rotation.hcl
# rotation.hcl:
# rule "length" { min = 32 max = 64 }
# rule "charset" { charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" }
# 6. Kubernetes Vault Agent Injector
# annotations in Pod spec:
# vault.hashicorp.com/agent-inject: "true"
# vault.hashicorp.com/role: "openclaw-role"
# vault.hashicorp.com/agent-inject-secret-config: "secret/data/openclaw/api-keys"JWT Best Practices
- • Access Token: 15 Minuten TTL
- • Refresh Token: 7 Tage, rotiert bei Nutzung
- • RS256 oder ES256 (kein HS256 in Produktion)
- • Token-Revocation via Redis Blocklist
API-Key Hygiene
- • Rotation alle 90 Tage automatisiert
- • Scope-beschränkte Keys (Least Privilege)
- • Git-History-Scanner (git-secrets, truffleHog)
- • Niemals in Logs ausgeben
Container & Kubernetes Hardening
# Secure OpenClaw Pod Specification
apiVersion: v1
kind: Pod
metadata:
name: openclaw-secure
namespace: openclaw
labels:
app: openclaw
security-tier: hardened
spec:
serviceAccountName: openclaw-sa
automountServiceAccountToken: false
securityContext:
runAsNonRoot: true
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
seccompProfile:
type: RuntimeDefault
containers:
- name: openclaw
image: openclaw/server:1.2.3@sha256:abc123... # pinned digest!
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ["ALL"]
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
env:
- name: OPENCLAW_API_KEY
valueFrom:
secretKeyRef:
name: openclaw-secrets
key: api-key
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 15
periodSeconds: 20
volumeMounts:
- name: tmp
mountPath: /tmp
- name: logs
mountPath: /var/log/openclaw
volumes:
- name: tmp
emptyDir: {}
- name: logs
emptyDir: {}
---
# NetworkPolicy — Zero-Trust
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: openclaw-netpol
namespace: openclaw
spec:
podSelector:
matchLabels:
app: openclaw
policyTypes: [Ingress, Egress]
ingress:
- from:
- podSelector:
matchLabels:
app: nginx-gateway
ports:
- protocol: TCP
port: 8080
egress:
- to:
- namespaceSelector:
matchLabels:
name: monitoring
ports:
- protocol: TCP
port: 9090⚠️ Image Scanning Pipeline
Trivy in CI/CD integrieren: trivy image --exit-code 1 --severity HIGH,CRITICAL openclaw/server:latest — bricht den Build bei kritischen CVEs ab.
WebSocket Security
WebSocket-Verbindungen sind das häufigste Angriffsziel bei OpenClaw-Deployments. Ohne Origin-Validierung kann jede Webseite eine Verbindung zum lokalen OpenClaw aufbauen.
# Nginx WebSocket Security Configuration
server {
listen 443 ssl http2;
server_name openclaw.internal;
# TLS Hardening
ssl_protocols TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
# Security Headers
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Frame-Options DENY always;
add_header X-Content-Type-Options nosniff always;
add_header Content-Security-Policy "default-src 'self'; connect-src 'self' wss://openclaw.internal" always;
location /ws {
# Origin allowlist — CRITICAL
set $allowed_origin 0;
if ($http_origin = "https://openclaw.internal") { set $allowed_origin 1; }
if ($http_origin = "https://app.clawguru.org") { set $allowed_origin 1; }
if ($allowed_origin = 0) { return 403 "Forbidden Origin"; }
add_header 'Access-Control-Allow-Origin' $http_origin always;
proxy_pass http://openclaw:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
# Timeouts
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
# Rate limiting
limit_req zone=ws_limit burst=10 nodelay;
}
}
# Rate limit zone
limit_req_zone $binary_remote_addr zone=ws_limit:10m rate=5r/s;Supply Chain Security
# SBOM generieren mit Syft
syft packages dir:. -o spdx-json > sbom.spdx.json
syft packages dir:. -o cyclonedx-json > sbom.cyclonedx.json
# Grype: SBOM auf Schwachstellen prüfen
grype sbom:sbom.spdx.json --fail-on high
# Cosign: Container-Image signieren (Sigstore)
cosign generate-key-pair
cosign sign --key cosign.key openclaw/server:1.2.3
# Signatur prüfen
cosign verify --key cosign.pub openclaw/server:1.2.3
# package-lock.json / lockfile integrity
npm ci --ignore-scripts # Keine postinstall-Scripts
npm audit --audit-level=high # Audit vor jedem Deploy
# truffleHog: Secrets in Git-History scannen
trufflehog git file://. --only-verified
# GitHub Actions: SLSA Provenance
# .github/workflows/release.yml:
# - uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v1
# with:
# image: openclaw/server
# digest: {{ steps.build.outputs.digest }}SBOM
Software Bill of Materials mit Syft/Trivy generieren. Pflicht für NIS2 und SOC 2.
Image Signing
Cosign + Sigstore für verifiable builds. Nur signierte Images in Produktion.
Dependency Audit
npm audit + Renovate für automatische Dependency-Updates mit Security-Priorität.
Monitoring & Alerting
# Prometheus Alerting Rules für OpenClaw Security
groups:
- name: openclaw-security
rules:
# Auth-Failures: mehr als 10 in 5 Minuten
- alert: HighAuthFailureRate
expr: rate(openclaw_auth_failures_total[5m]) > 2
for: 2m
labels:
severity: critical
annotations:
summary: "Hohe Auth-Failure Rate — möglicher Brute-Force"
description: "{{ $value }} Fehler/s in den letzten 5 Minuten"
# WebSocket-Verbindungen von unbekannten Origins
- alert: UnknownOriginWebSocket
expr: openclaw_ws_unknown_origin_total > 0
labels:
severity: warning
annotations:
summary: "WebSocket-Verbindung von unbekannter Origin"
# Vault-Lease-Expiry Warnung
- alert: VaultLeaseExpiringSoon
expr: vault_token_ttl < 3600
labels:
severity: warning
annotations:
summary: "Vault Token läuft in < 1h ab"
# Ungewöhnliche API-Request-Rate
- alert: APIRequestAnomalyDetected
expr: |
rate(openclaw_api_requests_total[5m])
> (avg_over_time(openclaw_api_requests_total[1h]) * 3)
labels:
severity: warning
annotations:
summary: "API-Request-Rate 3x über Durchschnitt"
# Container-Restart-Loop (mögliches Exploit-Attempt)
- alert: ContainerRestartLoop
expr: rate(kube_pod_container_status_restarts_total{namespace="openclaw"}[15m]) > 0.1
labels:
severity: critical
annotations:
summary: "OpenClaw Container-Restart-Loop erkannt"Incident Response Playbook
GDPR / NIS2 Compliance
NIS2 Art. 21 — Technische Maßnahmen
- ✓Risikoanalyse und IS-Policies dokumentiert
- ✓Incident Handling mit 72h-Meldepflicht
- ✓Business Continuity + Backup-Prozesse
- ✓Supply Chain Security (SBOM + Signing)
- ✓Schwachstellenmanagement (CVE-Tracking)
- ✓MFA für alle privilegierten Zugriffe
- ✓Encrypted Communications (TLS 1.3)
GDPR Technische Anforderungen
- ✓Verschlüsselung at rest + in transit
- ✓Access Logs mit 90-Tage-Retention
- ✓Datenlokalisierung (EU-Rechenzentrum)
- ✓Right to Erasure implementiert
- ✓Data Breach Notification < 72h
- ✓Privacy by Design in neuen Features
- ✓DPIA für High-Risk Processing
FAQ
Was sind die häufigsten Sicherheitslücken in OpenClaw 2026?
Die häufigsten Probleme sind: offene Admin-Ports ohne VPN-Schutz, fehlende WebSocket Origin-Validierung, unrotierte API-Keys und unsignierte Skills mit unsicheren Dependencies. Alle adressierbar mit dieser Checklist.
Wie sichere ich mein OpenClaw-Deployment gegen Prompt-Injection ab?
Implementiere Input-Sanitization für alle LLM-Eingaben, beschränke Tool-Berechtigungen auf das Minimum, aktiviere Sandboxing für Skills und führe regelmäßige Audits der Skill-Bibliothek durch.
Ist OpenClaw NIS2-konform betreibbar?
Ja, wenn Audit-Logging aktiviert ist, Incident-Response-Prozesse dokumentiert sind, Supply Chain Security (SBOM) implementiert ist und regelmäßige Vulnerability-Assessments durchgeführt werden.
Wie oft müssen API-Keys rotiert werden?
Best Practice: alle 90 Tage automatisiert rotieren. Nach jedem Security-Incident sofort. Verwende HashiCorp Vault oder ähnliche Tools für automatische Rotation ohne Service-Downtime.
Reicht Docker ohne Kubernetes für eine sichere OpenClaw-Installation?
Docker alleine ist ausreichend für kleine Deployments, wenn Seccomp-Profile, non-root User, ReadOnlyRootFilesystem und Netzwerk-Isolation (Docker Networks) korrekt konfiguriert sind. Kubernetes bietet mehr Granularität für größere Setups.