Heartbleed: проверить и устранить уязвимость OpenSSL
Что такое Heartbleed
Heartbleed — ошибка в реализации heartbeat в OpenSSL (версии от 1.0.1 до 1.0.1f). При эксплойте можно прочитать часть памяти процесса, что потенциально позволяет получить приватный ключ сервера, сессионные данные и другие секреты. Уязвимость исправлена в OpenSSL 1.0.1g.
Важно: отсутствие уязвимой версии OpenSSL (по выводу команды openssl version) не всегда означает отсутствие патча в пакетах дистрибутива — некоторые дистрибутивы backport’ят исправления в номера пакетов.
Кому угрожает
- Сервера, использующие OpenSSL 1.0.1–1.0.1f
- Веб-серверы, почтовые, FTP, LDAP, VPN и другие сервисы, которые связываются по TLS/SSL
- Клиенты и приложения, которые доверяют скомпрометированным ключам
Как проверить версию OpenSSL
Выполните в терминале:
openssl versionЕсли видите, например:
OpenSSL 1.0.1e 11 Feb 2013— версия может быть уязвимой (меньше 1.0.1g). Для OpenSSL 0.9.8 (например, на Debian squeeze) heartbeat отсутствует, значит уязвимость не действует:
OpenSSL 0.9.8o 01 Jun 2010Исправление уязвимости (шаги)
- Установите обновления пакетов вашего дистрибутива (см. команды ниже).
- Перезапустите все сервисы, использующие OpenSSL.
- Проверьте, что пакет с OpenSSL действительно содержит исправление.
- Проверьте сертификаты и приватные ключи: при подозрении на компрометацию — отозовите и переиздайте.
- Прогоните тесты (например, http://filippo.io/Heartbleed/).
Команды обновления по дистрибутиву
Debian / Ubuntu
apt-get update
apt-get upgradeFedora / CentOS
yum updateOpenSuSE
zypper updateПосле обновления перезапустите сервисы — минимум те, которые используют OpenSSL: sshd, apache/nginx, postfix, dovecot, courier, pure-ftpd, bind, openvpn и т.п. На критичных системах проще выполнить полную перезагрузку:
rebootПроверка, что пакет действительно содержит исправление
Некоторые дистрибутивы backport’ят патчи, и команда openssl version не покажет разницы. Проверьте пакетную базу:
Debian / Ubuntu:
dpkg-query -l 'openssl'Пример корректно запатченного вывода для Debian 7:
dpkg-query -l 'openssl'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
ii openssl 1.0.1e-2+deb7u5 amd64 Secure Socket Layer (SSL) binary and relatedFedora / CentOS:
rpm -qa | grep opensslСсылки на заметки безопасности (оригиналы):
- http://www.debian.org/security/2014/dsa-2896
- http://www.ubuntu.com/usn/usn-2165-1/
- https://lists.fedoraproject.org/pipermail/announce/2014-April/003206.html
- http://lists.centos.org/pipermail/centos-announce/2014-April/020249.html
Альтернатива: собрать OpenSSL из исходников и установить собственную версию (только для опытных администраторов).
Что делать при подозрении на компрометацию ключа
- Немедленно заменить приватный ключ и сертификат (создать новый CSR и получить новый сертификат).
- Отозвать старый сертификат через CA (если возможно) и опубликовать CRL/OCSP.
- Проверить логи на признаки доступа/эксплойта в период до и после обновления.
- Сообщить пользователям/клиентам, если компрометация могла повлиять на их данные.
Важно: даже если вы установили патч, ранее украденный приватный ключ остаётся компрометированным — его нужно заменить.
Тестирование
Публичный тест доступен по адресу:
Также протестируйте локально утилитами и сценариями, которые проверяют побочные чтения из памяти TLS-процесса.
Критерии приёмки
- Пакет OpenSSL обновлён до версии с исправлением (1.0.1g или backport из дистрибутива).
- Все сервисы, использующие OpenSSL, перезапущены или сервер перезагружен.
- Тест на http://filippo.io/Heartbleed/ возвращает «not vulnerable» или эквивалент.
- При подозрении: старые приватные ключи отозваны и заменены новым сертификатом.
Мини-методология: быстрый чеклист (оперативные шаги)
- Проверить версию:
openssl version. - Обновить пакеты (apt/yum/zypper).
- Перезапустить сервисы / перезагрузить сервер.
- Проверить пакет через dpkg/rpm.
- Прогнать внешний тест (filippo.io).
- При подозрении — ротация ключей и уведомление.
Роли и чеклисты
- Системный администратор: обновление пакетов, перезапуск сервисов, проверка пакетов, перезагрузка по необходимости.
- Инженер безопасности: оценка риска, проверка логов, принятие решения о ротации ключей и уведомлении.
- Оператор службы поддержки: готовит сообщения для клиентов и планы по реагированию.
Когда исправление может не сработать (контрпримеры)
- Если приватный ключ уже был скомпрометирован до установки патча — простое обновление OpenSSL не решит проблему.
- Если пакет дистрибутива не содержит явного номера версии 1.0.1g, но содержит backport, необходимо проверить содержание пакета.
- Если служба не была перезапущена после обновления, старый процесс останется уязвимым.
Небольшая decision flow (Mermaid)
flowchart TD
A[Проверить версию openssl] --> B{Версия уязвима?}
B -- Да --> C[Обновить пакеты]
B -- Нет --> D[Проверить пакетный бэкпорт]
C --> E[Перезапустить сервисы]
D --> F{Патч в пакете?}
F -- Да --> E
F -- Нет --> C
E --> G[Прогнать тесты и проверить логи]
G --> H{Есть признаки компрометации?}
H -- Да --> I[Ревокировать ключи и переиздать сертификаты]
H -- Нет --> J[Мониторинг]Шаблон уведомления для клиентов (коротко)
«Мы обнаружили и устранили уязвимость OpenSSL (Heartbleed). Все серверы обновлены, соответствующие ключи заменены (если требовалось). Рекомендуем проверить ваши учётные данные и при обнаружении подозрительных действий сменить пароли.»
Краткое глоссарий (1 строка на термин)
- Heartbeat: служебное сообщение в протоколе TLS для проверки доступности соединения.
- Backport: перенос исправления в старую версию пакета без изменения основного номера версии.
- CSR: запрос на подпись сертификата (Certificate Signing Request).
Ресурсы и ссылки
- Тест: http://filippo.io/Heartbleed/
- HowtoForge обсуждение: https://www.howtoforge.com/forums/showthread.php?t=65498
- Заметки безопасности дистрибутивов (см. раздел выше)
Резюме: обновите OpenSSL до 1.0.1g или примените патчи дистрибутива, перезапустите сервисы, протестируйте систему и при признаках компрометации замените ключи и сертификаты.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента