Ошибка в пакете OpenSSL поставила под удар 2/3 серверов Андрей Васильков

Ошибка в пакете OpenSSL поставила под удар 2/3 серверов

Андрей Васильков

Опубликовано 08 апреля 2014

Седьмого апреля вышел бюллетень по безопасности CVE-2014—0160, из которого стало известно о длительном существовании критической уязвимости в криптографическом пакете OpenSSL.

Обнаружилось, что алгоритмы реализации протоколов TLS и SSL в большинстве используемых сегодня версий OpenSSL некорректно обрабатывают пакеты расширения Heartbeat (из-за чего ошибка получила название HeartBleed). Это позволяет злоумышленникам получить удалённый доступ к конфиденциальной информации из оперативной памяти активного сетевого процесса за пределами буфера.

HeartBleed (коллаж по материалам inspirefusion.com и openssl.org).

Удивительно, но критическую уязвимость не замечали на протяжении двух лет. Ей подвержены все версии OpenSSL от 1.0.1 до 1.0.1f включительно, а также 1.0.2-beta1. 

В результате допущенной ошибки в них   Уязвимые версии криптографического пакета OpenSSL с марта 2012 года входят в состав многих дистрибутивов ОС семейства BSD и практически всех ОС Linux ветвей Debian, RedHat и Slackware.не проверяется фактическая длина в записи SSLv3. Это позволяет прочитать без авторизации до 64 Кбайт из оперативной памяти процесса на подключённом клиенте или сервере за каждое обращение. Во многих случаях этого оказывается достаточно для получения ключей, паролей или других секретных данных.

В первую очередь ошибка затрагивает серверы Apache, nginx, проект Tor (через веб-сервер https://www.torproject.org), а также многие веб-сайты, использующие протокол HTTPS, даже если доступ к ним осуществляется по VPN.

Уязвимость Heartbleed меняет отношение к Tor (коллаж по материалам laughingsquid.com и torproject.org).

По данным W3Techs, под управлением Apache сегодня работают 60,7% всех сайтов интернета. Написанный Игорем Сысоевым HTTP и почтовый сервер nginx обслуживает около 18% популярных российских сайтов, включая «Яндекс», Mail.Ru, «Рамблер» и «ВКонтакте».

По оценке издания ArsTechnica, критическая уязвимость в OpenSSL   Особенно важен тот факт, что атака с использованием данной уязвимости не оставляет никаких следов в логах сервера, поэтому не существует способа достоверно узнать, воспользовался ли кто-то   Уязвимость в OpenSSL была обнаружена экспертами из фирмы Codenomicon в начале апреля. Факт её существования подтверждён независимым исследованием исходного кода библиотеки ssl/d1_both.c, проведённым группой под руководством специалиста по вопросам безопасности компании Google Нила Мехты (Neel Mehta).затронула в общей сложности более двух третей сайтов в мире. «Возможно, нам следует выкинуть наш SSL-сертификат и получить новый», — пишут в блоге проекта Tor. этой ошибкой.

«Ради проверки мы решили взломать сами себя, — рассказывает Мехта. — Мы смогли получить секретные ключи, используемые для сертификатов X.509, имена пользователей и их пароли, перехватить мгновенные сообщения и электронные письма, прочесть критически важные для бизнеса документы».

Патч для OpenSSL был выпущен Ником Салливаном (Nick Sullivan) — системным программистом компании CloudFlare. Ему помогали программист Google Адам Лэнгли (Adam Langley) и советник по безопасности The OpenSSL Project Бодо Мюллер (Bodo Moeller).

Наиболее важная часть исправлений коснулась добавления проверки длины полезной нагрузки.

/* Read type and payload length first */ if (1 + 2 + 16 > s->s3->rrec.length) return 0; /* silently discard */

Они же придержали опубликование официального бюллетеня с описанием ошибки до её исправления. Однако по результатам своих исследований группа Мехта вынесла крайне неутешительный прогноз: поскольку уязвимость существовала давно и факты о её эксплуатации получить невозможно, её уже могут скрыто использовать для получения несанкционированного доступа и создания других обходных путей на будущее. Поэтому, считают эксперты Google, проблема НСД останется актуальной даже после установки патча.

Пока в бюллетене и распространённых информационных сообщениях официально советуют предпринять следующие шаги:

установить исправленную версию OpenSSL 1.0.1g или 1.0.2-beta2 либо перекомпилировать пакет OpenSSL с ключом OPENSSL_NO_HEARTBEATS;

перевыпустить SSL-сертификат;

использовать приманки (honeypot), имитирующие наличие серверов с уязвимым пакетом OpenSSL, и проверять подключения к ним.

К оглавлению