Немного про уязвимость Heartbleed
Добавил: Amro   Дата: 06.10.2014 19:20

Heartbleed — ошибка (переполнение буфера) в криптографическом программном обеспечении OpenSSL, позволяющая несанкционированно читать память на сервере или на клиенте, в том числе для извлечения закрытого ключа сервера. Информация об уязвимости была опубликована в апреле 2014 года, ошибка существовала с конца 2011 года.

История

Ошибка появилась в версии OpenSSL 1.0.1 и исправлена в версии 1.0.1g.

Уязвимость была внесена 31 декабря 2011 года вместе с поддержкой расширения TLS heartbeat и распространена с версией OpenSSL 1.0.1 14 марта 2012 года.

7 апреля 2014 года было объявлено, что OpenSSL версии 1.0.2-beta и всех версий 1.0.1, предшествующих 1.0.1g, имеют критическую ошибку работы с памятью в реализации расширения TLS Heartbeat. Этот дефект может использоваться для получения до 64 килобайт случайных данных приложения с каждым heartbeat-запросом. Номер бага в CVE — CVE-2014-0160.

Атака

Ошибка была в TLS Heartbeat, несложном расширении TLS. TLS — протокол представления данных поверх TCPили UDP, рассчитанный, однако, только на непрерывный поток данных. Если же обмен данными состоит из запросов и ответов, появляется возможность определять какую-то информацию по активности связи, да и после длинного простоя надо будет снова налаживать связь. Чтобы справиться с проблемой, компьютеры «перебрасываются» туда-сюда пакетом случайной длины, и этим поддерживают связь в активном состоянии и «зашумляют» канал.

Heartbeat-пакет состоит из данных, которые сервер должен вернуть в неизменном виде (это гарантирует, что сервер расшифровывал пакет), и случайных заполняющих байтов. OpenSSL не проверял корректность этого пакета: возможен, например, пакет длиной 16 байт, в котором написано, что длина данных 64 килобайта (поле размера двухбайтовое). Подверженные ошибке версии OpenSSL выходили за пределы буфера и передавали клиенту столько памяти, сколько он запросил, позволяя атакующему получать не предназначенные для этого данные. RFC предписывает не отвечать на такие «отравленные» пакеты.

Через heartbleed нельзя извлечь какой-то конкретный блок памяти. Однако злоумышленники могут повторять атаку ещё и ещё раз, пока в ответном пакете не попадутся конфиденциальные данные сервера или пользователей.Попасться может всё, что угодно: начиная от закрытого ключа сервера, который сможет позволить атакующему расшифровывать текущий или сохранённый трафик с помощью атаки man-in-the-middle, и заканчивая чьими-тоcookie, запросами и ответами, которые позволят взломать ни в чём не повинного пользователя. На момент объявления, полмиллиона (около 17 %) защищённых веб-сайтов предполагаются уязвимыми.

Версии OpenSSL

Подверженные

  • OpenSSL 1.0.2-beta
  • OpenSSL 1.0.1 — OpenSSL 1.0.1f

(Если не установлен патч для CVE-2014-0160, не меняющий версии библиотеки. Такой патч доступен, например, для Debian, Red Hat Enterprise Linux (включая производные типа CentOS или Amazon Linux), Ubuntu (включая производные типа Linux Mint), Suse Linux Enterprise Server и OpenSUSE.

Не подверженные

  • OpenSSL 1.0.2-beta2 (предстоящая)
  • OpenSSL 1.0.1g
  • OpenSSL 1.0.0 (и релизы ветви 1.0.0)
  • OpenSSL 0.9.8 (и релизы ветви 0.9.8)

Как протестировать уязвимость

Веб-сервисы: 

Реакция

Системным администраторам рекомендуется либо использовать OpenSSL 1.0.1g, либо перекомпилировать библиотеку OpenSSL с ключом -DOPENSSL_NO_HEARTBEATS, отключая уязвимое расширение до тех пор, пока не представится возможным обновить ПО. Несмотря на то, что наложение патча решает проблему, запущенные приложения будут использовать подгруженный и ещё уязвимый код OpenSSL, пока каждое из приложений не будет перезапущено, позволяя подгрузить исправленный код. Так как все использованные уязвимой версией OpenSSL сертификаты и пароли могут считаться скомпрометированными, все закрытые ключи должны быть перевыпущены и все пароли сменены.

В день обнаружения уязвимости Tor Project выпустил уведомление, советующее всем желающим «надёжной анонимности или приватности в Интернете» «держаться подальше от Интернета несколько дней, пока всё не утрясётся». Владельцы сайтов и платформ советуют своим пользователям сменить пароли.

Обновление OpenSSL на Ubuntu или Debian Linux

Большинство дистрибутивов Linux уже выпустили соответствующие обновления библиотеки, либо патч к уязвимой версии. Узнать версию библиотеки OpenSSL можно через SSH с помощью команды:

$ openssl version
OpenSSL 1.0.1e 11 Feb 2013

Чтобы обновить библиотеку OpenSSL на Debian Linux, Ubuntu Linux и других дистрибутивах использующие менеджер пакетов apt-get можно с помощью:

$ apt-get update
$ apt-get upgrade openssl


Обновленный пакет OpenSSL на Debian Wheezy

После обновления библиотеки вам необходимо вручную перезагрузить некоторые службы, которые используют OpenSSL, например postfix, apache, nginx, sshd, php5-fpm и другие. Чтобы убедиться в том, что ваша версия OpenSSL больше не уязвима, можете уточнить название установленного пакета:

$ dpkg-query -l 'openssl'
||/ Name                                    Version                  Architecture             Description
+++-=======================================-========================-========================-===================================================================================
ii  openssl                                 1.0.1e-2+deb7u6          amd64                    Secure Socket Layer (SSL) binary and related cryptographic tools

В данном случае видна версия пакета 1.0.1e-2+deb7u6, это как раз патч для уязвимой версии 1.0.1e в дистрибутиве Debian. Если вы не ставили ограничение на использование только стабильных пакетов Debian, то OpenSSL у вас обновится до версии 1.0.1g. 

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

Heartbleed Exploits

Наиболее популярные эксплоиты для этой уязвимости можно скачать с гитхаба, например вот подборка https://github.com/amro86/CVE-2014-0160 

Подготовлено по материалам
Википедии и Хабра

comments powered by HyperComments