Утиная охота

Октябрь 2017 оказался богат на “именные” уязвимости. 23 октября была опубликована информация об атаке, получившей название DUHK. Как водится, это акроним — на этот раз от фразы “Do not Use Hardcoded Keys”. Из-за созвучия в английском языке со словом duck — утка — был выбран логотип сайта. Обнаружили проблему исследователи из университета Пенсильвании во главе с Мэтью Грином (Matthew Green). На этот раз первопричиной всех бед оказался устаревший генератор случайных чисел, специфицированный в стандарте X9.31.

Случайные числа и их создание — один из ключевых механизмов современной криптографии. Без надёжного алгоритма генерации случайных чисел легко подобрать ключи электронной подписи или вмешаться в, казалось бы, надёжно зашифрованный трафик. До истинной случайности добраться очень трудно, поэтому в реальном программировании собирают энтропию буквально по крупицам, а потом уже полученные биты случайной информации применяют для затравки математического алгоритма, который по исходным данным выдаст последовательность чисел, удовлетворяющих всем критериям “хороших” случайных чисел — но всё-таки детерминированную. Раскрытие входных данных компрометирует весь поток, и пример тому — история генератора EC-DRBG, о которой мы уже неоднократно писали.

Желающим ознакомиться с проблемой в деталях стоит обратиться к посту в блоге Мэтью Грина. В кратком пересказе проблема выглядит так. У X9.31, стандартизированного ещё в прошлом веке, объявленного устаревшим в 2011 году и окончательно выведенного из употребления только в 2016 году, входные параметры были фиксированы. Для успешной атаки требовалось получить один из входных параметров и 16-байтовый съём с датчика. После этого, предполагая время совершения операции, полностью восстановить состояние датчика, и тем самым предсказывать новые и новые случайные числа, а значит, расшифровывать трафик. 16-байтовый съём во многих протоколах передаётся открытым текстом, так что задача оказалась легко разрешимой. Собственно, нетривиально в этом только выяснение входного параметра. Исследование показало, что часть производителей опубликовала этот секретный параметр, а остальные создавали его в момент заливки прошивки. Исследовав прошивку, можно прослушивать, например, VPN-соединения.

Все эти условия (на самом деле, чуть более строгие, но это в данном случае несущественно) оказались выполненными. Среди пострадавших производителей на первой строчке списка оказалась компания Fortinet, исправившая ошибку в новой версии FortiOS 4.3.19. Уязвимых устройств при сканировании обнаружено не очень много, около 25000. Среди компаний, которые ранее тоже использовали устаревший алгоритм — Cisco, ViaSat и многие другие. Но полностью картина остаётся неясной, и не исключено, что мы услышим об уязвимости в продукции других производителей железа. В любом случае стоит обновить прошивку, как только обновления безопасности будут выпущены. А компаниям, использующим решения, сертифицированные по FIPS, стоит задать вопрос интеграторам про то, какую же именно версию стандарта они использовали. Так, в записи Грина упоминается аналогичный алгоритм X9.17, который тоже может быть атакован.

Вопросы синхронизации сертификации, обновления стандартов и исправления уязвимостей выявляют целый комплекс проблем. Так, в исследовании почти миллиона самых популярных сайтов до сих пор фигурирует около 4% поддержки безнадёжно устаревшего протокола SSLv2. В этой ситуации многие рассчитывают на безопасность по принципу “соседа взломать проще”, что совершенно неоправданно в долгосрочной перспективе.


Автор:  Дмитрий Белявский (ТЦИ)

Возврат к списку