
Check di hardening offline e in sola lettura per un'installazione OpenClaw self-hosted — esposizione del gateway, autenticazione, CVE-2026-25253. Non stampa mai segreti, non effettua chiamate di rete.
Questo script legge soltanto. Non corregge nulla e non garantisce che tu sia al sicuro. Un output verde significa solo che i controlli elencati di seguito sono stati superati—e nient'altro.
openclaw-hardening-check.mjs è una piccola revisione offline, senza dipendenze, di un'installazione di OpenClaw. Legge la configurazione locale, i metadati dei pacchetti, i manifest di plugin e skill, i permessi dei file e—su Linux—le voci del Gateway in esecuzione in /proc. Non modifica file, non invoca comandi di OpenClaw, non contatta un registro e non effettua alcuna richiesta di rete.
gateway.bind è solo loopback, non loopback o dipendente dal runtime. Un bind non impostato o auto all'interno di un container Docker, Podman, Kubernetes o Fly rilevato viene trattato come 0.0.0.0, in linea con il default container di OpenClaw. Un Gateway Linux in esecuzione viene controllato separatamente, così un override da riga di comando o da servizio non può nascondersi dietro un valore di configurazione sicuro.gateway.auth.token e .password in chiaro. Riconosce ${VAR}, $VAR, secretref-env:VAR, __env__:VAR e SecretRef strutturati prima di valutare una credenziale. Le evidenze dell'ambiente di autenticazione provengono dal processo Gateway corrispondente, da gateway.systemd.env o dal file .env di stato, mai dal processo di controllo. I valori segreti non vengono mai stampati; il report contiene solo presenza, classe di origine e lunghezza. I segnaposto di esempio pubblicati e i token più corti di 24 caratteri vengono segnalati.2026.1.29. La vulnerabilità permetteva a un gatewayUrl nella query string di innescare una connessione WebSocket che divulgava il token del Gateway. Consulta la voce NVD e l'avviso di OpenClaw.latest, beta o main, quando viene fornita la provenienza dell'installazione. npm e pnpm non conservano il dist-tag originariamente richiesto nel pacchetto installato, quindi lo script riporta "impossibile verificare" invece di fare supposizioni quando tale provenienza è assente..env, gateway.systemd.env, i file auth-profiles.json rilevati e i SecretRef di file risolti per verificare l'esposizione a gruppo/altri o proprietà inattese.dist-runtime/extensions—separatamente dagli elementi trovati in posizioni di stato, directory di configurazione, gestite, workspace, personali, configurate o di progetto npm. Gli elementi non inclusi nel pacchetto vengono contrassegnati per una revisione manuale, mai etichettati come dannosi./proc/net/tcp* ai processi del file di ingresso del Gateway o ai binari e segnala ogni listener TCP non loopback di loro proprietà. Un listener sulla porta prevista il cui proprietario non può essere verificato produce "impossibile verificare", non "il Gateway non è in esecuzione". Il controllo funziona comunque dal disco quando il Gateway è fermo.I percorsi e i default seguono la documentazione di configurazione ufficiale, il riferimento di configurazione, il runbook sull'esposizione del Gateway, la documentazione sulle skill e la documentazione sulla gestione dei plugin.
Copia lo script sulla macchina che esegue OpenClaw, quindi eseguilo con lo stesso utente di sistema:
node openclaw-hardening-check.mjs
La configurazione predefinita di OpenClaw è ~/.openclaw/openclaw.json. Lo script rispetta anche OPENCLAW_CONFIG_PATH, OPENCLAW_STATE_DIR e OPENCLAW_GATEWAY_PORT.
Sono disponibili override opzionali per layout non standard e controlli di blocco riproducibili:
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 deve essere il target originariamente utilizzato dall'installer o dalla definizione di deployment. Passare la versione attualmente installata senza verificare tale provenienza non dimostra che il deployment sia bloccato.
Il controllore non emette mai il segreto stesso, quindi la versione pubblicabile registra solo la sua origine e la sua lunghezza:
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.
Valore segreto: [REDACTED — never present in output].
Il riepilogo conta separatamente i problemi di sicurezza (FAIL), gli elementi da revisionare manualmente (WARN) e i controlli incompleti (CANNOT CHECK). I soli risultati WARN e CANNOT CHECK non fanno fallire il processo; solo un FAIL restituisce il codice di uscita 1.
| Codice | Significato |
|---|---|
0 | Nessun problema di sicurezza FAIL trovato; possono comunque essere presenti risultati WARN o CANNOT CHECK. |
1 | Almeno un problema di sicurezza FAIL richiede attenzione. |
2 | La riga di comando non è valida oppure la configurazione non può essere trovata, letta, inclusa o analizzata in modo sicuro. |