En el artículo de hoy os hablaremos de uno de los protocolos de moda, MQTT y cual es su impacto, en cuanto a ciberseguridad se refiere, en España. MQTT es ampliamente usado en el ámbito industrial, domótica y, en general, en todo lo relacionado con IoT.
MQTT es un protocolo de mensajes muy simple y ligero que se basa en un modelo publisher/subscriber, también conocido como productor/consumidor. Por una parte tendremos los publishers, que serán aquellos encargados de generar los mensajes a enviar. Siguiendo el flujo de las comunicaciones, encontraríamos el intermediario (broker), que será el encargado de distribuir los mensajes a los consumidores o subscribers. MQTT es un estándar ideado para las comunicaciones M2M (Machine to Machine) en las cuales varios dispositivos comparten información, ya sea a través de un medio cableado o inalámbrico.
Nos faltaría conocer cuál es el proceso por el cual pueden los nodos publicar o suscribirse a información. Debemos tener en cuenta que este modelo está ideado para dispositivos de poca potencia y con consumos reducidos, como pueden ser muchas redes de sensores, donde se necesita que los dispositivos emitan o reciban información de manera periódica permaneciendo el resto del tiempo en un estado de consumo mínimo. Para ello, el broker permanecerá activo constantemente a la espera de acciones por parte de los dispositivos situados en los extremos. Este será, típicamente, un componente de mayor potencia que realizará tareas para mantener el estado del sistema. Mientras que los extremos, publishers y subscribers, se limitarán a actuar de manera periódica.
El último aspecto fundamental para comprender MQTT son los topics o temas. Éstos son el mecanismo por el cual se clasifica la información que se maneja. Cada publisher que quiere emitir determinada información lo asociará a un topic que almacenará el broker, y que podrá ser leído por los subscribers que accedan a ese topic en particular.
Por lo tanto, con los fundamentos básicos de MQTT establecidos, podemos fijarnos en el abanico de aplicaciones dónde podemos encontrarlo. Por ejemplo, si accedemos a la URL http://ny-power.org/mqtt, encontraremos un sitio web donde se reciben datos sobre el consumo energético de la ciudad de Nueva York. Podríamos acceder a estos datos a través de un suscriptor de MQTT, para lo cual podemos utilizar el siguiente repositorio de Github https://github.com/eclipse/mosquitto. Compilando el código del directorio client obtendremos tanto un publisher como un subscriber, que es tan sencillo como tener las dependencias necesarias para hacer make dentro de éste. Ejecutando el comando que aparece en el sitio web empezaríamos a recibir datos con los que se puede jugar.
Pero en vez de pensar en un servicio que es público, como el del ejemplo anterior, pensemos en un caso en que se domotiza un hogar y sus propietarios tienen acceso remoto a información propia del mismo, como la temperatura de la vivienda, las luces que se encuentran encendidas, el estado de las puertas o de las persianas, etc. En este caso no creemos que el deseo de los propietarios sea que esa información pueda ser accedida públicamente, y menos que pueda ser modificada y que desencadenara una acción de manera inesperada.
Obviamente, cuando se diseñó MQTT se tuvieron todos estos estos problemas presentes, no olvidemos que se trata de un estándar ISO, y se establecieron mecanismos de autenticación basados en usuarios y contraseñas, así como el cifrado de las comunicaciones mediante SSL. Sin embargo, los usuarios finales somos muy cómodos y queremos que todo sea plug-and-play sin que nos caliente la cabeza el nuevo cacharrito que nos hemos comprado y que nos va a permitir prepararnos las tostadas mientras nos lavamos la cara recién levantados…
Para llevar a cabo nuestro estudio nos planteamos descubrir todos los dispositivos en Internet que utilizaran este protocolo. Para ello, la opción más cómoda es Shodan y nos permitió observar que, a fecha de 5 de enero, hay un total de 70.032 dispositivos MQTT a nivel mundial.
Entre estos 7 primeros países se supera el 50% de los dispositivos totales calculados previamente. Además podemos ver como el número de dispositivos es más abundante en los países orientales. España queda en 12º lugar con un total de 1.372 dispositivos en los que nos centraremos más adelante. Otro dato de interés es el software utilizado para soportar esta tecnología:
- un total de 43.063 dispositivos utilizando como plataforma MQTT, software que toma el mismo nombre que el protocolo que implementa y que es distribuido por la organización encargada del desarrollo del protocolo y que podemos descargar desde http://www.mqtt.org/software
- y un total de 26748 dispositivos que utilizan mosquitto, el cual se trata de una implementación open source de las versiones 3.1 y 3.1.1 del software anterior.
Un dato curioso es que mientras que a nivel global el software de MQTT parece estar más presente que mosquitto, en España la cosa cambia drásticamente encontrando 1.018 dispositivos que usan mosquitto (75% de dispositivos) frente a 353 utilizan MQTT.
DISPOSITIVOS ACCESIBLES DESDE INTERNET SIN AUTENTICACIÓN
Nos encontramos con que existen una serie de códigos de respuesta del protocolo que identifican cuando los dispositivos no implementan medidas de autenticación. El código 0 significa que el dispositivo se encuentra accesible, mientras que los códigos 4 y 5 significan que se requiere usuario y contraseña, y que el acceso no está autorizado, respectivamente.
Haciendo uso de los datos obtenidos de Shodan y un script muy simple para extraer aquellos valores que nos interesan, obtenemos rápidamente el registro de información que nos interesa. El resultado es que la cifra de dispositivos abiertos es de 1.122, un 81% de los dispositivos existentes en España.
SOFTWARE INSEGURO
Otro dato que puede resultar de interés es conocer la versión de software que utilizan los dispositivos.
Como se observa en el gráfico anterior, alrededor del 60% de los dispositivos utilizan la versión 1.4.8 de mosquitto. Si buscamos en el repositorio de Github, podemos ver que la siguiente versión a ésta tiene la fecha de 2 de junio de 2016. Por lo tanto, podemos observar que la gran mayoría de los dispositivos no son actualizados, con los riesgos que esto conlleva. El siguiente enlace recopila las vulnerabilidades que han sido encontradas en este software https://mosquitto.org/security/. También se tiene que apuntar que la primera vulnerabilidad no se soluciona hasta la versión 1.4.11; por lo tanto la mayoría de dispositivos en España serían vulnerables.
DATOS EXPUESTOS DIRECTAMENTE A INTERNET
Lo último que nos gustaría mostraros de los datos obtenidos de Shodan son algunos de los topics que podemos encontrar en las direcciones IP que hemos listado anteriormente.
Recopilando el total de topics publicados por el conjunto de dispositivos suman 5.341, todos ellos pertenecientes a dispositivos españoles. Entre ellos podemos observar diferentes marcas tanto de dispositivos como del software que utilizan (llaman la atención alarmas, puertas, luces, termostatos, etc). ¿Se podrían modificar algunos de éstos valores? Es una pregunta que dejamos en el aire.
Debemos ser conscientes de aquello que metemos en nuestras vidas y en nuestros hogares. Muchos de estos dispositivos que utilizamos vienen con configuraciones por defecto y sus fabricantes, en ocasiones, prefieren adornar sus funcionalidades a proveerlos de medidas de seguridad eficaces.