Бесплатно Экспресс-аудит сайта:

11.08.2021

Уязвимость в генераторах случайных чисел затрагивает миллиарды IoT-устройств

В аппаратных генераторах случайных чисел, использующихся в миллиардах IoT-устройств, обнаружена опасная уязвимость, из-за которой случайные числа не генерируются должным образом, что подрывает безопасность устройств и ставит их под угрозу кибератак.

Как пояснили специалисты компании Bishop Fox Дан Петро (Dan Petro) и Аллан Сесил (Allan Cecil), числа, которые генератор должен выбирать случайным образом, не всегда являются случайными.

«По факту, в большинстве случаев устройства устанавливают в качестве ключей шифрования 0 или еще хуже. Это может привести к катастрофическому краху безопасности», - сообщили исследователи.

Генерирование случайных чисел является чрезвычайно важным процессом, использующимся в криптографии, в том числе для генерирования ключей шифрования, одноразовых случайных чисел и «соли». В традиционных операционных системах используется криптографически безопасный генератор псевдослучайных чисел, который использует энтропию, полученную из высококачественного начального источника.

В IoT-устройствах генерирование случайных чисел осуществляется с помощью расположенного на SoC-чипе крошечного аппаратного генератора по-настоящему случайных чисел, который используется для захвата случайности из физических процессов и явлений.

Исследователи обнаружили, что способ вызова этого периферийного устройства является некорректным, и отметили отсутствие проверок кодов ошибок, из-за чего генерируемое случайное число является не просто неслучайным, но, что еще хуже, предсказуемым. В результате выходит недостаточная энтропия, неинициализированная память и даже ключи шифрования, содержащие простые нули.

Как пояснили исследователи, сбои в работе функции HAL генератора случайных чисел могут происходить по ряду причин, но наиболее распространенной (и чаще всего используемой) является нехватка источников энтропии.

«Устройство получает энтропию из вселенной различными способами (например, с помощью аналоговых датчиков и электромагнитного излучения), но эти источники не бесконечны. Они способны производить только определенное количество случайных битов в секунду. Если вы попытаетесь вызвать функцию HAL генератора случайных чисел, когда у нее нет случайных чисел, которые можно было бы передать, произойдет сбой и вернется код ошибки. Таким образом, если устройство попытается слишком быстро получить слишком много случайных чисел, вызовы начнут отказывать», - пояснили исследователи.

Проблема уникальна для IoT-устройств, поскольку у них нет операционной системы со встроенным API случайности (например, /dev/random в Unix-подобных ОС и BCryptGenRandom в Windows).

HAL – демон, отвечающий за обнаружение, перечисление и посредничество доступа к большей части оборудования на главном компьютере.