Caso práctico: un riego inteligente que cualquiera controlaba
Probamos un sistema de riego inteligente: una configuración MQTT defectuosa nos permitió ver y accionar los dispositivos de otros clientes y localizar dónde están.
Zyberum Security Team · Publicado · 4 min de lectura
El riego inteligente suena inofensivo: válvulas, un controlador, una app. Probamos un sistema de este tipo y acabamos con el control de dispositivos que no eran nuestros y con un mapa de dónde están.
Qué probamos
- el controlador y su firmware
- la app móvil
- el servicio en la nube
- la conexión MQTT que transporta los comandos y los mensajes de estado
Qué encontramos
MQTT estaba roto
El sistema utilizaba MQTT para conectar los dispositivos, la app y la nube. La configuración no separaba a unos clientes de otros. Desde nuestra propia cuenta podíamos ver los dispositivos de otros clientes, incluidos sus mensajes de estado.
Podíamos accionarlos
Y no se quedaba en ver. También podíamos enviar comandos: abrir válvulas, iniciar el riego, cambiar ajustes, en sistemas que pertenecían a otras personas.
Podíamos localizarlos
Los mensajes y las respuestas de la API contenían información suficiente para geolocalizar los dispositivos. Un atacante sabría qué dispositivo está en cada sitio.
Por qué importa
En conjunto: una lista de dispositivos, sus ubicaciones, su actividad y la capacidad de controlarlos a distancia. Eso son daños por agua y costes a gran escala, y son datos de ubicación de viviendas particulares y de empresas.
Y, como en la mayoría de los hallazgos IoT de este tipo, nada de esto exigió romper el cifrado ni explotar errores de memoria. El sistema respondía a preguntas que debería haber rechazado.
Qué deberían aprender los fabricantes
- Dé a cada dispositivo su propia identidad. Sus propias credenciales, no unas compartidas sacadas del firmware.
- Restrinja los topics en el broker. Un cliente solo debe poder leer y escribir en sus propios topics. Las suscripciones con comodines tienen que ser imposibles para los clientes normales.
- No incluya la ubicación en mensajes que no la necesitan. Un dato que no se envía no se puede filtrar.
- Compruebe la autorización también en la nube. La misma comprobación de propiedad corresponde a cada llamada de API.
- Monitorice el broker. Un cliente que se suscribe a todo es un incidente y debería hacer saltar una alarma.
Son exactamente los puntos que los requisitos de ciberseguridad de la RED (EN 18031) y el Cyber Resilience Act convierten ahora en obligatorios para los productos conectados.
Probamos los dispositivos, sus apps y su nube como un único sistema. Consulte nuestras pruebas de seguridad IoT o los pentests de hardware, o vea cuánto cuesta una prueba.
FAQ
Preguntas frecuentes
¿Qué es MQTT y por qué supone un riesgo?
MQTT es un protocolo de mensajería ligero que utilizan muchos productos IoT: los dispositivos y las apps publican y se suscriben a topics en un broker central. Si el broker no restringe qué topics puede usar cada cliente, cualquier cliente conectado puede leer y enviar mensajes de todos los dispositivos.
¿De verdad un sistema de riego de jardín es un problema de seguridad?
Sí. Quien lo controla puede provocar daños por agua y costes, y los datos de ubicación indican a un atacante dónde están instalados los dispositivos y, por su actividad, cuándo no hay nadie. Las mismas familias de productos se utilizan además en agricultura y en instalaciones comerciales.