Уязвимость в OpenSSL «Heartbleed»
Несколько дней назад была опубликована информация о серьезной уязвимости Heartbleed в пакете OpenSSL (CVE-2014-0160 «TLS heartbeat read overrun»), с помощью которой злоумышленник может получить доступ к различным данным, включая приватные ключи, имена пользователей и пароли, данные VPN и т.д.
Использование уязвимости Heartbleed не оставляет каких-либо следов в журнальных файлах, поэтому невозможно сказать, была ли утечка данных в том или ином случае. Отметим, что Heartbleed не является эксплойтом и не может быть использована для прямого получения несанкционированного доступа к уязвимому серверу. Однако велика вероятность, что данные, которые получены злоумышленником с помощью Heartbleed, могут быть использованы для последующей атаки на уязвимую систему.
Отметим, что уязвимость присутствует в ограниченном диапазоне версий OpenSSL — с 1.0.1 до 1.0.2-beta1. Эти версии OpenSSL относительно современные и поставляются по-умочанию в следующих версия популярных операционных систем:
- Debian 7.x Wheezy (stable)
- Ubuntu 12.04.4 LTS
- CentOS 6.x
- Fedora 18
- OpenBSD 5.3
- FreeBSD 10.0
- NetBSD 5.0.2
- OpenSUSE 12.2
Более ранние версии ОС (например — Centos 5.x или FreeBSD 8.x) содержат ранние версии OpenSSL, в которых нет уязвимости Heartbleed. Версию OpenSSL можно проверить командой openssl version:
1 2 3 4 5 6 |
# "Старая" версия, нет уязвимости: server1# openssl version OpenSSL 0.9.8o 01 Jun 2010 # Уязвимая версия, требуется обновление: server2# openssl version OpenSSL 1.0.1e-15 11 Feb 2013 |
Обновление OpenSSL можно произвести с помощью стандартного пакетного менеджера. Для Centos и других RHEL-систем выполните команду:
1 |
yum update |
Для Debian/Ubuntu:
1 |
apt-get update && apt-get upgrade |
Для Arch:
1 |
pacman -Syu |
По окончанию обновления системы желательно перезагрузить сервер. Если перезагрузка по каким-то причинам невозможна, остановите и заново запустите все сервисы, которые работают с SSL: Apache, NGINX, почтовые службы, VPN и так далее.
После этого крайне рекомендуется заказать перевыпуск SSL-сертификатов, которые используются на ваших вэбсайтах. Уточните процедуру отзыва старых ключей и выпуска нового сертификата у соответствующей компании. Эта процедура обычно не требует дополнительной оплаты.
С точки зрения безопасности, рекомендуем сменить используемые пароли. Напомним очевидные рекомендации:
- Начните использовать менеджер паролей. Есть коммерческие продукты (1Password, LastPass Premium), есть и бесплатные/open source (KeePass).
- Для SSH настройте доступ по ключам, полезным будет перейти на двухфакторную аутентификацию.
- Не используйте один и тот же пароль на двух и более сайтах! Генерируйте для каждого ресурса собственный с помощью менеджера паролей.
- Регулярно обновляйте операционную систему и установленные пакеты.
- Будьте в курсе последних сообщений в IT-безопасности, подпишитесь на соответствующие списки рассылок или других источники информации.
Небольшое обновление (10 апреля 2014 года): в одном из списков рассылки предложено решение для протоколирования и блокирования Heartbeat-запросов к HTTPS (порт 443) с помощью iptables. Сделать это можно с помощью следующих правил:
1 2 3 4 5 6 7 |
# Log rules iptables -t filter -A INPUT -p tcp --dport 443 -m u32 --u32 \ "52=0x18030000:0x1803FFFF" -j LOG --log-prefix "BLOCKED: HEARTBEAT" # Block rules iptables -t filter -A INPUT -p tcp --dport 443 -m u32 --u32 \ "52=0x18030000:0x1803FFFF" -j DROP |
Указанные правила для iptables можно использовать в качестве временной меры, обновление OpenSSL нужно сделать обязательно.