Une faille critique du générateur de nombres aléatoires affecte des milliards d'appareils IoT

Une vulnérabilité critique a été révélée dans les générateurs matériels de nombres aléatoires utilisés dans des milliards d'appareils de l'Internet des objets (IoT), qui ne parviennent pas à générer correctement des nombres aléatoires, compromettant ainsi leur sécurité et les mettant en danger d'attaques.

"Il s'avère que ces nombres choisis 'au hasard' ne sont pas toujours aussi aléatoires que vous le souhaiteriez en ce qui concerne les appareils IoT", ont déclaré les chercheurs de Bishop Fox, Dan Petro et Allan Cecil, dans une analyse publiée la semaine dernière. "En fait, dans de nombreux cas, les appareils choisissent des clés de chiffrement de 0 ou pire. Cela peut entraîner un effondrement catastrophique de la sécurité pour toute utilisation en amont."

La génération de nombres aléatoires est un processus crucial qui sous-tend plusieurs applications cryptographiques, notamment la génération de clés, les nonces et le salage. Sur les systèmes d'exploitation traditionnels, il est dérivé d'un générateur de nombres pseudo-aléatoires cryptographiquement sécurisé (CSPRNG) qui utilise l'entropie obtenue à partir d'une source d'amorçage de haute qualité.

En ce qui concerne les appareils IoT, ceux-ci sont fournis par un système sur puce (SoC) qui abrite un périphérique matériel de génération de nombres aléatoires dédié appelé "véritable générateur de nombres aléatoires" qui est utilisé pour capturer le caractère aléatoire des processus ou phénomènes physiques.

Déclarant que la manière dont le périphérique est actuellement invoqué était incorrect, les chercheurs ont noté le manque de vérifications des réponses de code d'erreur à tous les niveaux, conduisant à un scénario où le nombre aléatoire généré n'est pas simplement aléatoire, et pire, prévisible, résultant en une entropie partielle, une mémoire non initialisée et même des clés de chiffrement contenant des zéros simples.

"La fonction HAL du périphérique de génération de nombres aléatoires peut échouer pour diverses raisons, mais la plus courante (et exploitable) est de loin le manque d'entropie de l'appareil", ont noté les chercheurs. "Les périphériques de génération de nombres aléatoires matériels extraient l'entropie de l'univers par divers moyens (tels que des capteurs analogiques ou des lectures EMF) mais ne l'ont pas en quantité infinie."

"Ils sont seulement capables de produire autant de bits aléatoires par seconde. Si vous essayez d'appeler la fonction de génération de nombres aléatoires HAL alors qu'elle n'a pas de nombres aléatoires à vous donner, elle é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."

Le problème est unique au paysage de l'IoT car il leur manque un système d'exploitation qui est généralement livré avec une API aléatoire (par exemple, "/dev/random" dans les systèmes d'exploitation de type Unix ou BCryptGenRandom dans Windows), les chercheurs soulignant les avantages d'un plus grand pool d'entropie associé à un sous-système CSPRNG, supprimant ainsi "tout point de défaillance unique parmi les sources d'entropie".

Bien que les problèmes puissent être résolus avec des mises à jour logicielles, la solution idéale serait pour les fabricants et développeurs d'appareils IoT d'inclure une API CSPRNG issue d'un ensemble de sources d'entropie diverses et de s'assurer que le code n'ignore pas les conditions d'erreur ou ne parvient pas à bloquer appels au générateur de nombres aléatoires lorsqu'il n'y a plus d'entropie disponible.

"L'un des aspects difficiles de cette vulnérabilité est qu'il ne s'agit pas d'un simple cas qui peut être corrigé facilement", ont déclaré les chercheurs, soulignant la nécessité de mettre en œuvre CSPRNG dans un système d'exploitation IoT. « Afin de résoudre ce problème, une fonctionnalité importante et complexe doit être intégrée à l'appareil IoT. »


Source : The Hacker News