
Offline, schreibgeschützter Härtungscheck für eine selbst gehostete OpenClaw-Installation — Gateway-Exposition, Auth, CVE-2026-25253. Gibt niemals Geheimnisse aus, führt keine Netzwerkaufrufe durch.
Dieses Skript liest nur. Es repariert nichts und garantiert nicht, dass Sie sicher sind. Grüne Ausgabe bedeutet nur, dass die unten aufgeführten Prüfungen bestanden wurden – und nichts weiter.
openclaw-hardening-check.mjs ist eine kleine, abhängigkeitsfreie, offline durchgeführte Überprüfung einer OpenClaw-Installation. Es liest die lokale Konfiguration, Paket-Metadaten, Plugin- und Skill-Manifeste, Dateimodi und – unter Linux – die Einträge des laufenden Gateways in /proc. Es ändert keine Dateien, ruft keine OpenClaw-Befehle auf, kontaktiert keine Registry und stellt keine Netzwerkanfragen.
gateway.bind nur auf Loopback, nicht auf Loopback oder laufzeitabhängig ist. Eine nicht gesetzte oder auf auto gesetzte Bindung in einem erkannten Docker-, Podman-, Kubernetes- oder Fly-Container wird als 0.0.0.0 behandelt, entsprechend dem Standard von OpenClaw in Containern. Ein laufendes Linux-Gateway wird separat überprüft, damit eine Befehlszeilen- oder Service-Überschreibung sich nicht hinter einem sicheren Konfigurationswert verstecken kann.gateway.auth.token.password${VAR}$VARsecretref-env:VAR__env__:VARgateway.systemd.env.env2026.1.29 als betroffen. Die Schwachstelle ließ eine Abfragezeichenfolge gatewayUrl eine WebSocket-Verbindung auslösen, die das Gateway-Token preisgab. Siehe den NVD-Eintrag und die OpenClaw-Sicherheitsmitteilung.latest, beta oder main, wenn die Installationsherkunft angegeben wird. npm und pnpm behalten das ursprünglich angeforderte Dist-Tag im installierten Paket nicht bei, daher meldet das Skript "kann nicht überprüft werden" anstatt zu raten, wenn diese Herkunft fehlt..env, gateway.systemd.env, gefundene auth-profiles.json-Dateien und aufgelöste Datei-SecretRefs auf Gruppen-/Weltzugriff oder unerwarteten Besitz.dist-runtime/extensions – getrennt von Elementen, die in Zustands-, Konfigurationsverzeichnis-, verwalteten, Arbeitsbereichs-, persönlichen, konfigurierten oder npm-Projektorten gefunden werden. Nicht gebündelte Elemente werden zur manuellen Überprüfung markiert, niemals als bösartig eingestuft./proc/net/tcp*-Socket-Inodes den Gateway-Eintragsdatei- oder Binärprozessen zu und kennzeichnet jeden nicht auf Loopback lauschenden TCP-Listener, den sie besitzen. Ein Listener auf dem erwarteten Port, dessen Besitzer nicht verifiziert werden kann, erzeugt "kann nicht überprüft werden", nicht "Gateway läuft nicht". Die Prüfung funktioniert auch von der Festplatte, wenn das Gateway gestoppt ist.Die Pfade und Standardwerte folgen der offiziellen Konfigurationsdokumentation, Konfigurationsreferenz, Gateway-Expositions-Runbook, Skills-Dokumentation und Plugin-Verwaltungsdokumentation.
Kopieren Sie das Skript auf den Rechner, auf dem OpenClaw läuft, und führen Sie es als derselbe Betriebssystembenutzer aus:
node openclaw-hardening-check.mjs
Die Standardkonfiguration von OpenClaw ist ~/.openclaw/openclaw.json. Das Skript berücksichtigt auch OPENCLAW_CONFIG_PATH, OPENCLAW_STATE_DIR und OPENCLAW_GATEWAY_PORT.
Optionale Überschreibungen sind für nicht standardmäßige Layouts und reproduzierbare Pin-Prüfungen verfügbar:
node openclaw-hardening-check.mjs \
--config /srv/openclaw/openclaw.json \
--state-dir /srv/openclaw \
--package-root /opt/openclaw/lib/node_modules/openclaw \
--install-spec 2026.6.10
--install-spec muss das Ziel sein, das ursprünglich vom Installationsprogramm oder der Bereitstellungsdefinition verwendet wurde. Die Übergabe der aktuell installierten Version ohne Überprüfung dieser Herkunft beweist nicht, dass die Bereitstellung gepinnt ist.
Der Prüfer gibt niemals das Geheimnis selbst aus, daher zeichnet die veröffentlichbare Form nur seine Quelle und Länge auf:
OpenClaw hardening check
Read-only and offline. Secret values are never printed.
Config: ~/.openclaw/openclaw.json
[PASS] Config: loaded ~/.openclaw/openclaw.json without printing its contents.
[PASS] Gateway bind: loopback; configured for local-only access.
[PASS] Gateway authentication: present via Gateway process environment bootstrap, length 48; value was not printed.
[PASS] Listening sockets: OpenClaw TCP listeners are loopback-only: 127.0.0.1:18789, [::1]:18789.
[PASS] CVE-2026-25253: installed package version 2026.6.10 is at or newer than 2026.1.29.
[PASS] Installation pin: exact target 2026.6.10 is recorded for this check.
[WARN] Third-party plugins: 1: example-plugin. Review it yourself; no malware verdict was attempted.
Summary: No security problems found. 1 item flagged for your review; exit code 0.
Geheimniswert: [GESCHWÄRZT — niemals in der Ausgabe vorhanden].
Die Zusammenfassung zählt Sicherheitsprobleme (FAIL), manuell zu überprüfende Elemente (WARN) und unvollständige Prüfungen (CANNOT CHECK) getrennt. WARN- und CANNOT CHECK-Ergebnisse allein führen nicht zum Fehlschlagen des Prozesses; nur ein FAIL gibt den Exit-Code 1 zurück.
| Code | Bedeutung |
|---|---|
0 | Es wurden keine FAIL-Sicherheitsprobleme gefunden; WARN- oder CANNOT CHECK-Ergebnisse können dennoch vorhanden sein. |
1 | Mindestens ein FAIL-Sicherheitsproblem erfordert Aufmerksamkeit. |
2 | Die Befehlszeile ist ungültig, oder die Konfiguration konnte nicht gefunden, gelesen, eingeschlossen oder sicher geparst werden. |
/proc. Andere Plattformen erhalten ein explizites "kann nicht überprüft werden"-Ergebnis.@latest aufgelöst hat. Geben Sie eine vertrauenswürdige Bereitstellungsherkunft mit --install-spec an.Die Testsuite verwendet nur node:test und temporäre Verzeichnisse:
node --test test/openclaw-hardening-check.test.mjs
Ilya Prudnikov — cain-ai.com