Уязвимость DROWN в SSLv2 позволяет дешифровать TLS-трафик

в 8:49, , рубрики: DROWN, openssl, SSL, sslv2, Блог компании «Digital Security», информационная безопасность, Сетевые технологии

image

SSLv2, протокол шифрования от Netscape, вышедший в 1995 году и потерявший актуальность уже в 1996, казалось бы, в 2016 году должен быть отключен во всем ПО, использующем SSL/TLS-шифрование, особенно после уязвимостей POODLE в SSLv3, позволяющей дешифровать 1 байт за 256 запросов, и FREAK, связанной с ослабленными (экспортными) версиями шифров.
И если клиентское ПО (например, браузеры) давно не поддерживает подключения по протоколу SSLv2, и, с недавнего времени, и SSLv3, то с серверным ПО не все так однозначно.

Группа исследователей из Тель-Авивского университета, Мюнстенского университета прикладных наук, Рурского университета в Бохуме, Университета Пенсильвании, Мичиганского университета, Two Sigma, Google, проекта Hashcat и OpenSSL обнаружили уязвимость под названием DROWN — Decrypting RSA using Obsolete and Weakened eNcryption, которая позволяет дешифровать TLS-трафик клиента, если на серверной стороне не отключена поддержка протокола SSLv2 во всех серверах, оперирующих одним и тем же приватным ключом.
Согласно исследованию, 25% из миллиона самых посещаемых веб-сайтов подвержены этой уязвимости, или 22% из всех просканированных серверов, использующих сертификаты, выданные публичными центрами сертификации.

Почему это возможно?

Несмотря на то, что у большинства веб-серверов протокол SSLv2 отключен по умолчанию, и его никто не будет включать намеренно, данная атака позволяет дешифровать TLS-трафик, имея доступ к любому серверу, поддерживающему SSLv2, и использующему такой же приватный ключ, что и веб-сервер. Часто можно встретить использование одного и того же сертификата для веб-сервера и почтового сервера, а также для FTPS.

Общий вариант атаки эксплуатирует уязвимость в экспортных шифрах SSLv2, использующие 40-битные ключи RSA.
Для успешного совершения атаки в случае, если информация передается без использования эфемерных ключей, согласованных про протоколу Диффи-Хеллмана или его версии на эллиптических кривых, злоумышленнику необходимо пассивно прослушивать сотни TLS-соединений жертвы и отправлять специальным образом сформированные пакеты на сервер с SSLv2, использующий такой же приватный ключ.
Атака возможна вследствие утечки информации о корректности расшифровки пакета в протоколе SSLv2. Используя атаку Данэля Блейхенбахера и отправляя перехваченные клиентские пакеты с зашифрованным 48-битным предварительным секретом (pre-master secret), хакер сможет полностью расшифровать одну из примерно 900 TLS-сессий клиента. Для выполнения атаки требуется послать около 40000 запросов на сервер с включенным SSLv2, подбирая ключ для слабого симметричного шифрования на каждое отправленное сообщение.
Исследователям удалось восстановить TLS-сессию клиента в течение 8 часов, используя 200 машин Amazon EC2: 150 типа g2.2xlarge c nVidia GPU, и 50 g2.8xlarge с 4 nVidia GPU. Стоимость такой атаки составила $440.

Исследователи отмечают, что в версиях OpenSSL, вышедших с 2010 по январь 2016 год, допущена досадная ошибка, связанная с экспортными шифрами.
В 2010 году разработчики OpenSSL приняли решение по умолчанию отключить все ослабленные шифры, но не отключать полностью SSLv2. Таким образом, казалось бы, хоть SSLv2 и оставался технически включенным, использовать его с ослабленными шифрами было бы нельзя. К сожалению, в коде была допущена ошибка, фактически отключающая проверку, и позволяя указать серверу любой экспортный шифр. Ошибку исправили только версии OpenSSL, вышедшей в январе 2016.

«Частный» DROWN

Кроме общего случая, существует и заметно более быстрый частный случай атаки, эксплуатирующий другую ошибку в OpenSSL, которая оставалась незамеченной как минимум с начала проекта OpenSSL (1998 год), а может быть еще и SSLeay (1995 год), и была случайно исправлена во время исследования другой проблемы 4 марта 2015 года.
Уязвимость позволяет восстанавливать master secret побайтово, совершая всего 1920 запросов к серверу для восстановления 128-битного ключа.
Атака настолько вычислительно простая, что ее возможно совершить на обычном компьютере за минуту.

Данной атаке подвержено около 9% серверов из списка Alexa Top Million.

Помимо всего прочего, атаку можно осуществить в том числе на протокол QUIC — транспортный протокол, использующий UDP, созданный Google.
TLS-сессии, использующие эфемерные ключи, тоже уязвимы, однако требуют вмешательство в сессию в виде «человека посередине».

Как защититься?

Если вы используете OpenSSL 1.0.2 (без буквы), 1.0.1l или более ранние, вам необходимо немедленно обновить его. Если есть возможность, лучше использовать самую последнюю версию OpenSSL 1.0.2g и 1.0.1s, из которых исключена поддержка SSLv2. В ином случае, отключайте поддержку SSLv2 в используемом вами ПО самостоятельно.

Если вы используете веб-сервер Apache, необходимо отключить поддержку протокола SSLv2 (и за одно и SSLv3, чтобы веб-сервер не оставался уязвимым к атаке POODLE):

SSLProtocol All -SSLv2 -SSLv3

Для nginx достаточно оставить включенными только протоколы TLS:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2

Почтовый сервер Postfix в версиях 2.9.14, 2.10.8, 2.11.6, 3.0.2 и более новых по умолчанию настроен без поддержки SSLv2. Если у вас более старая версия, воспользуйтесь примером конфигурации со страницы исследователей.

Если у вас нет возможности отключить поддержку SSLv2 (например, на встроенном устройстве), убедитесь, чтобы этот сервер использовал уникальный приватный ключ, не используемый где-либо еще.

Если вы используете Linux, вам может быть полезна утилита needrestart, которая определяет сервисы, использующие старые версии библиотек, и перезапускает их.

Ссылки

Веб-сайт уязвимости
Академическая публикация
Неинтерактивное средство проверки (проверяет сайт по базе, которая собиралась до опубликовывания информации об уязвимости)
Сканер-приложение, проверяющее наличие поддержки SSLv2 и уязвимости OpenSSL
Информация об уязвимости на openssl.org
Подробности на ArcTechnica и технические подробности от криптографа Мэттью Грина

Автор: Digital Security

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js