SSLv3 настолько устарел, что соединения, которые он должен защищать, можно расшифровать. Исследователи Google обнаружили, что злоумышленник может заставить использовать слабый протокол.
Как работает Poodle?
Протоколу SSLv3 уже много лет, и он до сих пор поддерживается в качестве запасного варианта практически всеми серверами и браузерами. Исследователи Google недавно представили новую атаку под названием Poodle (PDF), которая использует этот запасной вариант: почти все зашифрованные соединения в сети можно взломать с помощью Poodle.
Злоумышленник может принудительно использовать устаревший протокол SSLv3. Это требует вмешательства в установление соединения SSL/TLS. Если клиент и сервер согласились подключиться с использованием SSLv3, шифрование может быть атаковано и важные данные могут быть расшифрованы. Злоумышленники могут, например, украсть файлы cookie сеанса и свободно использовать учетную запись пользователя. Название уязвимости, Poodle, происходит от сходства с атакой BEAST (PDF), произошедшей несколько лет назад: недостаточно защищенное заполнение в режиме CBC привело к появлению аббревиатуры Poodle («Padding Oracle On Downgraded Legacy Encryption»).
Злоумышленник находится в позиции «человек посередине», то есть именно там, где проходят все сетевые пакеты. Секретная служба может оказаться в таком положении, как и любой другой человек, вошедший в ту же сеть WLAN, что и вы. Для Poodle необходимо обеспечить возврат к SSLv3, и это не особенно сложно, поскольку почти все серверы и клиенты по-прежнему поддерживают такой переход.
Атаку можно предотвратить только в том случае, если хотя бы клиент или сервер не согласятся на откат. Также необходимо, чтобы злоумышленник мог выполнить код сценария на устройстве жертвы. Для человека посередине это тоже несложно: код можно установить на незашифрованные веб-сайты, которые пользователь в данный момент посещает. Большинство браузеров также выполняют внедренный код.
Чтобы понять реальную проблему, необходимо четко понимать задачи Secure Socket Layer: помимо шифрования данных SSL также отвечает за обеспечение целостности. Это означает, что последующие изменения и манипуляции должны быть предотвращены. Эта целостность обеспечивается кодом аутентификации сообщения — MAC.
Когда был введен протокол SSL, необходимо было согласовать последовательность, и с тех пор в качестве стандарта используется MAC-then-encrypt, то есть сначала проверка целостности, затем шифрование. MAC рассчитывается и добавляется к обычным текстовым данным, которые необходимо защитить с помощью шифрования. Затем весь пакет шифруется. Эта процедура часто приводила к проблемам.
Это связано с тем, что шифрование часто осуществляется блоками, длина которых специально определена: подумайте об AES или 3DES. Фактическая длина зашифрованных данных редко достигает полного размера блока, поэтому для достижения необходимой длины необходимо выполнять заполнение после MAC-адреса. Этот процесс называется заполнением.
Заполнение зашифровано, но не защищено MAC, поэтому проверка целостности (проверка на манипуляции) отсутствует. Теперь SSLv3 позволяет злоумышленнику практически свободно выбирать дополнение, только последний байт должен правильно называть длину заполнения. Если спецификация длины неверна, MAC выводится в неправильном месте, поэтому его невозможно проверить.
Злоумышленники, использующие Poodle, переправляют код сценария «посредника» на веб-сайт, а затем запускают сервер чрезвычайно большим количеством почти идентичных HTTPS-запросов, которые браузер автоматически предоставляет с соответствующими файлами cookie. Злоумышленник знает, какой из зашифрованных блоков содержит именно тот файл cookie, о котором идет речь, хотя он еще не может его расшифровать. Однако, будучи посредником, злоумышленник может скопировать этот блок в конец данных SSL, где зашифрованное дополнение действительно имеет свое место.
Если последний байт в декодированном состоянии теперь имеет правильную длину, удаленная станция принимает обработанные данные. Это значение показывает удаленной станции положение MAC. Если сервер принимает пакет данных, злоумышленник может сделать вывод, что байт cookie имеет именно это значение. Можно сделать гораздо больше: если злоумышленник немного изменит HTTPS-запросы, он легко сможет определить все байты cookie.
Все соединение SSLv3 не может быть расшифровано с помощью Poodle, но его части, которые можно выбирать побайтно, можно. Однако открытые сеансы пользователя, в частности, могут быть перехвачены с помощью файла cookie сеанса из HTTPS-соединений, и тогда можно захватить всю учетную запись пользователя. Можно представить что из этого может получиться.
Отразить атаку Poodle: как защитить себя?
Самая эффективная защита от атаки Poodle очень проста: выключить SSLv3 — это давно устаревшая версия протокола, которая сегодня больше не нужна. В худшем случае зашифрованное соединение не будет установлено — это касается только Internet Explorer версии 6.
Если вы используете Firefox, введите «about:config» (без кавычек) в адресной строке. Затем ваш браузер выполнит поиск TLS, и вы установите для параметра «security.tls.version.min» значение 1. Если для вас это слишком сложно — даже если ничего не получится — подумайте об обновлении вашего браузера Firefox, поскольку с обновлением Firefox до версии 34 Mozilla по умолчанию отключит поддержку SSLv3.
Чтобы защитить себя в Chrome, запустите браузер с параметром командной строки «–ssl-version-min=tls1». Для защиты при использовании Internet Explorer зайдите в «Свойства обозревателя» в раздел «Дополнительно» и снимите флажок «Использовать SSL 3.0». Затем активируйте TLS в версиях 1.1 и 1.2.
На серверной стороне дела обстоят немного сложнее, потому что теоретически вы блокируете возможную целевую аудиторию изменением. Однако опасность ограничена: помните, что TLS версии 1.0 стандартизируется уже много лет — все, даже относительно текущие клиенты, поддерживают этот стандарт. Только Internet Explorer 6 не может обрабатывать TLS 1.0, однако статистика показывает, что доля пользователей IE 6 очень мала.
Проверить, поддерживает ли ваш веб-сервер SSLv3, можно с помощью теста. То, как выглядит фактическая конфигурация, зависит от сервера. Хорошие инструкции по настройке можно найти в Интернете. В итоге вы можете настроить конфигурации путем копирования и вставки.
В конфигурации Apache можно работать со строкой «SSLProtocol All -SSLv3 -SSLv3». Исследователи Poodle советуют использовать «TLS_FALLBACK_SCSV», чтобы избежать возврата к устаревшим версиям протокола. Это также предотвратит будущие атаки на понижение версии, но пока невозможно сказать, какие клиенты, серверы и библиотеки могут быть исключены.
Кстати: затронуты не только ваши серверы, вам также следует обратить внимание на другие службы, такие как электронная почта. Вы также можете исключить SSLv3 или резервные варианты в этих конфигурациях. В собственных продуктах Mozilla Seamonkey и Thunderbird это работает так же, как и в браузере Firefox.
Первые реакции на Poodle
В целом реакцию можно резюмировать следующим образом: SSLv3 следует отключить. Однако это может привести к проблемам совместимости, поэтому разработчики могут уклоняться от этого. Второй вариант — откат через SCSV: этот стандарт предотвращает вынужденное понижение версии протоколов шифрования.
Проблема в том, что если соединение с самого начала использует SSLv3, оно остается уязвимым. Этот метод уже интегрирован в OpenSSL 1.0.1j, 1.0.0o и 0.9.8zc. Новая версия OpenSSL была выпущена вскоре после того, как стало известно об уязвимости Poodle, и предлагает обходной путь SCSV.
Google также полагается на SCSV: гигант поисковых систем недавно заявил, что он уже невосприимчив к атакам Poodle. На всякий случай Google хочет полностью отказаться от поддержки SSLv3 в ближайшие несколько месяцев. Как упоминалось выше, Mozilla предприняла этот шаг в ноябре с новой версией Firefox 34.
Хотя Microsoft до сих пор хранит молчание о том, будет ли SSLv3 удален из Internet Explorer, компания из Редмонда также рекомендует отключить поддержку протокола. Мы также согласны со следующими рекомендациями: избегайте использования небезопасного протокола SSLv3, и вы можете быть уверены, что защищены от Poodle.
Древний протокол SSLv3 исчезнет
SSL версии 3 (SSLv3) устарел и небезопасен — это стало ясно самое позднее со времен Poodle. В настоящее время Инженерная группа Интернета (IETF) принимает в ответ документ RFC 7568, который запрещает использование протокола шифрования, когда-то разработанного Netscape.
В официальном документе четко указано, что ни клиенты не должны предлагать устаревший протокол, ни серверы не должны его принимать. В этой рекомендации участвуют сотрудники Google, Mozilla и французского исследовательского института Inria.
По словам экспертов, многочисленные веб-сайты и программы уже отключили протокол, но важно полностью удалить протокол, чтобы избежать повторения подобных сценариев. В конце концов, SSLv3 существует с 1996 года. Преемниками являются версии протокола TLS 1.0, 1.1 и 1.2, доработанные IETF. SSLv3 также не имеет каких-либо расширений, обеспечивающих современные функции и необходимых для сегодняшних требований безопасности.
Компания Mainton - разработка и тестирование программного обеспечения под заказ, SEO и реклама в интернете с 2004 года.