- Главная
- Блог
- Информационная безопасность
- POODLE — это собака какая-то
POODLE — это собака какая-то
Нет, POODLE — это все-таки не новая порода собак, а кибер-эксплойт, который нацелен на слабые места в протоколе SSL (Secure Socket Layer) 3.0 и использованием шифров в режиме CBC. Для того чтобы разобраться в том, как он работает, освежим в памяти принцип технологий SSL и CBC.
SSL: общая концепция
SSL (Secure Sockets Layer — уровень защищённых cокетов) представляет собой криптографический протокол для безопасной связи. С версии 3.0 SSL заменили на TLS (Transport Layer Security — безопасность транспортного уровня), но в данном случае нас будет интересовать именно SSL.
Цель протокола — обеспечить защищенную передачу данных. При этом для аутентификации используются асимметричные алгоритмы шифрования (пара открытый — закрытый ключ), а для сохранения конфиденциальности — симметричные (секретный ключ).
CBC
Протокол на уровне слоя записи получает зашифрованные данные от программы- клиента и передаёт их на транспортный слой. Протокол записи берёт данные, разбивает их на блоки и выполняет шифрование (расшифровывание) данных. Как правило, блоки имеют небольшой размер (обычно 16 байт), поэтому возникает вопрос: как зашифровать длинное сообщение?
Первый режим для подобного шифрования называется ECB (Electronic Codebook) или режим простой замены. Его суть состоит в том, что мы разбиваем исходное сообщение на блоки (по те же 16 байт) и шифруем каждый блок отдельно. Но не будем заострять внимание на данном режиме так как для нашей атаки требуется понимание второго алгоритма.
CBC (Cipher-block chaining). В этом случае каждый новый блок шифротекста XOR’ится с предыдущим результатом шифрования. Первый блок XOR’ится c некоторым вектором инициализации (Initialization Vector, IV)
Так как ПУДЕЛЬ напугал весь интернет?
Атака POODLE может быть использована против любой системы или приложения, которое поддерживает SSL 3.0 с шифрами режима CBC. Это влияет на большинство современных браузеров и веб-сайтов, но также включает в себя любое программное обеспечение, которое либо ссылается на уязвимую библиотеку SSL/TLS (например, OpenSSL) или реализует сам набор протоколов SSL/TLS. Используя эту уязвимость в вероятном веб-сценарии, злоумышленник может получить доступ к конфиденциальным данным, передаваемым в зашифрованном веб-сеансе, таким как пароли, файлы cookie и другие токены аутентификации, которые затем могут быть использованы для получения более полного доступа к веб-сайту (выдающий себя за этого пользователя, доступ к содержимому базы данных и т. д.).
Этап 1. Человек по середине (MITM)
Чтобы успешно провести атаку POODLE, нужно сначала выполнить успешную атаку MITM. Делая это, атакующий может достичь двух целей.
1. Принудительное понижение уровня SSL или TLS (downgrade dance)
Посредник, как следует из названия, является посредником, который подключается к соединению между основной конечной точкой и веб-сервером. Подобные перехваты обычно происходят в небезопасных общедоступных интернет-средах. Поскольку последняя версия протокола TLS более безопасна и затрудняет выполнение таких перехватов, человек, находящийся в центре, неоднократно отправляет веб-серверу случайные сообщения, которые вводят веб-сервер в заблуждение, заставляя предположить, что связанный с ним протокол шифрования не соответствует версии, поддерживаемой отправителем. Это убеждает веб-сервер понизить уровень подключения к более низкой версии протокола SSL или TLS, которая намного менее безопасна и которую легко перехватить. Как только это будет сделано, человек, находящийся посередине, сможет прослушивать разговор по каналу. Однако этот диалог по-прежнему зашифрован в соответствии с требованиями протокола.
2. Расшифровка сообщений в диалоге
Несмотря на то, что веб-сервер, или, в данном контексте, oracle, убедили понизить уровень подключения до более низкой версии протокола SSL или TLS, сообщения в диалоге по-прежнему полностью и удобно расшифровываются. зашифрованный. Однако во время атаки "человек посередине", когда злоумышленник повторно отправляет оракулу случайные сообщения, эти случайные сообщения также содержат значения заполнения. Постоянные пинги не только заставляют oracle понизить версию SSL или TLS, но и заставляют oracle возвращать ошибку заполнения для каждого сообщения, отправленного злоумышленником. Как только злоумышленник получит достаточное количество возвращенных ошибок заполнения, он сможет вычислить шаблон заполнения.
Поскольку в наборе шифров данные каждого блока связаны с предыдущим блоком, значений заполнения достаточно для того, чтобы злоумышленник мог расшифровать остальную часть сообщения без использования закрытого или открытого ключа, установленного протоколом.
Далее этот этап представлен под номером 3
Выпускаем ПУДЕЛЯ
1. Клиент (чаще всего веб-браузер) начинает SSL/TLS-соединение с сервером.
Чтобы это сделать, он отправляет сообщение “ClientHello”, в котором указывает:
- Версии SSL и TLS, которые поддерживаются на его стороне;
- Предпочтительные алгоритмы шифрования и параметры криптографии.
Эта информация помогает серверу понять, на каком уровне безопасности можно будет установить защищённое соединение. В идеале сервер и клиент согласуют самую новую и безопасную версию протокола (обычно TLS).
2. Сервер получает сообщение “ClientHello” и в ответ отправляет “ServerHello”, подтверждая, какая версия протокола и параметры шифрования будут использованы для данного соединения.
Если клиент предложил несколько версий протоколов, сервер выбирает наиболее подходящую.
- На этом этапе сервер определяет, что соединение будет защищено, и при этом пытается установить более высокий уровень безопасности.
Этот ответный шаг завершает начальное рукопожатие, и соединение готово к передаче данных в зашифрованном виде.
3. downgrade dance.
Атака POODLE использует метод, называемый downgrade dance. Злоумышленник намеренно прерывает процесс установления соединения:
- Он может подделать параметры, сделать сеть нестабильной или добавить ошибки, чтобы серверу пришлось понизить уровень протокола, так как серверы настроены пробовать более низкие версии протокола в случае неудач.
- Злоумышленник делает это для того, чтобы сервер “откатился” до устаревшей версии SSL 0, которая имеет известные уязвимости и менее защищена, чем современные версии TLS.
Так как SSL 3.0 уже давно считается небезопасным, этот откат позволяет злоумышленнику “заставить” сервер использовать уязвимый протокол.
4. Добавочные байты:
Для шифрования по технологии CBC (Cipher Block Chaining), который использует блоки фиксированного размера (например, 16 байт), важно, чтобы каждый блок данных был заполнен полностью.
- Поэтому к открытому тексту добавляются дополнительные байты или биты. Они заполняют сообщение до необходимого размера, подходящего для шифрования.
- Эти дополнительные байты помогают алгоритму корректно обрабатывать данные, но именно их добавление приводит к уязвимости, так как злоумышленник может использовать данные байты для расшифровки.
В этом этапе происходит внедрение нужных злоумышленнику условий для последующей атаки на данные.
5. Внедрение JavaScript-кода (опционально)
В некоторых сценариях злоумышленник может использовать JavaScript-код в браузере пользователя для автоматического запуска множества SSL-соединений с целевым сервером. Это может быть реализовано через межсайтовый скриптинг (XSS) или социальную инженерию:
- Например, пользователь может зайти на вредоносный сайт, где загружается JavaScript-код, который вызывает многократные подключения к уязвимому серверу.
- Злоумышленник использует эти подключения для увеличения числа попыток расшифровать данные.
Однако этот шаг не обязателен. Атака POODLE может выполняться и без этого, если у злоумышленника есть достаточно привилегий в сети для манипуляций с соединениями.
6. Теперь злоумышленник начинает манипулировать параметрами протокола SSL:
- Поскольку соединение было понижено до SSL 0 и используется режим CBC, злоумышленник может воспользоваться известной уязвимостью в этом режиме.
- Он отправляет модифицированные данные в шифрованное сообщение, пытаясь угадать содержимое предыдущих блоков.
В этом шаге злоумышленник проводит тонкие манипуляции с шифротекстом (зашифрованными блоками), что позволяет ему постепенно “угадывать” и расшифровывать данные.
7. Расшифровка предыдущего блока: Злоумышленник многократно изменяет зашифрованные блоки и наблюдает за реакцией сервера на каждое изменение:
-
- Путём изменения содержимого блоков он может вызвать ошибки заполнения (padding errors), которые указывают на правильность или неправильность расшифровки.
- В результате этих наблюдений он постепенно расшифровывает каждый блок данных по очереди.
Этот процесс позволяет злоумышленнику пошагово раскрывать данные, передаваемые между клиентом и сервером, даже не имея доступ к ключам шифрования.
8. Извлечение конфиденциальных данных
Когда злоумышленник успешно расшифровывает блоки данных, он получает доступ к передаваемой информации, которая может включать:
- Сессионные cookies: Эти данные позволяют злоумышленнику получить доступ к учётным записям жертвы без пароля.
- Учётные данные для входа и другие конфиденциальные сведения, передаваемые между клиентом и сервером.
Таким образом, после успешной расшифровки злоумышленник может полностью контролировать сеанс пользователя и получить доступ к его личным данным, что создаёт серьёзную угрозу для безопасности.