Les chercheurs en sécurité Dan Petro et Allan Cecil de Bishop Fox Labs ont récemment partagé leurs découvertes concernant une vulnérabilité RNG dans la fondation de l'IoT (Internet des objets) sécurité. La faille critique réside dans les générateurs de nombres matériels (RNG) et affecte 35 milliards d'appareils dans le monde.
"Essentiellement, chaque appareil IoT avec un générateur de nombres aléatoires matériel (RNG) contient une vulnérabilité sérieuse par laquelle il ne parvient pas à générer correctement des nombres aléatoires, qui porte atteinte à la sécurité de toute utilisation en amont," dit le rapport des chercheurs.
Au cœur de la vulnérabilité RNG se trouve l'incapacité à générer correctement des nombres aléatoires, paralysant ainsi les appareils IoT’ sécurité et les exposer à des attaques.
Qu'est-ce que le RNG, ou générateur de nombres aléatoires?
Les RNG sont nécessaires pour la plupart des opérations liées à la sécurité que les ordinateurs effectuent. Ces générateurs créent les soi-disant «secrets» qui forment la base de la cryptographie, contrôles d'accès, authentification, etc. La manière dont ceux-ci sont générés dépend de l'objectif final. Cependant, l'exemple canonique est la génération d'une clé de chiffrement. "En réalité, dans beaucoup de cas, les appareils choisissent les clés de chiffrement de 0 ou pire. Cela peut conduire à un effondrement catastrophique de la sécurité pour toute utilisation en amont,"Note le rapport.
Quel est le cœur de la vulnérabilité RNG dans les appareils IoT?
Apparemment, à partir de 2021, la plupart des nouveaux systèmes sur puce IoT, connu sous le nom de SoC, contenir un périphérique RNG matériel dédié conçu pour résoudre ce problème. Cependant, le résoudre est assez compliqué, et il se trouve, la norme IoT actuelle peut être décrite comme « le faire mal ».
L'un des plus grands dangers survient lorsque les développeurs ne vérifient pas les réponses du code d'erreur, résultant en des nombres moins aléatoires que ce qui est requis pour une utilisation liée à la sécurité.
Lorsqu'un appareil IoT nécessite un nombre aléatoire, il appelle le RNG matériel dédié soit via le SDK de l'appareil, soit de plus en plus via un système d'exploitation IoT. Le nom de l'appel de fonction varie, bien sûr, mais cela a lieu dans la couche d'abstraction matérielle (QUESTION).
Ce sont les parties les plus importantes de la couche d'abstraction matérielle (QUESTION):
- Un paramètre de sortie appelé out_number. C'est là que la fonction mettra le nombre aléatoire; c'est un pointeur vers un entier 32 bits non signé.
- Une valeur de retour pour spécifier les cas d'erreur. Selon l'appareil, il peut s'agir d'un booléen ou de n'importe quel nombre de conditions d'erreur énumérées.
Presque personne ne vérifie le code d'erreur de la fonction RNG HAL. Selon le matériel, cela pourrait conduire à l'un des problèmes suivants: manque d'entropie, le nombre 0, et mémoire non initialisée.
Par exemple, "si vous essayez d'appeler la fonction RNG HAL alors qu'elle n'a pas de nombres aléatoires à vous donner, il échouera et renverra un code d'erreur. Ainsi, si l'appareil essaie d'obtenir trop de nombres aléatoires trop rapidement, les appels commenceront à échouer,” Petro et Cecil disent.
Quelles sont les solutions à la vulnérabilité RNG?
Étant donné que les deux solutions disponibles - interrompre et tuer l'ensemble du processus, et la boucle tournante sur la fonction HAL - ne sont pas acceptables, les développeurs ont tendance à ignorer complètement la condition d'erreur.
Pourquoi la vulnérabilité RNG est-elle uniquement spécifique aux appareils IoT, et non des ordinateurs portables et des serveurs?
Le problème est propre au monde de l'IoT, car la gestion des appareils de bas niveau est généralement gérée par un système d'exploitation fourni avec une API aléatoire.
Le rapport met également en lumière les avantages d'un plus grand pool d'entropie associé à un sous-système CSPRNG (Générateur de nombres pseudo-aléatoires en continu) qui supprime « tout point de défaillance unique parmi les sources d'entropie ».
La divulgation technique complète est disponible dans le rapport original, intitulé «Vous faites de l'IoT RNG".
Juin dernier, une grave vulnérabilité, connu sous l'avis CVE-2020-12695, a été découvert dans un protocole de base dans presque tous les appareils IoT - Universal Plug and Play (UPnP) protocole. La faille, doublé CallStranger, pourrait permettre aux attaquants de prendre le contrôle des appareils IoT dans les attaques DDoS. Le bug pourrait être exploité dans d'autres types d'attaques, où les solutions de sécurité sont contournées et les réseaux internes sont atteints.