Уязвимость в генераторах случайных чисел затрагивает миллиарды IoT-устройств
В аппаратных генераторах случайных чисел, использующихся в миллиардах IoT-устройств, обнаружена опасная уязвимость, из-за которой случайные числа не генерируются должным образом, что подрывает безопасность устройств и ставит их под угрозу кибератак.
Как пояснили специалисты компании Bishop Fox Дан Петро (Dan Petro) и Аллан Сесил (Allan Cecil), числа, которые генератор должен выбирать случайным образом, не всегда являются случайными.
"По факту, в большинстве случаев устройства устанавливают в качестве ключей шифрования 0 или еще хуже. Это может привести к катастрофическому краху безопасности", - сообщили исследователи.
Генерирование случайных чисел является чрезвычайно важным процессом, использующимся в криптографии, в том числе для генерирования ключей шифрования, одноразовых случайных чисел и "соли". В традиционных операционных системах используется криптографически безопасный генератор псевдослучайных чисел, который использует энтропию, полученную из высококачественного начального источника.
В IoT-устройствах генерирование случайных чисел осуществляется с помощью расположенного на SoC-чипе крошечного аппаратного генератора по-настоящему случайных чисел, который используется для захвата случайности из физических процессов и явлений.
Исследователи обнаружили, что способ вызова этого периферийного устройства является некорректным, и отметили отсутствие проверок кодов ошибок, из-за чего генерируемое случайное число является не просто неслучайным, но, что еще хуже, предсказуемым. В результате выходит недостаточная энтропия, неинициализированная память и даже ключи шифрования, содержащие простые нули.
Как пояснили исследователи, сбои в работе функции HAL генератора случайных чисел могут происходить по ряду причин, но наиболее распространенной (и чаще всего используемой) является нехватка источников энтропии.
"Устройство получает энтропию из вселенной различными способами (например, с помощью аналоговых датчиков и электромагнитного излучения), но эти источники не бесконечны. Они способны производить только определенное количество случайных битов в секунду. Если вы попытаетесь вызвать функцию HAL генератора случайных чисел, когда у нее нет случайных чисел, которые можно было бы передать, произойдет сбой и вернется код ошибки. Таким образом, если устройство попытается слишком быстро получить слишком много случайных чисел, вызовы начнут отказывать", - пояснили исследователи.
Проблема уникальна для IoT-устройств, поскольку у них нет операционной системы со встроенным API случайности (например, /dev/random в Unix-подобных ОС и BCryptGenRandom в Windows).
HAL - демон, отвечающий за обнаружение, перечисление и посредничество доступа к большей части оборудования на главном компьютере.