Изображение: thehackernews.com
В конце прошлой недели (22 сентября) организация OpenSSL Foundation объявила об устранении более десятка уязвимостей своей криптографической библиотеки. Среди найденных «багов» была и ошибка, эксплуатация которой позволяет злоумышленникам осуществлять DoS-атаки.
В чем проблема
OpenSSL — это популярная криптографическая open source-библиотека, с помощью которой обеспечивается шифрование интернет соединений с помощью SSL или TLS. Этот механизм использует подавляющее большинство сайтов в сети.
Критическая уязвимость (CVE-2016-6304) содержится в OpenSSL версий 1.0.1, 1.0.2 и 1.1.0 и была устранена в версиях OpenSSL 1.1.0a, 1.0.2i b 1.0. Суть уязвимости заключается в том, что при последовательных TLS Renegotiations, сервер не освобождает память, выделенную под хранение поля одного из расширений TLS протокола – status request, а «перетирает» указатель на неё, вызывая утечку памяти.
TLS Renegotiations – это механизм, позволяющий клиенту или серверу изменять параметры TLS подключения на ходу, не прерывая текущей сессии. При этом стороны обмениваются Hello сообщениями и сертификатами, как при обычном хендшейке, но используя уже установленный защищенный канал. А расширение status request позволяет ускорить проверку статуса сертификата сервера, если последний поддерживает механизм OCSP Stapling.
Таким образом, атакующий может вызывать утечку памяти каждый раз при инициировании TLS Renegotiations. Размер утечки варьируется от 16 до 64 килобайт, в зависимости от версии OpenSSL.
Протокол OCSP (Online Certificate Status Protocol) поддерживается всеми современными веб-браузерами, он создан для обеспечения верификации статуса цифрового сертификата, установленного на сайте.
OCSP разделен на клиентскую и серверную часть. Когда приложение или веб-браузер пытается провести валидацию SSL-сертификата, клиентская часть отправляет HTTP-запрос к онлайн-базе данных, которая возвращает статус сертификата. Однако, для ускорения механизма валидации для клиента, сервер может сам обращаться к OCSP серверам, а затем возвращать OCSP ответы клиенту на этапе handshake. Такой механизм называется OCSP Stapling и позволяет клиенту избежать траты ресурсов на обращение к OCSP серверам.
Это еще не все
В бюллетене безопасности OpenSSL Foundation от 22 сентября была описана еще одна уязвимость CVE-2016-6307 — она получила низкую степень критичности (Low). Ошибка в коде библиотеки версии 1.1.0 позволяла злоумышленнику осуществлять DoS-атаки с помощью отправки слишком больших по размеру заголовков tls_get_message_header().
Впоследствии выяснилось, что патч для уязвимости CVE-2016-6307 породил другую уязвимость (CVE-2016-6309). В результате применения патча возникала ошибка обработки буфера, приводящая к «падению» приложения и возможности исполнения произвольного кода. Для ее исправления был выпущен отдельный патч.
Как защититься
Серверы, использующие OpenSSL версии до 1.0.1g не подвержены уязвимости CVE-2016-6304 при работе в стандартной конфигурации. Администраторы же уязвимых ресурсов для сокращения возможного ущерба должны использовать опцию no-ocsp.
Кроме того, ранее команда OpenSSL Foundation уже исправляла другую уязвимость (CVE-2016-6305) библиотеки версии 1.1.0, которая могла использоваться для осуществления DoS-атак.
Эксперты Positive Technologies изучили детали эксплуатации уязвимости CVE-2016-6304 и разработали сигнатуру для обнаружения данной уязвимости средствами IDS Suricata. Кроме того, рекомендуется использовать для обнаружения уязвимостей, подобных описанным, специализированные средства вроде системы мониторинга защищенности и соответствия стандартам MaxPatrol 8.
Автор: Positive Technologies