Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en Home Assistant (CVE-2023-41896)

Gravedad CVSS v3.1:
CRÍTICA
Tipo:
CWE-345 Verificación insuficiente de autenticidad de los datos
Fecha de publicación:
19/10/2023
Última modificación:
26/10/2023

Descripción

Home Assistant es una domótica de código abierto. Mientras auditaba el código de la interfaz para identificar parámetros ocultos, Cure53 detectó `auth_callback=1`, que es aprovechado por la lógica de autenticación de WebSocket junto con el parámetro `state`. El parámetro de estado contiene `hassUrl`, que posteriormente se utiliza para establecer una conexión WebSocket. Este comportamiento permite a un atacante crear un enlace malicioso de Home Assistant con un parámetro de estado modificado que obliga al frontend a conectarse a un backend WebSocket alternativo. De ahora en adelante, el atacante puede falsificar cualquier respuesta de WebSocket y activar Cross-Site Scripting (XSS). Dado que XSS se ejecuta en el dominio frontend real de Home Assistant, puede conectarse al backend real de Home Assistant, lo que esencialmente representa un escenario de adquisición integral. Permitir que el sitio tenga un iframe de otros orígenes, como se analiza en GHSA-935v-rmg9-44mw, hace que este exploit sea sustancialmente encubierto, ya que un sitio web malicioso puede ofuscar la estrategia de compromiso en segundo plano. Sin embargo, incluso sin esto, el atacante aún puede enviar el enlace `auth_callback` directamente al usuario víctima. Para mitigar este problema, Cure53 recomienda modificar el flujo de autenticación del código WebSocket. Una implementación óptima a este respecto no confiaría en el `hassUrl` pasado por un parámetro GET. Cure53 debe estipular el importante tiempo requerido por los consultores de Cure53 para identificar un vector XSS, a pesar de tener control total sobre las respuestas de WebSocket. En muchas áreas, los datos del WebSocket se sanitizaron adecuadamente, lo que dificulta su posterior explotación. El equipo de auditoría finalmente detectó el `js_url` para paneles personalizados, aunque en general, la interfaz mostró un refuerzo de seguridad razonable. Este problema se solucionó en la versión 2023.8.0 de Home Assistant Core y en el paquete npm home-assistant-js-websocket en la versión 8.2.0. Se recomienda a los usuarios que actualicen. No se conocen workarounds para esta vulnerabilidad.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:home-assistant:home-assistant:*:*:*:*:*:*:*:* 2023.8.0 (excluyendo)
cpe:2.3:a:home-assistant:home-assistant-js-websocket:*:*:*:*:*:node.js:*:* 8.2.0 (excluyendo)