Новый метод атаки на TLS, затрагивающий 27 из 100 крупнейших сайтов

Раcкрыты детали новой атаки на TLS, которая получила кодовое имя ROBOT (Return Of Bleichenbacher’s Oracle Threat). Проблема позволяет выполнить операции расшифровки трафика и формирования цифровых подписей без знания закрытого RSA-ключа уязвимого TLS-сервера. Атаке подвержены только режимы TLS-шифров, использующие RSA. В качестве демонстрации успешного проведения атаки было представлено произвольно составленное сообщение, подписанное закрытым ключом Facebook.

Проблема выявлена на 27 из 100 крупнейших сайтов по рейтингу Alexa, включая Facebook и PayPal. При этом при рассмотрении миллиона крупнейших сайтов уязвимость наблюдается всего на 2.8% ресурсах. Подобное расхождение объясняется тем, что атаке подвержены в основном коммерческие реализации TLS (Cisco ACE, F5 BIG-IP SSL, Citrix NetScaler, Radware), применяемые в крупных проектах. Из открытых проектов уязвимость присутствует Erlang, Java/JSSE, WolfSSL, MatrixSSL и Bouncy Castle.

Причиной возникновения уязвимости называется неполная реализация мер защиты, описанных в секции 7.4.7.1 спецификации TLS. OpenSSL, LibreSSL и GnuLTS проблеме не подвержены, но не исключается возникновения уязвимости из-за применения неофициальных модификаций. Например, в Facebook используется OpenSSL, который оказался уязвим из-за применения собственных дополнительных патчей.

Примечательно, что метод является незначительной модификацией первой практической атаки на RSA, предложенной Даниэлем Блейхенбахером (Daniel Bleichenbacher) в 1998 году. Было выявлено, что спустя 19 лет многие HTTPS-хосты до сих пор подвержены вариациям данной атаки. Суть метода в том, что атакующий на основании разных ответов от сервера может отделить корректные и некорректные блоки добавочного заполнения (padding oracle) в режиме PKCS #1 v1.5. Отличие нового метода от оригинальной атаки Блейхенбахера заключается в использовании дополнительных сигналов для разделения типов ошибок, таких как таймауты, сбросы соединения и дубликаты TLS-оповещений. Манипулируя информацией о корректности блоков добавочного заполнения атакующий может путём перебора определить подходящий шифротекст.

Для сайтов, применяющих только шифрование на основе ключей RSA, атакующий может пассивно сохранить перехваченный трафик и позднее расшифровать его. Для HTTPS-хостов поддерживающих PFS (Perfect forward secrecy) успех атаки не так однозначен и зависит от того, как быстро будет проведена атака. Атака не восстанавливает непосредственно закрытый ключ, а только позволяет расшифровать шифротекст или сформировать поддельное подписанное сообщение. Проблеме подвержен не только TLS, но и другие протоколы в которых применяется RSA и PKCS #1 v1.5, включая XML Encryption, интерфейсы PKCS#11, JOSE (Javascript Object Signing and Encryption) и S/MIME.

Проверить свой сайт на наличие уязвимость можно через web-форму или при помощи специального подготовленного скрипта на языке Python. В качестве обходного пути защиты рекомендуется отключить поддержку шифров на базе RSA (TLS_RSA*), за исключением шифров в которых RSA используется для создания цифровой подписи (шифры на основе эллиптических кривых с DHE и ECDHE в имени также не подвержены рассматриваемой атаке).

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.