
Comprobación de endurecimiento sin conexión y de solo lectura para una instalación autoalojada de OpenClaw: exposición de puerta de enlace, autenticación, CVE-2026-25253. Nunca imprime secretos, no realiza llamadas de red.
Este script solo lee. No arregla nada y no garantiza que estés seguro. La salida verde significa solo que las comprobaciones listadas a continuación pasaron—y nada más.
openclaw-hardening-check.mjs es una pequeña revisión sin dependencias y fuera de línea de una instalación de OpenClaw. Lee la configuración local, metadatos de paquetes, manifiestos de plugins y habilidades, modos de archivo y—en Linux—las entradas del Gateway en ejecución en /proc. No modifica archivos, llama a comandos de OpenClaw, contacta un registro ni realiza ninguna solicitud de red.
gateway.bind es solo de loopback, no loopback o dependiente del tiempo de ejecución. Un enlace no establecido o auto dentro de un contenedor Docker, Podman, Kubernetes o Fly detectado se trata como 0.0.0.0, coincidiendo con el valor predeterminado del contenedor de OpenClaw. Un Gateway de Linux en ejecución se comprueba por separado para que una anulación de línea de comandos o servicio no pueda ocultarse detrás de un valor de configuración seguro.gateway.auth.token.password${VAR}$VARsecretref-env:VAR__env__:VARgateway.systemd.env.env2026.1.29 como afectadas. La vulnerabilidad permitía que un gatewayUrl en la cadena de consulta activara una conexión WebSocket que revelaba el token del Gateway. Consulta la entrada NVD y el aviso de OpenClaw.latest, beta o main cuando se proporciona la procedencia de la instalación. npm y pnpm no retienen la etiqueta de distribución solicitada original en el paquete instalado, por lo que el script informa “no se puede comprobar” en lugar de adivinar cuando esa procedencia está ausente..env, gateway.systemd.env, los archivos auth-profiles.json descubiertos y los SecretRefs de archivo resueltos para exposición a grupo/mundo o propiedad inesperada.dist-runtime/extensions—por separado de los elementos encontrados en ubicaciones de estado, directorio de configuración, gestionado, espacio de trabajo, personal, configurado o proyecto npm. Los elementos no empaquetados se marcan para revisión manual, nunca se etiquetan como maliciosos./proc/net/tcp* de vuelta a los procesos de archivo de entrada o binario del Gateway y marca cada listener TCP no loopback que posean. Un listener en el puerto esperado cuyo propietario no se pueda verificar produce “no se puede comprobar”, no “Gateway no está en ejecución”. La comprobación sigue funcionando desde el disco cuando el Gateway está detenido.Las rutas y valores predeterminados siguen la documentación de configuración oficial, la referencia de configuración, el runbook de exposición del Gateway, la documentación de habilidades y la documentación de gestión de plugins.
Copia el script a la máquina que ejecuta OpenClaw, luego ejecútalo como el mismo usuario del SO:
node openclaw-hardening-check.mjs
La configuración predeterminada de OpenClaw es ~/.openclaw/openclaw.json. El script también respeta OPENCLAW_CONFIG_PATH, OPENCLAW_STATE_DIR y OPENCLAW_GATEWAY_PORT.
Hay anulaciones opcionales disponibles para diseños no predeterminados y comprobaciones de pin reproducibles:
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 debe ser el objetivo utilizado originalmente por el instalador o la definición de despliegue. Pasar la versión actualmente instalada sin verificar esa procedencia no demuestra que el despliegue esté fijado.
El comprobador nunca emite el secreto en sí, por lo que la forma publicable registra solo su origen y longitud:
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.
Valor secreto: [REDACTED — nunca presente en la salida].
El resumen cuenta los problemas de seguridad (FAIL), elementos de revisión manual (WARN) y comprobaciones incompletas (CANNOT CHECK) por separado. Los resultados de WARN y CANNOT CHECK por sí solos no hacen que el proceso falle; solo un FAIL devuelve el código de salida 1.
| Código | Significado |
|---|---|
0 | No se encontraron problemas de seguridad FAIL; aún pueden estar presentes resultados WARN o CANNOT CHECK. |
1 | Al menos un problema de seguridad FAIL necesita atención. |
2 | La línea de comandos no es válida, o la configuración no se pudo encontrar, leer, incluir o analizar de forma segura. |
/proc. Otras plataformas reciben un resultado explícito de “no se puede comprobar”.@latest. Proporciona procedencia de despliegue de confianza con --install-spec.El conjunto de pruebas usa solo node:test y directorios temporales:
node --test test/openclaw-hardening-check.test.mjs
Ilya Prudnikov — cain-ai.com