CVE-2014-0160 · CVSS 7.5 HIGH · опубликована 07.04.2014

7 апреля 2014 года мир узнал о Heartbleed — уязвимости в OpenSSL, оценённой в 7.5 (HIGH), которая на долгие годы стала символом того, как ошибка в нескольких строках кода может подорвать доверие ко всей инфраструктуре интернета. OpenSSL — криптографическая библиотека, используемая на огромной доле веб-серверов для защиты HTTPS-соединений. Уязвимость находилась в расширении TLS/DTLS Heartbeat — механизме «проверки пульса», предназначенном для поддержания активного соединения.

Как это работает

Heartbeat — простой протокол: одна сторона отправляет короткое сообщение вроде «вот тебе X байт данных, верни их мне», а другая отвечает эхом. Уязвимость — классическая ошибка отсутствия проверки границ: библиотека доверяла заявленной длине в запросе и читала из памяти сервера столько, сколько попросили, даже если реальные отправленные данные были намного короче. Злоумышленник просит «верни 64 килобайта», отправляя при этом один байт — и сервер отдаёт 64 килобайта своей рабочей памяти: содержимое кучи процесса, в котором живёт веб-сервер.

Именно эта архитектура делает уязвимость кошмаром. Память TLS-сервера — это сундук с самым ценным: частные ключи сервера (что позволяет пассивно расшифровывать весь трафик), пароли пользователей, идентификаторы сессий, письма, персональные данные. Причём атака не оставляет следов в журналах: со стороны это выглядит как тысячи обычных heartbeat-запросов. Никаких взломов, никакой эскалации привилегий — просто незаметная капитуляция самого защищённого компонента системы. Пока уязвимость не была исправлена, злоумышленник мог многократно «подсматривать» в память любого уязвимого сервера.

Реальные последствия

Оценки затронутых систем говорили о сотнях тысяч серверов. Масштаб катастрофы был столь велик, что под удар попали не только веб-сайты: VPN-шлюзы, почтовые серверы, сетевое оборудование и мобильные приложения, встраивающие OpenSSL. Атакующие действительно использовали Heartbleed в дикой природе: вскоре после раскрытия были зафиксированы случаи компрометации учётных записей на крупных сервисах, а теоретическая возможность извлечения частных ключей вынудила инфраструктуру сертификатов массово отзывать и перевыпускать сертификаты. Heartbleed стал поворотной точкой в отрасли: публичные аудиты кода OpenSSL, скандалы вокруг финансирования критической open-source-инфраструктуры и появление программ вроде Let's Encrypt во многом стали реакцией на этот инцидент.

Что делать

Первая мера — немедленное обновление OpenSSL до исправленной версии. Но этого недостаточно: поскольку в течение длительного времени ключи могли быть скомпрометированы, обязательна ротация сертификатов и всех секретов, проходивших через уязвимые системы: паролей пользователей, сессионных ключей, ключей API. С точки зрения детектирования — мониторинг аномальных heartbeat-паттернов (запросы с несоответствующими длинами) на IDS/IPS. Долгосрочный вывод: криптографический код должен проходить независимый аудит, критические open-source-зависимости требуют устойчивого финансирования и регулярного fuzzing-тестирования, а секреты не должны долго жить в памяти процесса без защиты.

Источники

Карточка CVE-2014-0160 в NVD

Exploit-DB: EDB-32745

Каталог CISA KEV