Одна из самых известных уязвимостей середины 2010-х годов называлась Heartbleed. Heartbleed был особенно серьезным, потому что это программное обеспечение влияло на «OpenSSL», основную криптографическую библиотеку для HTTPS-соединений, которые очень широко используются. Что еще хуже, уязвимость присутствовала в OpenSSL более двух лет назад. он был обнаружен, опубликован и исправлен, что означало, что многие люди использовали уязвимые версия.
Heartbleed - это уязвимость, связанная с утечкой данных в расширении Heartbeat, при использовании которого происходит утечка данных из ОЗУ с сервера на клиент. Расширение heartbeat используется для поддержания соединения между веб-сервером и клиентом без выполнения обычного запроса страницы.
В случае OpenSSL клиент отправляет сообщение на сервер и информирует сервер о длине сообщения, до 64 КБ. Затем предполагается, что сервер вернет то же сообщение в ответ. Однако важно то, что сервер на самом деле не проверял, было ли сообщение той длины, которую утверждал клиент. Это означало, что клиент мог отправить сообщение размером 10 КБ, заявить, что оно было 64 КБ, и получить ответ 64 КБ, причем дополнительные 54 КБ составляли следующие 54 КБ ОЗУ, независимо от того, какие данные там хранились. Этот процесс хорошо визуализируется
Комикс XKCD №1354.Изображение любезно предоставлено xkcd.com.
Выполняя множество небольших запросов пульса и утверждая, что они были большими, злоумышленник мог построить картину большей части оперативной памяти сервера, собрав ответы по кусочкам. Данные, хранящиеся в ОЗУ, которые могут быть утечкой, включают ключи шифрования, сертификаты HTTPS, а также незашифрованные данные POST, такие как имена пользователей и пароли.
Примечание: это менее известно, но протокол Heartbeat и эксплойт работали и в другом направлении. Вредоносный сервер мог быть настроен на чтение до 64 КБ пользовательской памяти за один запрос подтверждения.
Проблема была обнаружена несколькими исследователями безопасности независимо от первого апреля 2014 года и раскрыта в частном порядке OpenSSL, чтобы можно было создать исправление. Об ошибке стало известно, когда седьмого апреля 2014 года был выпущен патч. Лучшим решением проблемы было применение исправления, но также можно было исправить проблему, отключив расширение Heartbeat, если немедленное исправление не было вариантом.
К сожалению, несмотря на то, что эксплойт был общедоступным и широко известным, многие веб-сайты все еще не обновлялись сразу, а уязвимости все еще иногда обнаруживались даже спустя годы. Это привело к тому, что в ряде случаев эксплойт использовался для получения доступа к учетным записям или утечки данных.