Атака DROWN ( расшифровка RSA с устаревшим и ослабленным eNcryption ) — это кросс-протокольная ошибка безопасности , которая атакует серверы, поддерживающие современные наборы протоколов SSLv3/ TLS , используя их поддержку устаревшего, небезопасного протокола SSL v2 для атаки на соединения с использованием современных протоколов, которые в противном случае были бы безопасными. [1] [2] DROWN может повлиять на все типы серверов, которые предлагают услуги, зашифрованные с помощью SSLv3/TLS, но при этом поддерживают SSLv2, при условии, что они используют одни и те же учетные данные открытого ключа между двумя протоколами. [3] Кроме того, если тот же сертификат открытого ключа используется на другом сервере, поддерживающем SSLv2, сервер TLS также уязвим из-за утечки сервером SSLv2 ключевой информации, которая может быть использована против сервера TLS. [3]
Полные сведения о DROWN были объявлены в марте 2016 года вместе с патчем, который отключает SSLv2 в OpenSSL; уязвимости был присвоен идентификатор CVE - 2016-0800. [4] Одного патча будет недостаточно для смягчения атаки, если сертификат можно найти на другом хосте SSLv2. Единственная жизнеспособная контрмера - отключить SSLv2 на всех серверах.
Исследователи подсчитали, что по состоянию на 1 марта 2016 года 33% всех сайтов HTTPS были затронуты этой уязвимостью. [5]
DROWN — это аббревиатура от "Decrypting RSA with Obsolete and Weakened eNcryption" (Расшифровка RSA с устаревшим и ослабленным eNcryption). [6] Он использует уязвимость в комбинации используемых протоколов и конфигурации сервера, а не какую-либо конкретную ошибку реализации. По словам первооткрывателей, эксплойт нельзя исправить, внеся изменения в клиентское программное обеспечение, такое как веб-браузеры. [3]
Эксплойт включает атаку с выбранным шифротекстом с использованием сервера SSLv2 в качестве оракула Блейхенбахера . SSLv2 работал, шифруя главный секрет напрямую с помощью RSA, а 40-битные экспортные шифронаборы работали, шифруя только 40 бит главного секрета и раскрывая остальные 88 бит как открытый текст. 48-байтовый зашифрованный SSLv3/TLS RSA-шифротекст «обрезается» до 40-битных частей и затем используется в сообщении SSLv2 ClientMasterKey, которое сервер обрабатывает как 40-битную часть главного секрета SSLv2 (остальные 88 бит могут быть любым значением, отправленным клиентом как открытый текст). Путем подбора 40-битного шифрования сообщение ServerVerify может использоваться как оракул. Атака с целью проверки концепции продемонстрировала, как конфигурации с несколькими GPU и коммерческие облачные вычисления могут выполнять часть вычислений по взлому кода, при стоимости около $18 000 за установку GPU и стоимости атаки в $400 за облако. Успешная атака предоставит ключ сеанса для захваченного рукопожатия TLS.
Исследователи, которые описали атаку выше как общую атаку DROWN, также обнаружили определенную слабость в реализации OpenSSL SSLv2, которая допускала то, что они назвали специальной атакой DROWN . Это значительно сократило усилия, необходимые для взлома шифрования, сделав возможными атаки типа «человек посередине» в реальном времени , которые требовали лишь скромных вычислительных ресурсов. Реализация OpenSSL SSLv2 до 2015 года не проверяла правильность длины открытого и зашифрованного ключей, позволяя, например, шифровать только 8 бит главного секрета. До 2015 года OpenSSL также перезаписывал неправильные байты в главном секрете SSLv2 во время попытки контрмеры Блейхенбахера. До 2016 года OpenSSL также с радостью согласовывал отключенные наборы шифров SSLv2. В отличие от SSLv3 и более поздних версий, в SSLv2 клиент должен был выбирать из списка наборов шифров, предлагаемых сервером, но OpenSSL позволял использовать неперечисленные наборы шифров.
Первоначальными авторами сообщения об ошибке были исследователи безопасности Нимрод Авирам и Себастьян Шинцель. [7]
Для защиты от DROWN операторы серверов должны гарантировать, что их закрытые ключи не используются нигде с серверным программным обеспечением, которое допускает соединения SSLv2. Это включает веб-серверы, SMTP-серверы, IMAP и POP-серверы, а также любое другое программное обеспечение, которое поддерживает SSL/TLS. [8]
Группа OpenSSL выпустила рекомендацию по безопасности и набор исправлений, призванных смягчить уязвимость путем удаления поддержки устаревших протоколов и шифров. [9] Однако, если сертификат сервера используется на других серверах, поддерживающих SSLv2, он все равно уязвим, как и исправленные серверы.
Многочисленные источники рекомендовали операторам сайта как можно скорее устранить уязвимость.