Gateway
Comprobaciones de auditoría de seguridad
openclaw security audit emite hallazgos estructurados identificados por checkId. Esta
página es el catálogo de referencia de esos identificadores. Para consultar el modelo de amenazas
general y las directrices de refuerzo, véase Seguridad.
Algunas comprobaciones solo se ejecutan con openclaw security audit --deep: análisis del código
de plugins/Skills (plugins.code_safety*, skills.code_safety*) y comprobaciones de sondeo
del Gateway en ejecución (gateway.probe_*). Todo lo demás de esta tabla se ejecuta con un
openclaw security audit sin opciones adicionales.
Una gravedad como warn/critical significa que el mismo checkId puede emitirse en
cualquiera de los dos niveles según la configuración (por ejemplo, si el Gateway está expuesto
de forma remota). Valores de alta relevancia que probablemente se encontrarán en implementaciones reales (lista
no exhaustiva):
checkId |
Gravedad | Por qué es importante | Clave/ruta principal de corrección | Corrección automática |
|---|---|---|---|---|
fs.state_dir.perms_world_writable |
crítica | Otros usuarios/procesos pueden modificar todo el estado de OpenClaw | permisos del sistema de archivos en ~/.openclaw |
sí |
fs.state_dir.perms_group_writable |
advertencia | Los usuarios del grupo pueden modificar todo el estado de OpenClaw | permisos del sistema de archivos en ~/.openclaw |
sí |
fs.state_dir.perms_readable |
advertencia | Otros usuarios pueden leer el directorio de estado | permisos del sistema de archivos en ~/.openclaw |
sí |
fs.state_dir.symlink |
advertencia | El destino del directorio de estado se convierte en otro límite de confianza | disposición del sistema de archivos del directorio de estado | no |
fs.config.perms_writable |
crítica | Otros usuarios pueden cambiar la autenticación, la política de herramientas o la configuración | permisos del sistema de archivos en ~/.openclaw/openclaw.json |
sí |
fs.config.symlink |
advertencia | Los archivos de configuración con enlaces simbólicos no admiten escrituras y añaden otro límite de confianza | sustituirlo por un archivo de configuración normal o hacer que OPENCLAW_CONFIG_PATH apunte al archivo real |
no |
fs.config.perms_group_readable |
advertencia | Los usuarios del grupo pueden leer los tokens y ajustes de configuración | permisos del sistema de archivos en el archivo de configuración | sí |
fs.config.perms_world_readable |
crítica | La configuración puede exponer tokens y ajustes | permisos del sistema de archivos en el archivo de configuración | sí |
fs.config_include.perms_writable |
crítica | Otros usuarios pueden modificar el archivo incluido en la configuración | permisos del archivo incluido al que hace referencia openclaw.json |
sí |
fs.config_include.perms_group_readable |
advertencia | Los usuarios del grupo pueden leer los secretos y ajustes incluidos | permisos del archivo incluido al que hace referencia openclaw.json |
sí |
fs.config_include.perms_world_readable |
crítica | Cualquier usuario puede leer los secretos y ajustes incluidos | permisos del archivo incluido al que hace referencia openclaw.json |
sí |
fs.auth_profiles.perms_writable |
crítica | Otros usuarios pueden inyectar o sustituir las credenciales de modelo almacenadas | permisos de agents/<agentId>/agent/auth-profiles.json |
sí |
fs.auth_profiles.perms_readable |
advertencia | Otros usuarios pueden leer claves de API y tokens de OAuth | permisos de agents/<agentId>/agent/auth-profiles.json |
sí |
fs.credentials_dir.perms_writable |
crítica | Otros usuarios pueden modificar el estado de emparejamiento y credenciales del canal | permisos del sistema de archivos en ~/.openclaw/credentials |
sí |
fs.credentials_dir.perms_readable |
advertencia | Otros usuarios pueden leer el estado de las credenciales del canal | permisos del sistema de archivos en ~/.openclaw/credentials |
sí |
fs.sessions_store.perms_readable |
advertencia | Otros usuarios pueden leer las transcripciones y los metadatos de las sesiones | permisos del almacén de sesiones | sí |
fs.log_file.perms_readable |
advertencia | Otros usuarios pueden leer registros censurados, pero que siguen siendo confidenciales | permisos del archivo de registro del Gateway | sí |
fs.synced_dir |
advertencia | Almacenar el estado o la configuración en iCloud/Dropbox/Drive amplía la exposición de tokens y transcripciones | trasladar la configuración y el estado fuera de las carpetas sincronizadas | no |
gateway.bind_no_auth |
crítica | Vinculación remota sin secreto compartido | gateway.bind, gateway.auth.* |
no |
gateway.loopback_no_auth |
crítica | El loopback con proxy inverso puede quedar sin autenticar | gateway.auth.*, configuración del proxy |
no |
gateway.trusted_proxies_missing |
advertencia | Las cabeceras del proxy inverso están presentes, pero no son de confianza | gateway.trustedProxies |
no |
gateway.http.no_auth |
advertencia/crítica | Se puede acceder a las API HTTP del Gateway con auth.mode="none" |
gateway.auth.mode, gateway.http.endpoints.*, plugins.entries.admin-http-rpc |
no |
gateway.http.session_key_override_enabled |
información | Los clientes de la API HTTP pueden anular sessionKey |
gateway.http.allowSessionKeyOverride |
no |
gateway.tools_invoke_http.dangerous_allow |
advertencia/crítica | Vuelve a habilitar herramientas peligrosas mediante la API HTTP para clientes propietarios/administradores | gateway.tools.allow |
no |
gateway.nodes.allow_commands_dangerous |
advertencia/crítica | Habilita comandos de Node de alto impacto (entrada de escritorio/cámara/pantalla/contactos/calendario/SMS) | gateway.nodes.commands.allow |
no |
gateway.nodes.deny_commands_ineffective |
advertencia | Las entradas de denegación similares a patrones no coinciden con el texto del shell ni con los grupos | gateway.nodes.commands.deny |
no |
gateway.tailscale_funnel |
crítica | Exposición a la Internet pública | gateway.tailscale.mode |
no |
gateway.tailscale_serve |
información | La exposición a la tailnet está habilitada mediante Serve | gateway.tailscale.mode |
no |
gateway.control_ui.allowed_origins_required |
crítica | Interfaz de control sin loopback y sin una lista explícita de orígenes permitidos del navegador | gateway.controlUi.allowedOrigins |
no |
gateway.control_ui.allowed_origins_wildcard |
advertencia/crítica | allowedOrigins=["*"] deshabilita la lista de orígenes permitidos del navegador |
gateway.controlUi.allowedOrigins |
no |
gateway.control_ui.host_header_origin_fallback |
advertencia/crítica | Habilita la alternativa de origen basada en la cabecera Host (reduce la protección contra la revinculación de DNS) | gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback |
no |
gateway.control_ui.insecure_auth |
advertencia | Se ha habilitado la opción de compatibilidad con autenticación no segura | gateway.controlUi.allowInsecureAuth |
no |
gateway.control_ui.device_auth_disabled |
crítica | La migración retirada para omitir la autenticación del dispositivo todavía permite el acceso de corrección | completar el emparejamiento Proteger este navegador (estado gateway.controlUi.deviceAuthMigration) |
no |
gateway.real_ip_fallback_enabled |
advertencia/crítica | Confiar en la alternativa X-Real-IP puede permitir la suplantación de la IP de origen debido a una configuración incorrecta del proxy |
gateway.allowRealIpFallback, gateway.trustedProxies |
no |
gateway.token_too_short |
advertencia | Un token compartido corto es más fácil de descifrar por fuerza bruta | gateway.auth.token |
no |
gateway.auth_no_rate_limit |
advertencia | Exponer la autenticación sin limitación de solicitudes aumenta el riesgo de ataques de fuerza bruta | gateway.auth.rateLimit |
no |
gateway.trusted_proxy_auth |
crítica | La identidad del proxy pasa a ser el límite de autenticación | gateway.auth.mode="trusted-proxy" |
no |
gateway.trusted_proxy_no_proxies |
crítica | La autenticación mediante proxy de confianza sin IP de proxy de confianza no es segura | gateway.trustedProxies |
no |
gateway.trusted_proxy_no_user_header |
crítica | La autenticación mediante proxy de confianza no puede resolver de forma segura la identidad del usuario | gateway.auth.trustedProxy.userHeader |
no |
gateway.trusted_proxy_no_allowlist |
advertencia | La autenticación mediante proxy de confianza acepta a cualquier usuario autenticado en el servicio ascendente | gateway.auth.trustedProxy.allowUsers |
no |
gateway.trusted_proxy_allow_loopback |
advertencia | La autenticación mediante proxy de confianza acepta orígenes de proxy loopback permitidos explícitamente | gateway.auth.trustedProxy.allowLoopback |
no |
gateway.probe_auth_secretref_unavailable |
advertencia | La comprobación exhaustiva no pudo resolver las SecretRefs de autenticación en esta ruta de comando | disponibilidad de la fuente de autenticación / SecretRef para la comprobación exhaustiva | no |
gateway.probe_failed |
advertencia | Falló la comprobación en vivo del Gateway (solo --deep) |
accesibilidad/autenticación del Gateway | no |
discovery.mdns_full_mode |
advertencia/crítico | El modo completo de mDNS anuncia metadatos de cliPath/sshPort en la red local |
discovery.mdns.mode, gateway.bind |
no |
config.insecure_or_dangerous_flags |
advertencia | Está habilitada una marca de depuración insegura/peligrosa | clave indicada en los detalles del hallazgo | no |
security.audit.suppressions.active |
información | La salida de auditoría tiene supresiones configuradas y puede estar filtrada | security.audit.suppressions |
no |
config.secrets.gateway_password_in_config |
advertencia | La contraseña del Gateway se almacena directamente en la configuración | gateway.auth.password |
no |
config.secrets.hooks_token_in_config |
advertencia | El token de portador del hook se almacena directamente en la configuración | hooks.token |
no |
hooks.token_reuse_gateway_token |
crítico | El token de entrada del hook también desbloquea la autenticación del Gateway | hooks.token, gateway.auth.token, gateway.auth.password |
no |
hooks.token_too_short |
advertencia | Facilita los ataques de fuerza bruta contra la entrada del hook | hooks.token |
no |
hooks.default_session_key_unset |
advertencia | Las ejecuciones del agente del hook se distribuyen en sesiones por solicitud generadas | hooks.defaultSessionKey |
no |
hooks.allowed_agent_ids_unrestricted |
advertencia/crítico | Los invocadores autenticados del hook pueden dirigir solicitudes a cualquier agente configurado | hooks.allowedAgentIds |
no |
hooks.request_session_key_enabled |
advertencia/crítico | El invocador externo puede elegir sessionKey | hooks.allowRequestSessionKey |
no |
hooks.request_session_key_prefixes_missing |
advertencia/crítico | No hay límites para los formatos de las claves de sesión externas | hooks.allowedSessionKeyPrefixes |
no |
hooks.path_root |
crítico | La ruta del hook es /, lo que facilita colisiones o direccionamientos incorrectos de la entrada |
hooks.path |
no |
hooks.installs_unpinned_npm_specs |
advertencia | Los registros de instalación del hook no están fijados a especificaciones inmutables de npm | metadatos de instalación del hook | no |
hooks.installs_missing_integrity |
advertencia | Los registros de instalación del hook carecen de metadatos de integridad | metadatos de instalación del hook | no |
hooks.installs_version_drift |
advertencia | Los registros de instalación del hook difieren de los paquetes instalados | metadatos de instalación del hook | no |
logging.redact_off |
advertencia | Se filtran valores confidenciales en los registros/el estado | logging.redactSensitive |
sí |
browser.control_invalid_config |
advertencia | La configuración del control del navegador no es válida antes de la ejecución | browser.* |
no |
browser.control_no_auth |
crítico | El control del navegador está expuesto sin autenticación mediante token/contraseña | gateway.auth.* |
no |
browser.remote_cdp_http |
advertencia | El CDP remoto mediante HTTP sin cifrar carece de cifrado de transporte | perfil del navegador cdpUrl |
no |
browser.remote_cdp_private_host |
advertencia | El CDP remoto apunta a un host privado/interno | perfil del navegador cdpUrl, browser.ssrfPolicy.* |
no |
sandbox.docker_config_mode_off |
advertencia | La configuración Docker del sandbox está presente pero inactiva | agents.*.sandbox.mode |
no |
sandbox.bind_mount_non_absolute |
advertencia | Los montajes vinculados relativos pueden resolverse de forma impredecible | agents.*.sandbox.docker.binds[] |
no |
sandbox.dangerous_bind_mount |
crítico | El montaje vinculado del sandbox apunta a rutas bloqueadas del sistema, de credenciales o del socket de Docker | agents.*.sandbox.docker.binds[] |
no |
sandbox.dangerous_network_mode |
crítico | La red Docker del sandbox usa el modo de unión al espacio de nombres host o container:* |
agents.*.sandbox.docker.network |
no |
sandbox.dangerous_seccomp_profile |
crítico | El perfil seccomp del sandbox debilita el aislamiento del contenedor | agents.*.sandbox.docker.securityOpt |
no |
sandbox.dangerous_apparmor_profile |
crítico | El perfil AppArmor del sandbox debilita el aislamiento del contenedor | agents.*.sandbox.docker.securityOpt |
no |
sandbox.browser_cdp_bridge_unrestricted |
advertencia | El puente del navegador del sandbox está expuesto sin restricción del intervalo de origen | sandbox.browser.cdpSourceRange |
no |
sandbox.browser_container.non_loopback_publish |
crítico | El contenedor existente del navegador publica CDP en interfaces que no son de bucle local | configuración de publicación del contenedor del sandbox del navegador | no |
sandbox.browser_container.hash_label_missing |
advertencia | El contenedor existente del navegador es anterior a las etiquetas actuales de hash de configuración | openclaw sandbox recreate --browser --all |
no |
sandbox.browser_container.hash_epoch_stale |
advertencia | El contenedor existente del navegador es anterior a la época actual de configuración del navegador | openclaw sandbox recreate --browser --all |
no |
sandbox.browser_container.docker_probe_timeout |
advertencia | Se agotó el tiempo de espera de la comprobación de etiquetas Docker del contenedor del navegador | accesibilidad del daemon de Docker | no |
tools.exec.host_sandbox_no_sandbox_defaults |
advertencia | exec host=sandbox falla de forma segura cuando el sandbox está desactivado |
tools.exec.host, agents.defaults.sandbox.mode |
no |
tools.exec.host_sandbox_no_sandbox_agents |
advertencia | El valor exec host=sandbox por agente falla de forma segura cuando el sandbox está desactivado |
agents.entries.*.tools.exec.host, agents.entries.*.sandbox.mode |
no |
tools.exec.security_full_configured |
advertencia/crítico | La ejecución en el host se está realizando con security="full" |
tools.exec.security, agents.entries.*.tools.exec.security |
no |
tools.exec.agent_skill_mcp_boundary_drift |
advertencia | Hay listas de permitidos de Skills del agente mientras la ejecución en el host puede acceder a clientes/registros MCP | agents.entries.*.tools.exec.*, aislamiento del sandbox/SO, credenciales del servidor MCP |
no |
tools.exec.fs_tools_disabled_but_exec_enabled |
advertencia | La política de herramientas del sistema de archivos no hace que la ejecución del shell sea de solo lectura | tools.deny, agents.entries.*.tools.deny, agents.*.sandbox.workspaceAccess |
no |
tools.exec.auto_allow_skills_enabled |
advertencia | Las aprobaciones de ejecución confían implícitamente en los binarios de Skills | archivo de aprobaciones del host | no |
tools.exec.allowlist_interpreter_without_strict_inline_eval |
advertencia | Las listas de permitidos de intérpretes permiten la evaluación en línea sin forzar una nueva aprobación | tools.exec.strictInlineEval, agents.entries.*.tools.exec.strictInlineEval, lista de permitidos de aprobaciones de ejecución |
no |
tools.exec.safe_bins_interpreter_unprofiled |
advertencia | Los binarios de intérpretes/entornos de ejecución en safeBins sin perfiles explícitos amplían el riesgo de ejecución |
tools.exec.safeBins, tools.exec.safeBinProfiles, agents.entries.*.tools.exec.* |
no |
tools.exec.safe_bins_broad_behavior |
advertencia | Las herramientas de comportamiento amplio en safeBins debilitan el modelo de confianza de bajo riesgo del filtro de stdin |
tools.exec.safeBins, agents.entries.*.tools.exec.safeBins |
no |
tools.exec.safe_bin_trusted_dirs_risky |
advertencia | safeBinTrustedDirs incluye directorios mutables o riesgosos |
tools.exec.safeBinTrustedDirs, agents.entries.*.tools.exec.safeBinTrustedDirs |
no |
tools.elevated.allowFrom.<provider>.wildcard |
crítico | tools.elevated.allowFrom.<provider> incluye "*", lo que aprueba a todos los remitentes |
tools.elevated.allowFrom.<provider> |
no |
tools.elevated.allowFrom.<provider>.large |
advertencia | La lista de permitidos con privilegios elevados para <provider> tiene más de 25 entradas |
tools.elevated.allowFrom.<provider> |
no |
skills.workspace.symlink_escape |
advertencia | El espacio de trabajo skills/**/SKILL.md se resuelve fuera de la raíz del espacio de trabajo (desviación de la cadena de enlaces simbólicos) |
estado del sistema de archivos del espacio de trabajo skills/** |
no |
skills.workspace.scan_truncated |
advertencia | El análisis de Skills del espacio de trabajo alcanzó su límite de visitas a directorios antes de finalizar | aplanar/simplificar el árbol de directorios skills/ del espacio de trabajo |
no |
plugins.extensions_no_allowlist |
advertencia | Los Plugins están instalados sin una lista de permitidos explícita de Plugins | plugins.allowlist |
no |
plugins.allow_phantom_entries |
advertencia | plugins.allow enumera un ID sin ningún Plugin instalado coincidente |
plugins.allow |
no |
plugins.installs_unpinned_npm_specs |
advertencia | Los registros del índice de Plugins no están fijados a especificaciones inmutables de npm | metadatos de instalación de Plugins | no |
plugins.installs_missing_integrity |
advertencia | Los registros del índice de Plugins carecen de metadatos de integridad | metadatos de instalación de Plugins | no |
plugins.installs_version_drift |
advertencia | Los registros del índice de Plugins difieren de los paquetes instalados | metadatos de instalación de Plugins | no |
plugins.code_safety |
advertencia/crítico | El análisis del código del Plugin encontró patrones sospechosos o peligrosos (solo --deep) |
código del Plugin / origen de instalación | no |
plugins.code_safety.entry_path |
advertencia | La ruta de entrada del Plugin apunta a ubicaciones ocultas o node_modules |
manifiesto del Plugin entry |
no |
plugins.code_safety.entry_escape |
crítico | La entrada del Plugin sale del directorio del Plugin | manifiesto del Plugin entry |
no |
plugins.code_safety.manifest_parse_error |
advertencia | No se pudo analizar el manifiesto del Plugin durante el análisis de seguridad del código | archivo de manifiesto del Plugin | no |
plugins.code_safety.scan_failed |
advertencia | No se pudo completar el análisis del código del Plugin (solo --deep) |
ruta del Plugin / entorno de análisis | no |
plugins.<pluginId>.security_audit_failed |
advertencia | Un recopilador de auditoría de seguridad propiedad de un Plugin produjo un error | el recopilador de auditoría de seguridad de ese Plugin | no |
skills.code_safety |
advertencia/crítico | Los metadatos o el código del instalador de Skills contienen patrones sospechosos o peligrosos (solo --deep) |
origen de instalación de Skills | no |
skills.code_safety.scan_failed |
advertencia | No se pudo completar el análisis del código de Skills (solo --deep) |
entorno de análisis de Skills | no |
channels.discord.allowlisted_groups.broad_members |
advertencia | Los destinos de servidores/canales de Discord incluidos en la lista de permitidos no tienen restricciones de miembros ni roles | channels.discord.guilds.*.users/roles, users/roles por canal |
no |
security.exposure.open_channels_with_exec |
advertencia/crítico | Las salas compartidas/públicas pueden acceder a agentes con ejecución habilitada | channels.*.dmPolicy, channels.*.groupPolicy, tools.exec.*, agents.entries.*.tools.exec.* |
no |
security.exposure.open_groups_with_elevated |
crítico | Los mensajes directos/grupos abiertos y las herramientas con privilegios elevados crean vías de inyección de prompts de alto impacto | rutas de políticas de mensajes directos de nivel superior o anidadas, anulaciones de cuentas, channels.*.groupPolicy |
no |
security.exposure.open_groups_with_runtime_or_fs |
crítico/advertencia | Los mensajes directos/grupos abiertos pueden acceder a herramientas de comandos/archivos sin protecciones del sandbox/espacio de trabajo | rutas de políticas de mensajes directos/grupos, tools.profile/deny, tools.fs.workspaceOnly, agents.*.sandbox.mode |
no |
security.exposure.open_groups_with_control_plane_tools |
crítico | Los mensajes directos/grupos abiertos pueden acceder a herramientas del plano de control del Gateway/Cron | rutas de políticas de mensajes directos/grupos, tools.allow, tools.alsoAllow, tools.profile, gateway, cron |
no |
security.trust_model.multi_user_heuristic |
advertencia | La configuración parece multiusuario, mientras que el modelo de confianza del Gateway es de asistente personal | separar los límites de confianza o reforzar la seguridad para usuarios compartidos (sandbox.mode, denegación de herramientas/delimitación del espacio de trabajo) |
no |
tools.profile_minimal_overridden |
advertencia | Las anulaciones de agentes omiten el perfil mínimo global | agents.entries.*.tools.profile |
no |
plugins.tools_reachable_permissive_policy |
advertencia | Las herramientas de extensiones son accesibles en contextos permisivos | tools.profile + permisos/denegaciones de herramientas |
no |
models.legacy |
advertencia | Las familias de modelos heredadas siguen configuradas | selección de modelos | no |
models.weak_tier |
advertencia | Los modelos configurados están por debajo de los niveles recomendados actualmente | selección de modelos | no |
models.small_params |
crítico/información | Los modelos pequeños y las superficies de herramientas inseguras aumentan el riesgo de inyección | elección del modelo + política de sandbox/herramientas | no |
channels.<provider>.dm.open |
crítico | La política de mensajes directos de <provider> es "open"; cualquiera puede enviar mensajes directos al bot |
channels.<provider>.dmPolicy, .allowFrom |
no |
channels.<provider>.dm.open_invalid |
advertencia | dmPolicy="open" sin "*" en allowFrom es incoherente |
channels.<provider>.allowFrom |
no |
channels.<provider>.dm.scope_main_multiuser |
advertencia | Actualmente, varios remitentes de mensajes directos comparten la sesión principal | session.dmScope |
no |
channels.<provider>.allowFrom.dangerous_name_matching_enabled |
información | dangerouslyAllowNameMatching vuelve a habilitar la coincidencia mutable de remitentes por nombre/correo electrónico/etiqueta |
deshabilitar dangerouslyAllowNameMatching, usar ID de remitente estables |
no |
channels.<provider>.account.read_only_resolution |
advertencia | No se pudo resolver completamente una cuenta de canal para la auditoría (falta el secreto/Gateway) | asegurarse de que los secretos referenciados puedan resolverse o ejecutar con una instantánea activa del Gateway | no |
channels.<provider>.warning.<n> |
información/advertencia/crítico | Advertencia de seguridad específica del proveedor, clasificada a partir de texto libre del Plugin | consultar los detalles del hallazgo | no |
summary.attack_surface |
información | Resumen consolidado de la situación de autenticación, canales, herramientas y exposición | varias claves (consultar los detalles del hallazgo) | no |
Los checkIds channels.<provider>.* y tools.elevated.allowFrom.<provider>.* se
generan para cada canal/proveedor configurado, por lo que <provider> es un id de canal real
(por ejemplo, telegram, discord) en la salida real, no una cadena literal.