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

Технологии
автор: Андрей Васильков  08 апреля 2014

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

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

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

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

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

В результате допущенной ошибки в них не проверяется фактическая длина в записи SSLv3. Это позволяет прочитать без авторизации до 64 Кбайт из оперативной памяти процесса на подключённом клиенте или сервере за каждое обращение. Во многих случаях этого оказывается достаточно для получения ключей, паролей или других секретных данных.

Уязвимые версии криптографического пакета OpenSSL с марта 2012 года входят в состав многих дистрибутивов ОС семейства BSD и практически всех ОС Linux ветвей Debian, RedHat и Slackware.

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

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

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

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

По оценке издания ArsTechnica, критическая уязвимость в OpenSSL затронула в общей сложности более двух третей сайтов в мире. «Возможно, нам следует выкинуть наш SSL-сертификат и получить новый», — пишут в блоге проекта Tor.

Особенно важен тот факт, что атака с использованием данной уязвимости не оставляет никаких следов в логах сервера, поэтому не существует способа достоверно узнать, воспользовался ли кто-то этой ошибкой.

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

«Ради проверки мы решили взломать сами себя, — рассказывает Мехта. — Мы смогли получить секретные ключи, используемые для сертификатов 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, и проверять подключения к ним.
Поделиться
Поделиться
Tweet
Google
 
Читайте также
Золотые ключики: ФБР и АНБ настойчиво требуют у крупнейших провайдеров SSL-ключи
Золотые ключики: ФБР и АНБ настойчиво требуют у крупнейших провайдеров SSL-ключи
Разработчики браузеров закручивают гайки, чтобы повысить безопасность SSL
Разработчики браузеров закручивают гайки, чтобы повысить безопасность SSL
Кто же стоит за кражей SSL-сертификатов
Кто же стоит за кражей SSL-сертификатов
  • маргинлефт

    фантастически правильный баг с точки зрения его места и последствий

    • unk32

      Тут даже приведенный фикс написан в венгерской нотации: «если сумма трех чего-то больше чем троллейбус то троллейбус никуда не едет». И потом проверяющий должен найти к чему относятся «1 + 2 + 16» и прочитать наоборот: «если длина записи меньше чем что-то то ничего не делать».

  • unk32

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

    Теперь мы имеем Андроид и уже вторую критическую дыру в шифровании (известную).
    Любой опытный программист, ходивший по граблям, на своей шкуре знает или догадывается что не бывает кода без скрытых или отложенных багов. За исключением разве что «Hello World». Пока не найдут критическую дыру в функции print как минимум (стек ею переполнить или управляющие символы в строку зашить …).

    • маргинлефт
      • vag

        «…в безопасной программе не должно быть форматных строк, содержимое
        которых прямо или косвенно зависит от внешних по отношению к программе
        данных.»

        Таки HW — безопасная программа ;)

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

      Открытый исходный код — необходимое, но не достаточное условие. Сам по себе он не защищает программу от наличия ошибок, включая критические уязвимости. Часто случается наоборот — сторонники Open Source надеются друг на друга и на возможность проверки «тысячами специалистов». Вот только вы пробовали проверить листинг своей же программы через пару лет? Даже с комментариями и внятным оформлением это сложная задача (многое забылось, появились новые приёмы). Анализировать чужой код — это отдельный круг ада. Сложнее заметить именно те ошибки, которые очевидны. Например, в TrueCrypt версии 5.1 некорректная работа с драйвером диска приводила к записи данных в открытом виде при использовании hibernate. http://is.gd/JCJjY6

      • unk32

        Да я то знаю, просто не мог объяснить это раньше адептам открытого ПО, которые Си от Паскаль не отличают.

        • Айрат Ягудин

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

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

          В особо тяжёлых случаях — Си шарп от ноты до-диез :)
          Я за открытое ПО, но не против проприетарного. Я против фанатизма.

          • unk32

            Согласен. Просто надо на любой код смотреть трезво. Я сам сделал немало с открытым кодом, но блин ни копейки … Потребитель восринимает как само-собой разумеющееся, да, много «спасибов», но квартплату никто не отменял. Да, есть крупные производители открытого ПО, как есть и крупные проприетарщики и железячники которые их кормят. И госструктуры тоже временами кормят, но потом вылазят всякие бэкдоры. Или еще схема: IBM кормит линукс, а сама IBM кормится корпорациями и оборонкой … Ну наверно просто ребята добрые в IBM.

          • jno

            мы не добрые :E

Хостинг "ИТ-ГРАД"
© ООО "Компьютерра-Онлайн", 1997-2018
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.
«Партнер Рамблера» Почта защищена сервером "СПАМОРЕЗ" Хостинг "Fornex"