En un principio el llamado Internet de las Cosas (o Internet of Things) fue muy criticado por los expertos en seguridad, ya que muchos fabricantes de dispositivos conectados que querían sumarse a la tendencia no los securizaban convenientemente, dejando vulnerabilidades y exponiendo a los usuarios en sus lugares más sensibles, sus hogares.
Mucho se ha avanzado desde entonces, pero aún queda mucho por hacer. Ahora se ha descubierto que existe un agujero en la base de la seguridad del ioT que afectaría a 35.000 millones de dispositivos en todo el mundo. De esa manera tan tajante lo afirman dos expertos de la firma de investigación en seguridad ofensiva Bishop Fox Labs, Dan Petro y Allan Cecil.
Los investigadores afirman que cada equipo, aparato o gadget conectado al Internet de las Cosas con un generador de números aleatorios de hardware (RNG) contiene una vulnerabilidad grave por la cual no genera números al azar de manera correcta, lo cual socava su seguridad en cualquier uso ascendente.
Desde 2021 la mayoría de los nuevos systems-on-a-chip (SoC) basados en IoT incorporan un periférico RNG de hardware que trata de evitar este problema, pero el inconveniente está en cómo se está usando este. A ojos de la firma, se está "haciendo mal".
El problema es que estas cifras elegidas aleatoriamente no son tan azarosas como deberían. En muchos casos los dispositivos escogerían claves de cifrado o algo peor. Según Bishop Fox Labs, esto "puede crear un colapso catastrófico de la seguridad para cualquier uso ascendente" .
En qué consiste el fallo
Cuando un dispositivo de IoT requiere un número aleatorio, realiza una llamada al RNG de hardware dedicado, ya sea a través del SDK (kit de desarrollo de software) del dispositivo o, cada vez más, a través de un sistema operativo de IoT. El nombre de la llamada a la función varía, por supuesto, pero tiene lugar en la capa de abstracción de hardware (HAL). Esta es una API creada por el fabricante del dispositivo y está diseñada para que pueda interactuar más fácilmente con el hardware a través del código C y no tener que perder el tiempo con la configuración y verificación de registros específicos exclusivos del dispositivo.
La función HAL tiene dos partes relacionadas con el problema: un parámetro de salida llamado out_number en la que se pone el número aleatorio y un valor de retorno para especificar los casos de error. Desafortunadamente, por lo general nadie está controlando el código de error. Los dispositivos no lo verifican.
Los investigadores han encontrado la falta de comprobaciones de las respuestas de los códigos de error en varios supuestos, lo que llevaría a un escenario en el que el número aleatorio generado simplemente no es aleatorio. Además, resulta predecible, lo que da lugar a una entropía parcial, a una memoria no inicializada e incluso a claves criptográficas que incluyen solo ceros.
"La función HAL del periférico RNG puede fallar por una variedad de razones, pero la más común (y explotable) es que el dispositivo se haya quedado sin entropía. Los periféricos de hardware RNG extraen la entropía del universo a través de una variedad de medios (como sensores analógicos o lecturas EMF) pero no la tienen en un suministro infinito. Solo son capaces de producir determinados bits aleatorios por segundo. Si intentas llamar a la función RNG HAL cuando no tienes números aleatorios para darle, fallará y devolverá un código de error. Por lo tanto, si el dispositivo intenta obtener demasiados números aleatorios demasiado rápido , las llamadas comenzarán a fallar", aclaran los investigadores.
"Eso es lo que pasa con los números aleatorios; no es suficiente tener solo uno. Cuando un dispositivo necesita generar una nueva clave privada de 2048 bits, como ejemplo conservador, llamará a la función RNG HAL una y otra vez en un bucle. Esto comienza a poner a prueba seriamente la capacidad del hardware para mantenerse al día y, en la práctica, a menudo no pueden. Las primeras llamadas pueden tener éxito, pero generalmente comenzarán a causar errores rápidamente", añaden desde la compañía.