01.10.2020

Уязвимость в TLS, допускающая определение первичного ключа для соединений на базе шифров DH


Раскрыты сведения о новой уязвимости (CVE-2020-1968) в протоколе TLS, получившей кодовое имя Raccoon и позволяющей при редком стечении обстоятельств определить предварительный первичный ключ (pre-master), который можно использовать для расшифровки TLS-соединений, в том числе HTTPS, при перехвате транзитного трафика (MITM). Отмечается, что атака очень сложна для практической реализации и больше носит теоретический характер. Для проведения атаки требуется специфичная конфигурация TLS-сервера и возможность очень точного замера времени обработки операций сервером.

Проблема присутствует непосредственно в спецификации TLS и затрагивает только соединения, использующие шифры на основе протокола обмена ключами DH (Diffie-Hellman, TLS_DH_*»). С шифрами ECDH проблема не проявляется и они остаются безопасными. Уязвимы только протоколы TLS до версии 1.2 включительно, протокол TLS 1.3 проблеме не подвержен. Уязвимость проявляется в реализациях TLS, повторно использующих секретный ключ DH в разных TLS-соединениях (подобное поведение наблюдается примерно на 4.4% серверов из рейтинга Alexa Top 1M).

В OpenSSL 1.0.2e и более ранних выпусках секретный ключ DH повторно используется во всех серверных соединениях, если явно не выставлена опция SSL_OP_SINGLE_DH_USE. Начиная с OpenSSL 1.0.2f секретный ключ DH повторно используется только при использовании статических DH-шифров («DH-*», например «DH-RSA-AES256-SHA»). В OpenSSL 1.1.1 уязвимость не проявляется, так как в данной ветке не используется секретный ключ DH и не применяются статические DH-шифры.

При использовании метода обмена ключами DH обе стороны соединения генерируют случайные закрытые ключи (далее ключ «a» и ключ «b»), на основе которых вычисляются и отправляются открытые ключи (ga mod p и gb mod p). После получения открытых ключей каждой стороной вычисляется общий первичный ключ (gab mod p), который применяется для формирования сессионных ключей. Атака Raccoon позволяет определить первичный ключ через анализ информации по сторонним каналам, отталкиваясь от того, что в спецификациях TLS вплоть до версии 1.2 предписывается отбрасывать все начальные нулевые байты первичного ключа перед вычислениями с его участием.

В том числе урезанный первичный ключ передаётся в функцию генерации сессионного ключа, основанную на хэш-функциях, отличающимися задержками при выполнении. Точное измерения времени выполняемых сервером операций с ключом позволяет атакующему определить подсказки (oracle), которые позволяют судить о том, начинается первичный ключ с нуля или нет. Например, атакующий может перехватить отправленный клиентом открытый ключ (ga), переотправить его на сервер и определить начинается ли с нуля результирующий первичный ключ.

Само по себе определение одного байта ключа ничего не даёт, но перехватив переданное при согласовании соединения клиентом значение «ga» атакующий может сформировать набор других значений, связанных с «ga» и отправить их на сервер в отдельных сеансах согласования соединения. Формируя и отправляя значения «gri*ga«, атакующий может через анализ изменения задержек в ответе сервера определить значения, приводящие к получению первичных ключей, начинающихся с нуля. Определив подобные значения атакующий может построить набор уравнений для решения проблемы скрытых чисел и вычислить исходных первичный ключ.

В OpenSSL уязвимости присвоен низкий уровень опасности, а исправление свелось к перемещению в выпуске 1.0.2w проблемных шифров «TLS_DH_*» в отключённую по умолчанию категорию шифров с недостаточным уровнем защиты («weak-ssl-ciphers»). Аналогично поступили разработчики Mozilla, которые отключили в библиотеке NSS, используемой в Firefox, наборы шифров DH и DHE. В Firefox 78 проблемные шифры отключены. В Chrome поддержка DH была прекращена ещё в 2016 году. Библиотеки BearSSL, BoringSSL, Botan, Mbed TLS и s2n проблеме на подвержены, так как не поддерживают шифры DH или статические варианты шифров DH.

Отдельно отмечаются дополнительные проблемы (CVE-2020-5929) в TLS-стеке устройств F5 BIG-IP, делающие атаку более реалистичной. В частности были выявлены отклонения в поведении устройств при наличии нулевого байта в начале первичного ключа, которые можно использовать вместо измерения точного времени задержки.

Источник: https://www.opennet.ru/opennews/art.shtml?num=53686

Добавить комментарий