Вопрос: Heartbleed: Что это такое и какие варианты смягчить его?


Это Канонический вопрос о понимании и устранении проблемы безопасности с использованием сердечной недостаточности.

Что такое CVE-2014-0160 AKA «Heartbleed»? В чем причина, какие ОС и версии OpenSSL уязвимы, каковы симптомы, есть ли какие-либо методы для обнаружения успешного использования?

Как проверить, не влияет ли моя система? Как можно смягчить эту уязвимость? Должен ли я быть обеспокоен тем, что мои ключи или другие личные данные были скомпрометированы? С какими другими побочными эффектами я должен беспокоиться?


203
2018-04-08 00:26


Источник


Смягчение последствий сердечных сокращений включает в себя Больше чем просто новые ключи, (Ссылка на мой ответ на Информационную безопасность StackExchange) - scuzzy-delta
Я слышу вас, но я думаю, что EEAA довольно всесторонне осветила это ниже. - MadHatter
Я согласен: это отличный ответ, но heartbleed.com прилагает все усилия, чтобы указать, что существуют соображения, выходящие за рамки только новых пар ключей - например, принудительное изменение пароля и аннулирование сеанса. - scuzzy-delta
@ scuzzy-delta - хорошая точка. Теперь я сделал свой ответ CW, поэтому не стесняйтесь редактировать / улучшать его с помощью этой информации. - EEAA♦
Лучший пример того, что это - (неудивительно) XKCD: xkcd.com/1354 - Wayne Werner


Ответы:


Первый, прежде чем совершать ошибки, убедитесь, что вы понимаете, действительно ли эта уязвимость применяется к вам. Если у вас есть сервер, но на самом деле никогда не было приложений, использующих TLS, то это не очень важно для вас. Если, с другой стороны, вы когда-либо имели TLS-приложения, ну, значит, вы готовы к лечению. Читай дальше:

Что такое CVE-2014-0160 aka «Heartbleed»?

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

Ошибка была обнаружена Нилом Мехтой из Google Security (21 марта 2014 года) и финской фирмой Codenomicon по тестированию безопасности (2 апреля 2014 года).

В чем причина?

Ну, странный код в OpenSSL. Вот это фиксация, которая ввела уязвимость, и Вот это фиксация, которая фиксировала уязвимость. Ошибка появилась в декабре 2011 года и была исправлена ​​сегодня, 7 апреля 2014 года.

Ошибка также может рассматриваться как признак более серьезной проблемы. Две связанные проблемы: (1) какой процесс существует, чтобы гарантировать, что ошибочный код не вводится в базу кода, и (2) почему протоколы и расширения настолько сложны и трудно тестируются. Пункт (1) - это проблема управления и процесса с OpenSSL и многими другими проектами. Многие разработчики просто сопротивляются таким методам, как обзоры кода, анализ и сканирование. Пункт (2) обсуждается в рабочей группе IETF TLS. Видеть Сложность протоколов / протоколов,

Был ли вредоносный код введен неправильно?

Я не буду спекулировать о том, действительно ли это была ошибка или, возможно, немного кода, пропущенного от имени плохого актера. Тем не менее, человек, который разработал код для OpenSSL, утверждает, что он был непреднамеренным. Видеть Человек, который ввел серьезный недостаток безопасности «Heartbleed», отрицает, что он вставлял его намеренно,

Какие ОС и версии OpenSSL уязвимы?

Как упоминалось выше, любая используемая операционная система или приложение, которое связано с OpenSSL 1.0.1 - 1.0.1f.

Каковы симптомы, есть ли какие-либо методы для обнаружения успешного использования?

Это страшная часть. Насколько нам известно, нет известного способа определить, была ли эта уязвимость использована. Теоретически возможно, что в ближайшее время будут выпущены подписи IDS, которые смогут обнаружить этот эксплойт, но на момент написания этой статьи они недоступны.

Имеются данные о том, что Heartbleed активно эксплуатировался в дикой природе еще в ноябре 2013 года. См. EFF Wild at Heart: были разведывательными агентствами, использующими Heartbleed в ноябре 2013 года? И Bloomberg сообщает, что NSA вооружило эксплойт вскоре после того, как была введена уязвимость. Видеть NSA заявила о том,, Однако разведывательное сообщество США отрицает претензии Блумберга. Видеть IC НА ЗАПИСИ,

Как проверить, не влияет ли моя система?

Если вы поддерживаете OpenSSL в своей системе, тогда вы можете просто выпустить openssl version:

$ openssl version
OpenSSL 1.0.1g 7 Apr 2014

Если дистрибутив поддерживает OpenSSL, то вы, вероятно, не можете определить версию OpenSSL из-за повторного исправления, используя openssl команды или информации о пакете (например, apt-get, dpkg, yum или rpm). Процесс обратного исправления, используемый большинством (всего?) Дистрибутивов, использует только номер базовой версии (например, «1.0.1e»); и делает не включают эффективная версия безопасности (например, «1.0.1g»).

Существует открытый вопрос о Super User, чтобы определить эффективную версию безопасности для OpenSSL и других пакетов, когда пакеты передаются обратно. К сожалению, нет полезных ответов (кроме проверки сайта дистрибутива). Видеть Определение эффективной версии безопасности при обращении с Backpatching?.

Как правило: если вы когда-либо устанавливали одну из уязвимых версий и когда-либо запускали программы или службы, связанные с OpenSSL для поддержки TLS, тогда вы уязвимы.

Где я могу найти программу для проверки уязвимости?

Через несколько часов после объявления Heartbleed несколько человек в Интернете опубликовали общедоступные веб-приложения, которые предположительно могли быть использованы для проверки сервера на наличие этой уязвимости. На момент написания этой статьи я никого не рассматривал, поэтому я не буду публиковать свои приложения. Их можно найти относительно легко с помощью вашей предпочтительной поисковой системы.

Как смягчается эта уязвимость?

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

  1. Патч уязвимых систем.
  2. Восстановите новые секретные ключи.
  3. Отправьте новый CSR в ваш центр сертификации.
  4. Получите и установите новый подписанный сертификат.
  5. Недействительные ключи сеанса и файлы cookie
  6. Сбросить пароли и общие секреты
  7. Отменить старые сертификаты.

Более подробный анализ и ответ см. Что должен делать оператор веб-сайта о эксплойте OpenBSL с использованием Heartbleed OpenSSL?на Exchange Stack Exchange.

Должен ли я быть обеспокоен тем, что мои ключи или другие личные данные были   скомпрометированы? С какими другими побочными эффектами я должен беспокоиться?

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

Вскоре после того, как была обнаружена уязвимость, Cloudfare предложила проблему, чтобы проверить, можно ли восстановить личный ключ сервера на практике. Задача была независимо выиграна Федором Indutny и Ilkka Mattila. Видеть Проблемы с сердцем,

Где я могу найти дополнительную информацию?

Link dump, для тех, кто ищет более подробную информацию:


Достаточно подробный график событий раскрытия можно найти в Шкала раскрытия информации о кровотечении: кто знал, что и когда,


Если вы программист и заинтересованы в различных программных трюках, таких как обнаружение атаки Heartbleed через OpenSSL msg_cb обратный вызов, затем см. OpenSSL Рекомендации по безопасности 2014047,


118
2018-04-08 04:23



+1 для ОСТАНОВ. ВНИЗ. ВАШ. СЕРВЕРЫ. * - Если вы делаете НИЧЕГО, где SSL действительно важно, отключите его, пока не исправите проблему. Также не забудьте установить новые сертификаты (с новые ключи) после того, как вы исправили свои серверы - повторное использование старых ключей (которые, возможно, были скомпрометированы) побеждает целую цель исправления уязвимости ... - voretaq7
ТАКЖЕ - перезапустите любые службы, которые ссылаются на библиотеки OpenSSL. Обновление OpenSSL без перезапуска ваших демонов так же хорошо, как вообще не обновление. - EEAA♦
Действительно - после любого основного патча (например, OpenSSL) я считаю хорошим правилом просто перезагрузить компьютер, чтобы убедиться, что вы ничего не пропустите. - voretaq7
Один из тестеров был открыт: github.com/FiloSottile/Heartbleed - Riking
@EEAA, «выключение серверов» не означает, что вам нужно вытащить питание. Это означает, что вы отключите (или переконфигурируете отключить ssl / tls) apache или какую-либо службу, обслуживающую службу. - psusi


Простое объяснение ошибки XKCD:

XKCD 1354


42
2018-04-08 07:28





Ubuntu 12.04, 12.10 и 13.10

Ubuntu выпустил USN-2165-1, в котором говорится, что обновленные пакеты теперь доступны в архивах. Выполните следующие две команды, чтобы захватить исправление.

sudo apt-get update
sudo apt-get upgrade

Ubuntu 14.04

Я загрузил пакет Debian, содержащий новую версию (1.0.1g), в PPA, который я создал для этой цели. Эти три команды добавят мой PPA в вашу систему, обновят список доступных пакетов и обновят все:

sudo add-apt-repository ppa:george-edison55/openssl-heartbleed-fix
sudo apt-get update
sudo apt-get upgrade

Примечание: PPA также предоставляет пакеты для Ubuntu 12.04 и 13.10, на всякий случай, если вы предпочитаете фактически запускать новую версию (1.0.1g) вместо того, чтобы просто использовать исправленные версии в архивах.

Ubuntu 10.04

Это версия LTS, серверная версия по-прежнему поддерживается и получает обновления для системы безопасности. Но уязвимость, пораженная сердцем, не повлияла на пакет openssl стандартной установки ubuntu 10.04, потому что версия ниже 1.0.1.

Версия для настольных ПК достигла конца жизни и нуждается в обновлении / переустановке.

Ubuntu 13.04 и другие устаревшие версии

У Ubuntu 13.04 был очень короткий цикл поддержки, которого вы не ожидаете. Он уже достиг конца жизни и больше не получает обновлений безопасности. Он должен быть давно обновлен. Если кто-то использует его, обновите его сейчас, либо с нуля, либо его можно дополнить до 13.10 после этой простой процедуры: http://www.tecmint.com/upgrade-ubuntu-13-04-raring-ringtail-to-ubuntu-13-10-saucy-salamander/ После обновления система получает исправленный патч от 13.10.

Для всех остальных устаревших версий ubuntu это означает, что в основном необходима новая установка.

Убедитесь, что патч был применен

По существу, openssl version -a и убедитесь, что дата сборки 7 апреля 2014 года или позже, но посмотрите больше Вот,

перезагружать

Лучший способ убедиться, что все службы в зависимости от OpenSSL перезапущены, - это перезагружать,


36
2018-04-08 10:37



Я не могу говорить о других версиях, но, по-видимому, для точного (12.04) доступно исправление. Хотя я не могу точно сказать, что это исправляет эту уязвимость, она была, по крайней мере, скомпилирована после соответствующей фиксации (Mon Apr 7 20:31:55 UTC 2014). - Calrion
@Calrion: патч для OpenSSL или пакет Debian для OpenSSL? OpenSSL уже исправлена ​​и выпущена новая версия. - Nathan Osman
что произойдет с существующими соединениями, пока openssl обновляется? они будут отброшены? - pdeva
Это зависит от того, какой веб-сервер вы используете и как вы обновляете. При этом я не стал бы беспокоиться о том, чтобы удалить существующие соединения, так как они используют уязвимую версию. - Nathan Osman
14,04 с тех пор получил патч, - Seth


RedHat 6.5 и CentOS 6.5

Они уязвимы. Исправление RedHat RHSA-2014-0376 говорит, что доступны исправленные библиотеки, и любой пострадавший должен обновиться при первой же возможности.

На момент написания статьи CentOS еще не имела фиксированной версии, но Запись Karanbir Singh на CentOS-анонс говорит, что они выпустили обновленную версию openssl (openssl-1.0.1e-16.el6_5.4.0.1, обратите внимание на последние четыре цифры, которые являются важными), в которых отключена эксплуатируемая команда TLS, и которая может быть безопасно применена, поскольку она будет перезаписана фиксированной версией, когда она в конечном итоге будет выпущена.

Временно фиксированная версия, похоже, пока не попала на все зеркала, но находится в основном хранилище на http://mirror.centos.org/centos/6/updates/x86_64/Packages/ (и аналогично для i686).

редактировать: как говорит Иэн, теперь появилась полностью исправленная версия для C6.5, и, похоже, она торопилась вокруг зеркал в спешке. Прямо yum update получил его для моих серверов; его openssl-1.0.1e-16.el6_5.7,

Версии RH6 и C6 до 6.5

Они не уязвимы. В соответствии с этот совет от Red Hat,

Эта проблема не повлияла на версии openssl, поставляемые с Red   Hat Enterprise Linux 5 и Red Hat Enterprise Linux 6.4 и более ранних версий.

Запись Karanbir Singh на CentOS-анонс в равной степени ясно о версировании:

Раньше в тот же день мы были осведомлены о серьезном   выпускать в openssl как отправленный в CentOS-6.5


14
2018-04-08 13:07



не lists.centos.org/pipermail/centos-announce/2014-April/... освобождение исправления? - Iain


Debian Wheezy

Debian испробовал DSA-2896-1 и исправленные библиотеки доступна здесь, Скрипт оболочки доступна здесь,

1. Патч

Репозиторий Apt-get был обновлен, поэтому теперь исправленные библиотеки доступны через apt-get update && apt-get upgrade

apt-get upgrade libssl1.0.0 openssl

В качестве альтернативы (не рекомендуется) пакеты могут быть обновлены вручную:

wget http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0-dbg_1.0.1e-2+deb7u5_amd64.deb
wget http://security.debian.org/pool/updates/main/o/openssl/openssl_1.0.1e-2+deb7u5_amd64.deb
wget http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0_1.0.1e-2+deb7u5_amd64.deb
wget http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.0.1e-2+deb7u5_amd64.deb

dpkg -i openssl_1.0.1e-2+deb7u5_amd64.deb
dpkg -i libssl1.0.0_1.0.1e-2+deb7u5_amd64.deb
dpkg -i libssl1.0.0-dbg_1.0.1e-2+deb7u5_amd64.deb
dpkg -i libssl-dev_1.0.1e-2+deb7u5_amd64.deb

2. Перезапустить сервер / службы

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

3. Проверьте версию OpenSSL

love@server:~$ openssl version
OpenSSL 1.0.1e 11 Feb 2013
love@server:~$ dpkg -l libssl1.0.0
||/ Name                    Version          Architecture     Description
+++-=======================-================-================-====================================================
ii  libssl1.0.0                 1.0.1e-2+deb7u6  amd64            SSL shared libraries

13
2018-04-08 11:23



Если вы получаете обновления от wheezy/security тогда вам будет хорошо с apt-get update && apt-get upgrade, Или используйте интерактивный менеджер пакетов для обновления пакетов openssl, libssl1.0.0, libssl1.0.0-dbg а также libssl-dev (как установлено в вашей системе). - Michael Kjörling
использование apt-get не устраняет проблему для меня - все еще отображается OpenSSL 1.0.1e 11 февраля 2013 г. - user568829
Спасибо @ michael-kjorling, он не был доступен, когда я это сделал, но это самый безопасный и правильный способ обновления. - jacksoncage
@ user568829 после применения патча openssl версия все равно покажет OpenSSL 1.0.1e 11 Feb 2013 так как патч называется 1.0.1e-2. Вы можете проверить dpkg -l openssl и он должен показать версию 1.0.1e-2+deb7u6 - jacksoncage
Я бы предложил перезапустить хост после обновления OpenSSL, а не потому, что это строго необходимо, но для спокойствия, по крайней мере, все, что динамически загружает библиотеки OpenSSL, использует новую версию. (Статически связано другое дело.) Тем не менее, я понимаю, что некоторые серверы не могут быть легко перезагружены во всех ситуациях, когда перезапуск службы может быть приемлемым. - Michael Kjörling


Я хотел бы указать, что секретные ключи - это не единственные активы, которые следует рассматривать как скомпрометированные. У ошибки есть вероятность утечки Любые память, работающая в одном и том же адресном пространстве (т. е. тот же процесс), что и OpenSSL. Поэтому, если вы используете серверный процесс, где уязвимая версия OpenSSL статически или динамически связана, любая информация, которую этот процесс когда-либо обрабатывал, включая пароли, номера кредитных карт и другие персональные данные, следует считать потенциально скомпрометированными.


9
2018-04-08 20:23





FreeBSD 10.0 или OpenSSL из портов

Команда безопасности FreeBSD выпустил консультацию относительно CVE-2014-0160 (он же «Heartbleed») и: FreeBSD-SA-14: 06.openssl

  1. Обновление FreeBSD

    • Обновление FreeBSD через двоичный патч

      Системы, управляющие Версия RELEASE FreeBSD на i386 или amd64 платформы могут быть обновлены с помощью утилиты freebsd-update (8):

      # freebsd-update fetch
      # freebsd-update install
      
    • Обновление FreeBSD из источников

      1. Загрузите соответствующий патч из нижеуказанного местоположения и проверьте отделив подпись PGP, используя вашу утилиту PGP.

        # fetch http://security.FreeBSD.org/patches/SA-14:06/openssl-10.patch
        # fetch http://security.FreeBSD.org/patches/SA-14:06/openssl-10.patch.asc
        # gpg --verify openssl-10.patch.asc
        
      2. Выполните следующие команды как root:

        # cd /usr/src
        # patch < /path/to/patch
        
      3. Перекомпилируйте операционную систему

        с помощью компиляция системы а также installworld как описано в Руководство FreeBSD,

  2. Обновите OpenSSL порт с минимальной версией 1.0.1_10

  3. Перезапустите все демоны с помощью библиотеки или перезагрузите систему

  4. Действуйте так, как будто ваша система была скомпрометирована, повторно запустите все ваши ключи ssl и / или сертификаты и потенциально просочилась информация (см. EEAA более общий ответ).

FreeBSD 9.x и FreeBSD 8.x

Эта система не уязвим к Heartbleed по умолчанию, полагаясь на более раннюю версию 0.9.x OpenSSL библиотека, если вы установили OpenSSL  из портов (см. наверху).

Если эти системы не уязвимы для Heartbleed вопрос, возможно, было бы разумно обновить вашу систему скорее раньше, чем позже из-за другого местный уязвимости (см. FreeBSD-SA-14: 06.openssl и раздел «FreeBSD 10.0» наверху):

Местный злоумышленник может отслеживать процесс подписи и может восстановить   ключ подписи от него. [CVE-2014-0076]

Заметка:

Оригинал Heartbleed консультативные списки FreeBSD 8.4 и 9.1 как потенциально уязвимые. Это неверно из-за отсутствия Расширение сердечного ритма (по умолчанию библиотека FreeBSD openssl имеет версию 0.9.x).


9
2018-04-11 08:03