- Автор темы
- #1
Ра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 и GnuTLS проблеме не подвержены, но не исключается возникновение уязвимости из-за применения неофициальных модификаций. Например, в 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 в имени также не подвержены рассматриваемой атаке).
Проблема выявлена на 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 и GnuTLS проблеме не подвержены, но не исключается возникновение уязвимости из-за применения неофициальных модификаций. Например, в 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 в имени также не подвержены рассматриваемой атаке).