Открыть сервис

Уязвимость POODLE

Уязвимость POODLE (англ. Padding Oracle On Downgraded Legacy Encryption) — это атака на протокол SSL 3.0, позволяющая злоумышленнику расшифровать зашифрованные данные, такие как cookies и токены аутентификации, путём эксплуатации уязвимости в механизме выравнивания блоков (padding) при блочном шифровании. Уязвимость была впервые публично раскрыта 14 октября 2014 года группой исследователей из компании Google (в лице Барта Массера и Тай-Ян Кво) совместно с экспертами из других организаций. Название POODLE является акронимом, отражающим суть атаки: использование оракула выравнивания для понижения версии протокола до устаревшего SSL 3.0.

История

Предпосылки возникновения

Протокол SSL 3.0 (Secure Sockets Layer, версия 3.0) был разработан компанией Netscape Communications в 1996 году и долгое время оставался стандартом для защиты интернет-соединений. Однако к началу 2010-х годов он был признан устаревшим из-за многочисленных криптографических недостатков, включая отсутствие защиты от атак типа «человек посередине» (MITM) и слабую поддержку современных алгоритмов шифрования. Несмотря на это, многие серверы и клиенты (включая веб-браузеры) продолжали поддерживать SSL 3.0 в целях обратной совместимости с устаревшими системами, такими как Internet Explorer 6 на Windows XP.

Открытие и публикация

В 2014 году исследователи из Google Security Team (Барт Массер, Тай-Ян Кво и другие) обнаружили, что механизм выравнивания блоков в SSL 3.0 при использовании блочного шифра (например, AES-CBC или 3DES-CBC) позволяет злоумышленнику, контролирующему сетевой трафик, выполнять атаку с использованием оракула выравнивания. 14 октября 2014 года они опубликовали детали уязвимости, присвоив ей идентификатор CVE-2014-3566. В тот же день многие крупные компании, включая Mozilla, Microsoft и Apple, выпустили обновления для своих браузеров и операционных систем, отключающие поддержку SSL 3.0 по умолчанию.

Последствия

Уязвимость POODLE привела к массовому отказу от SSL 3.0 в интернете. К концу 2014 года большинство веб-серверов и браузеров перестали поддерживать этот протокол. В 2015 году Internet Engineering Task Force (IETF) официально объявил SSL 3.0 устаревшим (RFC 7568). Однако атака POODLE также продемонстрировала общий класс уязвимостей, связанных с оракулами выравнивания, что впоследствии привело к обнаружению аналогичных проблем в других протоколах, таких как TLS 1.0 и 1.1 (например, атака Lucky13).

Механизм атаки

Основные принципы

Атака POODLE эксплуатирует уязвимость в алгоритме выравнивания блоков (padding) протокола SSL 3.0. При использовании блочного шифра (например, AES с размером блока 16 байт) данные перед шифрованием разбиваются на блоки фиксированной длины. Если последний блок оказывается неполным, он дополняется (padding) до полного размера. В SSL 3.0 последний байт выравнивания содержит длину выравнивания (например, если добавлено 3 байта, последний байт равен 0x03). При расшифровке сервер проверяет корректность выравнивания и в случае ошибки отправляет сообщение об ошибке (например, «bad_record_mac»). Злоумышленник может использовать эту информацию как оракул: отправляя модифицированные зашифрованные блоки и наблюдая за реакцией сервера, он может постепенно угадывать содержимое зашифрованных данных.

Пошаговое описание атаки

  1. Перехват трафика: Злоумышленник, контролирующий сетевой канал (например, через публичную Wi-Fi-точку доступа), перехватывает зашифрованный трафик между клиентом и сервером.
  2. Понижение протокола: Атака требует, чтобы клиент и сервер использовали SSL 3.0. Если они поддерживают более новые версии (TLS 1.0 и выше), злоумышленник может попытаться принудительно понизить версию протокола, блокируя сообщения о согласовании версии (например, используя атаку «downgrade attack»). В случае успеха соединение переключается на SSL 3.0.
  3. Выбор цели: Злоумышленник выбирает конкретный блок зашифрованных данных, который он хочет расшифровать (например, блок, содержащий cookie сессии).
  4. Модификация блоков: Злоумышленник копирует последний блок зашифрованных данных (C_n) и заменяет им последний блок предыдущего сообщения (C_{n-1}). При этом он изменяет последний байт C_{n-1} так, чтобы при расшифровке сервер интерпретировал выравнивание как корректное.
  5. Наблюдение за реакцией сервера: Сервер расшифровывает модифицированное сообщение и проверяет выравнивание. Если выравнивание корректно (то есть последний байт расшифрованного блока совпадает с ожидаемой длиной выравнивания), сервер продолжает обработку (например, отправляет подтверждение). Если выравнивание некорректно, сервер отправляет сообщение об ошибке.
  6. Угадывание байта: Злоумышленник повторяет шаги 3-5, изменяя последний байт C_{n-1} на разные значения, пока не получит корректную реакцию сервера. Когда это происходит, он может вычислить исходный байт данных, используя известные значения.
  7. Повторение: Процесс повторяется для каждого байта в блоке, пока весь блок не будет расшифрован. Для расшифровки одного блока (16 байт для AES) требуется в среднем около 256 попыток на байт, что в сумме составляет примерно 4096 запросов.

Условия успешной атаки

  • Клиент и сервер должны поддерживать SSL 3.0 (или быть принудительно понижены до него).
  • Злоумышленник должен иметь возможность перехватывать и модифицировать сетевой трафик (например, через небезопасную Wi-Fi-сеть или при компрометации маршрутизатора).
  • Атака эффективна против блочных шифров в режиме CBC (Cipher Block Chaining), таких как AES-CBC и 3DES-CBC.
  • Для расшифровки одного блока данных требуется несколько тысяч запросов, что может быть заметно для пользователя, но в условиях автоматизированной атаки может быть выполнено незаметно.

Классификация

По типу уязвимости

  • Padding Oracle Attack: Атака, использующая оракул выравнивания — информацию о корректности выравнивания блоков, предоставляемую сервером.
  • Downgrade Attack: Атака, принудительно понижающая версию протокола до устаревшей (SSL 3.0) для последующей эксплуатации.

По версии протокола

  • POODLE (SSL 3.0): Оригинальная атака, описанная в 2014 году, нацеленная на SSL 3.0.
  • POODLE (TLS 1.0-1.1): В 2015 году была обнаружена аналогичная уязвимость в протоколах TLS 1.0 и 1.1 (CVE-2014-8730), хотя она требовала дополнительных условий (например, поддержки устаревших шифров).
  • POODLE (DTLS): Вариант атаки для протокола DTLS (Datagram Transport Layer Security), используемого в VPN и VoIP.

Защита от атаки

Отключение SSL 3.0

Наиболее эффективным способом защиты является полное отключение поддержки SSL 3.0 на стороне сервера и клиента. Начиная с 2014 года, все основные веб-браузеры (Google Chrome, Mozilla Firefox, Microsoft Internet Explorer, Apple Safari) отключили SSL 3.0 по умолчанию. Администраторам серверов рекомендуется удалить SSL 3.0 из списка поддерживаемых протоколов в конфигурации веб-сервера (например, в Apache или Nginx).

Использование TLS 1.2 и выше

Протоколы TLS 1.2 и TLS 1.3 не подвержены атаке POODLE, так как они используют более совершенные механизмы выравнивания и проверки целостности. Рекомендуется настроить серверы на поддержку только TLS 1.2 и TLS 1.3, отключив TLS 1.0 и 1.1, которые также могут быть уязвимы.

Обновление программного обеспечения

  • Браузеры: Обновление до последних версий, которые отключают SSL 3.0.
  • Операционные системы: Установка патчей безопасности (например, для Windows, macOS, Linux).
  • Библиотеки шифрования: Обновление OpenSSL, GnuTLS и других библиотек до версий, в которых отключена поддержка SSL 3.0.

Мониторинг и обнаружение

Администраторы могут отслеживать попытки понижения протокола до SSL 3.0 с помощью систем обнаружения вторжений (IDS) и анализа логов веб-сервера. Признаками атаки могут быть необычно большое количество запросов с ошибками выравнивания или попытки установления соединений по SSL 3.0.

Критика и ограничения

Практическая сложность

Хотя атака POODLE теоретически эффективна, её практическая реализация требует значительных ресурсов. Для расшифровки одного блока данных (например, cookie длиной 16 байт) требуется несколько тысяч запросов, что может быть замечено системами мониторинга. Кроме того, атака требует контроля над сетевым трафиком, что ограничивает её применение в защищённых сетях.

Зависимость от понижения протокола

Успешность атаки напрямую зависит от возможности принудительного понижения версии протокола до SSL 3.0. Если клиент и сервер поддерживают только TLS 1.2 и выше, атака невозможна. Однако в 2014 году многие системы всё ещё поддерживали SSL 3.0, что делало атаку актуальной.

Альтернативные атаки

После раскрытия POODLE были обнаружены другие уязвимости, основанные на оракулах выравнивания, такие как Lucky13 (CVE-2013-0169) и атаки на режим CBC в TLS 1.0. Эти атаки также требуют отключения устаревших протоколов и шифров.

Источники

  1. B. Maser, T. Kwo, et al. "This POODLE Bites: Exploiting the SSL 3.0 Fallback." Google Security Blog, 2014.
  2. CVE-2014-3566: SSL 3.0 Protocol Vulnerability (POODLE). National Vulnerability Database, 2014.
  3. RFC 7568: Deprecating Secure Sockets Layer Version 3.0. Internet Engineering Task Force, 2015.
  4. A. Langley, et al. "Lucky13: Breaking the TLS and DTLS Record Protocols." IEEE Symposium on Security and Privacy, 2013.
  5. "POODLE Attack: SSLv3 Vulnerability (CVE-2014-3566)." OpenSSL Security Advisory, 2014.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →