13 января в блоге Krebs on Security был опубликован пост, в котором утверждалось, что в реализации криптографической библиотеки crypt32.dll, входящей в состав ОС Windows, обнаружена критическая уязвимость. Она потенциально может быть использована для проведения ложной аутентификации в различных компонентах ОС. Эти сведения были подтверждены АНБ США. Уязвимость получила номер CVE-2020-0601 и была оперативно устранена Microsoft. Отметим, что первоначальные опасения о том, что уязвимости подвержены все версии Windows, начиная с Windows XP, не оправдались, и проблема возникает лишь в отношении Windows 10, Windows Server 2016 и 2019. В случае, если Вы используете уязвимую версию Windows, рекомендуется как можно скорее обновить систему.
По данным, опубликованным в ряде аналитических обзоров, например, подготовленным компанией Kudelski Security, уязвимость возникает из-за некорректного построения цепочек сертификатов открытых ключей при использовании алгоритмов на основе эллиптических кривых. Непосредственно ошибка заключается в неполном сравнении параметров эллиптической кривой, используемой в схеме электронной подписи, при построении цепочек сертификатов, что даёт злоумышленнику возможность подменить один из параметров кривой (а именно – образующий элемент группы точек) и, используя это, получить новый сертификат ключевой пары, открытый ключ которой будет совпадать с атакуемым открытым ключом, например, ключом УЦ (математические выкладки можно найти, например, здесь). Новый сертификат может быть использован злоумышленником для выпуска зловредных сертификатов TLS или подписи кода, которые будут считаться уязвимой версией Windows доверенными, из-за чего, в свою очередь, на компьютере с такой ОС доверенными будут считаться Web-страницы и приложения, использующие для аутентификации такие зловредные сертификаты. Работоспособность рассматриваемых сценариев уже доказана представленными Proof-of-Concept (раз, два).
Отметим также, что возможность смены такого параметра как образующий элемент группы точек эллиптической кривой потенциально может использоваться для проведения атак на криптографические протоколы, опирающиеся на невозможность отказа от авторства подписанного сообщения, которую должны гарантировать схемы электронной подписи.
Несмотря на то, что описанная уязвимость применима строго к сертификатам, использующим криптографию на эллиптических кривых, она никак не связана с математической теорией групп точек эллиптических кривых, не демонстрирует наличие структурных проблем аппарата эллиптических кривых (и, тем более, необходимости его замены) и не приводит к компрометации секретных ключей. Подчеркнём также, что уязвимость не затрагивает общую логику построения цепочек сертификатов в ОС Windows, а исключительно работу с определёнными типами сертификатов.
И самый важный вопрос, на который хотелось бы обратить внимание - остаются ли безопасными отечественные сертифицированные СКЗИ при работе в уязвимых версиях ОС Windows? Да, конечно, остаются. В частности, реализации операций в группах точек эллиптической кривой в СКЗИ КриптоПро CSP всех версий (а вся криптография, конечно, всегда реализуется внутри СКЗИ, без какого-либо переиспользования системных реализаций), в обязательном порядке производят полную проверку корректности параметров используемой эллиптической кривой. Кроме того, все используемые параметры эллиптических кривых вшиты в код, и благодаря механизмам контроля целостности не могут быть изменены в ходе установки, настройки и работы СКЗИ.
Эксплуатация этой уязвимости блокируется и на уровне выработки параметров эллиптических кривых. СКЗИ КриптоПро CSP для операций формирования и проверки подписи ГОСТ Р 34.10-2012 использует семь эллиптических кривых, стандартизированных в Российской Федерации, и только их. Напомним, что при выработке этих кривых (как именно это производилось, мы уже описывали в нашем блоге здесь и здесь) процедура определения образующего элемента чётко зафиксирована и не даёт права его выбора разработчику или, тем более, пользователю СКЗИ. Такая позиция рабочих групп Технического комитета 26 «Криптографическая защита информации» вызвана как желанием создать конечный набор общепринятых эллиптических кривых, криптографические свойства которых были бы пристально изучены с учетом новейших криптоаналитических результатов, так и стремлением избежать наличия дополнительного вектора для атак (что, собственно, и произошло у Microsoft). Этот факт, а также факт использования в профилях сертификатов открытых ключей идентификаторов эллиптических кривых, однозначно задающих полный набор параметров одной из семи стандартизированных в Российской Федерации эллиптических кривых, даёт полную гарантию невозможности применения данной уязвимости при использовании российской криптографии.
Николаев В. Д.
Луцик П. И.
Смышляева Е.С.
КриптоПро