CVE-2014-0160
Heartbleed: почему после обновления нужны новые ключи
Heartbleed раскрывала фрагменты памяти программ со старым OpenSSL. Исправление прекращает утечку, но не отзывает уже раскрытые секреты: проверьте библиотеку, перезапустите службы и спланируйте замену ключей.
Кому нужно проверить
Администраторам старых веб-серверов, почтовых систем, VPN и сетевых устройств, использующих OpenSSL. Материал особенно полезен при обнаружении давно не обновлявшейся системы или разборе исторической утечки. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.
В чём риск
Heartbeat — служебная проверка активности TLS-соединения. Из-за отсутствующей проверки границ ответ мог содержать лишние байты из памяти процесса. В этой памяти могут находиться пароли, сеансы и закрытые ключи. Исправление библиотеки прекращает этот механизм утечки, но чужая копия секрета от этого не исчезает. Возможность расшифровать ранее записанный трафик зависит от использованных алгоритмов и условий соединения; нельзя обещать ни всеобщую расшифровку, ни гарантированную сохранность прошлого трафика.
Затронутые версии
OpenSSL 1.0.1–1.0.1f включительно и 1.0.2-beta1 с уязвимой поддержкой TLS/DTLS heartbeat. Advisory указывает возможность раскрытия до 64 КБ памяти подключённому клиенту или серверу. Это ошибка реализации OpenSSL, а не всех TLS-программ. Учитывайте сборки с отключённой heartbeat и исправления, перенесённые поставщиком ОС.
Исправленные версии
Историческое исправление — OpenSSL 1.0.1g; для предварительной ветки 1.0.2 — beta2. Сегодня эти выпуски не являются рекомендуемой целью: используйте поддерживаемую исправленную библиотеку или пакет производителя устройства. Пересборка с OPENSSL_NO_HEARTBEATS была временным вариантом из advisory, а не заменой дальнейшему сопровождению.
Что сделать
- 1Составьте список служб и устройств, завершающих TLS, включая внутренние соединения и встроенные библиотеки. Версия команды openssl в оболочке может отличаться от библиотеки, которую использует приложение.
- 2Сверьте фактические пакеты и сборки с уведомлениями поставщиков. До исправления ограничьте доступ к затронутой службе или выведите её из эксплуатации по согласованному плану. Не считывайте память рабочего процесса для демонстрации ошибки.
- 3Подготовьте резервные копии конфигурации и план восстановления с закрытым доступом к ключам. Проверьте обновление на тестовой системе, затем обновите библиотеку или прошивку и перезапустите все использующие её процессы. Статически собранному приложению может потребоваться новая сборка.
- 4Убедитесь, что работает исправленная сборка и TLS-соединения устанавливаются штатно. Только после устранения утечки создайте новые закрытые ключи, перевыпустите сертификаты и отзовите прежние по процедуре своего удостоверяющего центра. Простое продление сертификата с тем же ключом не заменяет раскрытый ключ.
- 5Оцените другие секреты, которые могли находиться в памяти: пароли, токены и ключи сеансов. Заменяйте их и завершайте затронутые сеансы по плану, учитывая зависимости приложений. Не передавайте секреты в журналы и обращения поддержки.
- 6Проверьте цепочку сертификатов и работу клиентов после замены. При откате не возвращайте потенциально раскрытые ключи и уязвимую библиотеку в публичную работу. Сохраните результаты проверки: отсутствие следов в обычном журнале не доказывает отсутствия чтения памяти.
Порядок восстановления
Статичная последовательность показывает, почему новые секреты создают после прекращения утечки. Движение для объяснения не требуется.
- 1Найти затронутые службы и библиотеки
- 2Обновить и перезапустить процессы
- 3Подтвердить прекращение работы уязвимой сборки
- 4Заменить ключи, сертификаты и затронутые секреты
- 5Проверить клиентов и завершить старые сеансы
Примеры конфигурации и проверки
openssl version -aВыполняется на своей системе обычным пользователем при установленном OpenSSL. Выводит версию и параметры сборки команды, ничего не изменяет; откат не требуется. Это инвентаризация, а не проверка удалённого сайта: другие процессы могут использовать другую или статически встроенную библиотеку. Учитывайте исправления поставщика и не публикуйте вывод с внутренними путями.
Как не подпустить ботов к сайту
BotProtection принимает запросы перед вашим сайтом и фильтрует автоматизированные обращения. Поэтому ботам сложнее добраться до уязвимого компонента и начать его проверять или атаковать, а вероятность успешной автоматизированной атаки становится значительно ниже. Это дополнительный слой защиты: обновление уязвимых компонентов, проверка журналов и реагирование на инциденты остаются обязательными.
Первоисточники
Снизьте шанс атаки до того, как бот дойдёт до сайта
Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.