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

CVE-2014-0160

CVE-2014-0160 — это идентификатор уязвимости в программном обеспечении OpenSSL, также известной как «Heartbleed» (с англ. — «Кровоточащее сердце»). Она представляет собой ошибку чтения за пределами границ буфера в реализации протокола Heartbeat (RFC 6520) для TLS/DTLS. Уязвимость позволяет неавторизованному удалённому злоумышленнику без какой-либо аутентификации считывать содержимое оперативной памяти сервера или клиента, что может привести к утечке конфиденциальных данных, включая закрытые ключи шифрования, пароли, сессионные токены и содержимое передаваемых сообщений.

История

Обнаружение и публикация

Уязвимость была независимо обнаружена сотрудниками компании Google Security (Нил Мета) и финской компании Codenomicon (Антти Карьялайнен, Матти Камунен и другие) в начале апреля 2014 года. 7 апреля 2014 года информация об уязвимости была публично раскрыта координационно, одновременно с выпуском исправленной версии OpenSSL 1.0.1g. Исследователи безопасности из Codenomicon дали уязвимости название «Heartbleed» и создали логотип, который стал одним из самых узнаваемых символов в истории кибербезопасности.

Причина появления

Ошибка была внесена в код OpenSSL 31 декабря 2011 года разработчиком Робином Сиглем (Robin Seggelmann) в рамках реализации расширения Heartbeat для TLS. Ошибка была допущена при написании кода обработки входящего Heartbeat-запроса: не была выполнена проверка на соответствие заявленной длины полезной нагрузки (payload) фактической длине данных, переданных в запросе. В результате, если злоумышленник отправлял запрос, в котором поле длины указывало значение, большее, чем реальная длина данных, сервер копировал в ответный пакет не только отправленные данные, но и произвольный блок памяти, следующий за ними. Размер этого блока мог достигать 64 килобайт.

Реакция сообщества

После публикации информация о Heartbleed вызвала беспрецедентную реакцию в глобальном масштабе. Многие крупные интернет-компании (Google, Facebook, Yahoo, Amazon, Microsoft, Cloudflare и другие) в течение нескольких часов выпустили заявления о том, что их сервисы были уязвимы, и начали массовое обновление программного обеспечения и отзыв и перевыпуск SSL/TLS-сертификатов. По оценкам экспертов, на момент обнаружения уязвимости ей были подвержены около 17% всех защищённых веб-серверов в мире (более 500 000 сайтов). В России уязвимость затронула ряд государственных и коммерческих ресурсов, включая портал «Госуслуги» (впоследствии уязвимость была закрыта).

Технические подробности

Механизм эксплуатации

Уязвимость CVE-2014-0160 реализуется следующим образом:

  1. Клиент (злоумышленник) инициирует TLS-соединение с сервером.
  2. После установки соединения клиент отправляет Heartbeat-запрос, содержащий поле «payload length» (длина полезной нагрузки), установленное в 64 КБ (максимальное значение), и поле «payload data» (полезные данные), содержащее, например, всего 1 байт.
  3. Сервер, обрабатывая запрос, считывает из памяти буфер размером, указанным в поле «payload length» (64 КБ), начиная с адреса, где хранятся полученные полезные данные (1 байт). Поскольку реальный размер полезных данных меньше заявленного, сервер захватывает в ответный пакет содержимое оперативной памяти, расположенное после отправленного клиентом 1 байта.
  4. Сервер отправляет ответный Heartbeat-пакет, содержащий 64 КБ произвольных данных из своей памяти. Этот процесс может повторяться многократно, позволяя злоумышленнику постепенно извлечь весь объём памяти процесса OpenSSL.

Данные, доступные для извлечения

В результате эксплуатации уязвимости злоумышленник мог получить:

  • Закрытые ключи SSL/TLS: позволяют расшифровывать весь прошлый и будущий трафик, а также подделывать сертификаты для проведения атак «человек посередине».
  • Пароли и логины пользователей: хранящиеся в памяти в процессе обработки запросов.
  • Сессионные идентификаторы (cookies): позволяют захватить активные сессии пользователей без необходимости ввода пароля.
  • Содержимое запросов и ответов: в том числе конфиденциальные документы, сообщения и данные банковских карт.
  • Ключи аутентификации и другие секреты: используемые для внутренних коммуникаций серверов.

Затронутые версии

Уязвимости были подвержены версии OpenSSL с 1.0.1 по 1.0.1f (включительно). Версии 1.0.0 и старше, а также 1.0.2 (бета) не содержали данную ошибку, так как в них не была реализована поддержка Heartbeat. Исправление было внесено в версию OpenSSL 1.0.1g.

Влияние и последствия

Кибербезопасность

Heartbleed стала одной из самых серьёзных уязвимостей в истории интернета. Её главная опасность заключалась в том, что она не оставляла следов в логах сервера, делая обнаружение атаки крайне затруднительным. Эксплуатация не требовала специальных привилегий или сложного инструментария — существовали готовые скрипты, позволяющие провести атаку за несколько секунд.

Юридические и регуляторные последствия

Инцидент привёл к пересмотру подходов к управлению уязвимостями и криптографической безопасности. В ряде стран были ужесточены требования к аудиту безопасности государственных информационных систем. В России, после обнаружения уязвимости на портале «Госуслуги», были проведены внеплановые проверки защищённости государственных ресурсов, а также рекомендовано использование отечественных криптографических средств.

Экономические последствия

Крупнейшие интернет-компании понесли значительные прямые и косвенные убытки, связанные с необходимостью экстренного обновления сотен тысяч серверов, отзыва и перевыпуска миллионов SSL-сертификатов. По оценкам, совокупные затраты на устранение последствий Heartbleed в глобальном масштабе превысили 500 миллионов долларов США.

Исправление и меры защиты

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

Основной мерой защиты являлось немедленное обновление OpenSSL до версии 1.0.1g или более поздней. Для систем, где обновление было невозможно, рекомендовалось перекомпилировать OpenSSL с отключённой поддержкой Heartbeat (флаг -DOPENSSL_NO_HEARTBEATS).

Пост-инцидентные действия

После обновления требовалось выполнить комплекс мер:

  1. Отзыв и перевыпуск SSL/TLS-сертификатов: старые сертификаты считались скомпрометированными, так как их закрытые ключи могли быть украдены.
  2. Сброс всех сессионных ключей и паролей: принудительный сброс паролей всех пользователей для предотвращения использования перехваченных данных.
  3. Ротация ключей аутентификации: смена ключей для внутренних сервисов (API, базы данных, SSH).

Критика и уроки

Критика проекта OpenSSL

Инцидент с Heartbleed выявил системные проблемы в управлении проектом OpenSSL:

  • Недостаточное финансирование: на момент обнаружения уязвимости проект OpenSSL поддерживался небольшим числом добровольцев и имел крайне ограниченный бюджет (около 2000 долларов США в год).
  • Отсутствие аудита кода: критически важная криптографическая библиотека не проходила регулярного профессионального аудита безопасности.
  • Сложность кодовой базы: код OpenSSL был труден для понимания и рецензирования, что способствовало накоплению ошибок.

Последствия для индустрии

Heartbleed привела к созданию инициатив по финансированию разработки и аудита критически важного открытого ПО, таких как Core Infrastructure Initiative (CII) под эгидой Linux Foundation. CII предоставила финансирование для аудита OpenSSL и других проектов, а также способствовала созданию более безопасных альтернатив (например, LibreSSL и BoringSSL). Уязвимость также стала катализатором для внедрения практик автоматического тестирования безопасности (SAST, DAST) и более широкого использования протокола HTTP Strict Transport Security (HSTS).

Интересные факты

  • Логотип Heartbleed (кровоточащее сердце) был создан дизайнером из Codenomicon и стал одним из самых узнаваемых символов в сфере информационной безопасности.
  • Уязвимость существовала в коде более двух лет, прежде чем была обнаружена.
  • Существуют неподтверждённые данные о том, что спецслужбы некоторых стран (в частности, АНБ США) могли знать об уязвимости до её публичного раскрытия и использовать её для сбора данных. Официальные представители АНБ это отрицали.
  • В 2014 году компания Cloudflare, один из крупнейших CDN-провайдеров, провела эксперимент по «охоте на Heartbleed», в ходе которого намеренно оставила уязвимый сервер в сети, чтобы продемонстрировать, как легко злоумышленники могут извлечь данные из памяти. В результате эксперимента были извлечены реальные ключи шифрования и пароли.

Источники

  • CVE-2014-0160. Common Vulnerabilities and Exposures (CVE).
  • Heartbleed Bug. Codenomicon.
  • OpenSSL Security Advisory [07 Apr 2014]. OpenSSL Foundation.
  • Seggelmann, R. (2014). Analysis of the Heartbleed bug.
  • Durumeric, Z., et al. (2014). The Matter of Heartbleed. Proceedings of the 2014 Conference on Internet Measurement Conference (IMC '14).
  • Официальные заявления Минкомсвязи РФ (апрель 2014 г.).

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

На главную BFOmetr →