Un Fallo Crítico En El Generador De Números Aleatorios Afecta A Millones De Dispositivos IoT
Investigadores de Bishop Fox Dan Petro y Allan Cecil, publican un estudio que demuestra un grave error que afecta los cimientos de la seguridad del Internet de las Cosas (IoT). Básicamente, todos los dispositivos IoT con un generador de números aleatorios (RNG) por hardware, contienen una vulnerabilidad que afecta a la generación números aleatorios, lo que perjudica su seguridad y los pone en riesgo de ataques.
Cuando se trata de dispositivos IoT, el hardware integrado (SoC) proporciona un periférico RNG dedicado, llamado generador de números aleatorios verdaderos (TRNG). Se utiliza para capturar la aleatoriedad de los procesos físicos. En los sistemas operativos tradicionales, se deriva de un generador de números pseudoaleatorios criptográficamente seguro (CSPRNG), que utiliza la entropía obtenida de una fuente de alta calidad.
Los investigadores observaron la falta de comprobaciones de las respuestas de los códigos de error en todo los ámbitos, lo que lleva a un escenario en el que el número aleatorio generado simplemente no es aleatorio y, lo que es peor, predecible, ello da lugar a una entropía parcial, a una memoria no inicializada e incluso a claves criptográficas que contienen simplemente ceros.
La función HAL del periférico RNG puede fallar por diversas razones, pero la más común (y explotable), es que el dispositivo se haya quedado sin entropía. Los periféricos RNG de hardware extraen entropía del entorno a través de diversos medios (como sensores analógicos o lectores de campo electromagnético EMF/CEM), pero no la tienen forma infinita.
Sólo son capaces de producir un número determinado de bits aleatorios por segundo. Si intentas llamar a la función HAL del RNG cuando no tiene ningún número aleatorio que darte, 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.
El problema es único en el panorama del IoT, normalmente carecen de un sistema operativo que viene con una API de aleatoriedad (por ejemplo, «/dev/urandom» en los sistemas operativos tipo Unix o BCryptGenRandom en Windows), y los investigadores destacan el grupo de entropía más grande de un subsistema CSPRNG, eliminando así cualquier punto único de fallo entre las fuentes de entropía.
Aunque los problemas pueden parchearse con actualizaciones por software, la solución ideal sería que los fabricantes y desarrolladores de dispositivos IoT incluyeran una API CSPRNG. El API debería ser creado a partir de un conjunto de diversas fuentes de entropía, así como asegurarse de que el código no ignore las condiciones de error y en caso necesario, que bloquee las llamadas al RNG cuando no hay más entropía disponible.
Referencias:
- Informe Bishop Fox: https://labs.bishopfox.com/tech-blog/youre-doing-iot-rng
- /dev/urandom: https://es.wikipedia.org/wiki//dev/random
- BCryptGenRandom: https://docs.microsoft.com/es-es/windows/win32/api/bcrypt/nf-bcrypt-bcryptgenrandom
Via: unaaldia.hispasec.com