Heartbleed: Что это такое и какие варианты смягчить его?
Это Канонический вопрос о понимании и устранении проблемы безопасности, связанной с Heartbleed.
Что такое CVE-2014-0160 AKA «Heartbleed»? В чем причина, какие ОС и версии OpenSSL уязвимы, каковы симптомы, есть ли какие-либо методы для обнаружения успешного использования?
Как проверить, влияет ли моя система? Как можно смягчить эту уязвимость? Должен ли я быть обеспокоен тем, что мои ключи или другие личные данные были скомпрометированы? С какими другими побочными эффектами я должен беспокоиться?
9 ответов
Сначала , прежде чем волноваться, убедитесь, что вы понимаете, действительно ли эта уязвимость применяется к вам. Если у вас есть сервер, но на самом деле никогда не было приложений, использующих 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 заявила о том, что Exploit Heartbleed Bug для разведки в течение лет . Однако разведывательное сообщество США отрицает претензии Блумберга. См. ИС НА ЗАПИСИ .
Как проверить, не влияет ли моя система?
Если вы поддерживаете OpenSSL в своей системе, вы можете просто выпустить openssl version
:
$ openssl version
OpenSSL 1.0.1g 7 Apr 2014
Если дистрибутив поддерживает OpenSSL, вы, вероятно, не сможете определить версию OpenSSL из-за повторного исправления с помощью команды openssl
или информации о пакете (например, apt-get
, dpkg
, yum
или rpm
). Процесс обратного исправления, используемый большинством (всего?) Дистрибутивов, использует только номер базовой версии (например, «1.0.1e»); и not включает эффективную версию безопасности (например, «1.0.1g»).
Есть открытый вопросна Super User, чтобы определить эффективную версию безопасности для OpenSSL и других пакетов, когда пакеты передаются обратно. К сожалению, нет полезных ответов (кроме проверки сайта дистрибутива). См. Определение эффективной версии безопасности при работе с Backpatching .
Как правило: если вы когда-либо устанавливали одну из уязвимых версий и когда-либо запускали программы или службы, связанные с OpenSSL для поддержки TLS, тогда вы уязвимы.
Где я могу найти программу для проверки уязвимости?
В течение нескольких часов после объявления Heartbleed несколько человек в Интернете опубликовали общедоступные веб-приложения, которые предположительно могли быть использованы для проверки сервера на наличие этой уязвимости. На момент написания этой статьи я никого не рассматривал, поэтому я не буду публиковать свои приложения. Их можно найти относительно легко с помощью вашей предпочтительной поисковой системы.
Как смягчается эта уязвимость?
Перейдите на версию, не подверженную уязвимости, и сбросьте или переустановите уязвимые данные. Как отмечено на веб-сайте Heartbleed , соответствующие шаги ответа в целом:
- Исправить уязвимые системы.
- Восстановить новые закрытые ключи.
- Отправьте новый CSR вашему CA.
- Получить и установить новый подписанный сертификат.
- Недействительные ключи сеанса и файлы cookie
- Сброс паролей и разделяемых секретов
- Отменить старые сертификаты.
Более подробный анализ и ответ см. в разделе Что должен делать оператор веб-сайта о эксплойте OpenBSL с использованием Heartbleed OpenSSL? на Exchange Stack Exchange.
Должен ли я быть обеспокоен тем, что мои ключи или другие личные данные были скомпрометированы? С какими другими побочными эффектами я должен беспокоиться?
Совершенно верно. Системным администраторам необходимо предположить , что их серверы, которые использовали уязвимые версии OpenSSL, действительно скомпрометированы и соответственно реагируют.
Вскоре после того, как была обнаружена уязвимость, Cloudfare предложила проверить, можно ли восстановить личный ключ сервера на практике. Задача была независимо выиграна Федором Indutny и Ilkka Mattila. См. Проблему с кровотечением .
Где я могу найти дополнительную информацию?
Ссылка дампа, для тех, кто ищет более подробную информацию:
- OpenSSL SECADV 2014047
- CVE-2014-0160
- Heartbleed
- анонс Ubuntu
- Объявление RHEL
- Официальное объявление OpenSSL
Скорее подробный график событий раскрытия можно найти на Временная шкала раскрытия информации о кровотечении: кто знал, что и когда .
Если вы программист и заинтересованы в различных программных трюках, таких как обнаружение атаки Heartbleed через обратный вызов OpenSSL msg_cb
, см. раздел OpenSSL Рекомендации по безопасности 2014047 .
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 года или позже, но см. больше .
Reboot
Лучший способ убедиться, что все службы в зависимости от OpenSSL перезапущены, - это перезагрузка .
RedHat 6.5 и CentOS 6.5
Они уязвимы. erratum RedHat RHSA-2014-0376 говорит, что доступны исправленные библиотеки, и любой пострадавший должен обновляться при первой же возможности.
На момент написания статьи CentOS еще не имела фиксированной версии, но Опубликование Karanbir Singh в CentOS-анонсе говорит, что они выпустили обновленную версию openssl (openssl-1.0.1e-16.el6_5.4.0.1
, note последние четыре цифры, которые важны), которые отключили доступную команду 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
Debian Wheezy
Debian выпустил DSA-2896-1 и исправленные библиотеки доступны здесь . Скрипт оболочки доступен здесь .
1. Patch
Репозиторий 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
[email protected]:~$ openssl version
OpenSSL 1.0.1e 11 Feb 2013
[email protected]:~$ dpkg -l libssl1.0.0
||/ Name Version Architecture Description
+++-=======================-================-================-====================================================
ii libssl1.0.0 1.0.1e-2+deb7u6 amd64 SSL shared libraries
Я хотел бы указать, что закрытые ключи не являются единственными активами, которые следует рассматривать как скомпрометированные. Ошибка имеет возможность протечки любой памяти, работающей в одном и том же адресном пространстве (то же самое), что и OpenSSL. Поэтому, если вы используете серверный процесс, в котором уязвимая версия OpenSSL статически или динамически связана, любая информация, которую этот процесс когда-либо обрабатывал , включая пароли, номера кредитных карт и другие персональные данные , следует рассматривать как потенциально скомпрометированный.
FreeBSD 10.0 или openssl из портов
команда безопасности FreeBSD опубликовала рекомендацию относительно CVE-2014-0160 (также известный как «Heartbleed») и: FreeBSD-SA-14: 06.openssl
-
Обновление FreeBSD
-
Обновление FreeBSD через двоичный патч
Системы, выполняющие версию RELEASE FreeBSD на i386 или amd64 платформы могут быть обновлены с помощью утилиты freebsd-update (8):
# freebsd-update fetch # freebsd-update install
-
Обновление FreeBSD из источников
-
Загрузите соответствующий патч из приведенного ниже местоположения и проверьте отделив подпись 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
-
Выполните следующие команды с правами root:
# cd /usr/src # patch < /path/to/patch
-
Перекомпилируйте операционную систему
используя buildworld и installworld , как описано в Руководство FreeBSD .
-
-
-
Обновите порт openssl с минимальной версией 1.0.1_10
-
Перезапустите все демоны с помощью библиотеки или перезагрузите систему
-
Действуйте так, как если бы ваша система была скомпрометирована, повторно запустите все ваши ключи ssl и /или сертификаты и потенциально просочившиеся данные (см. EEAA более общий ответ).
FreeBSD 9.x и FreeBSD 8.x
Эти системы не уязвимы для проблемы Heartbleed по умолчанию, так как полагаются на более раннюю версию библиотеки openssl версии 0.9.x, если вы не установили openssl из портов (см. наверх).
Если эти системы не уязвимы для проблемы Heartbleed , возможно, было бы целесообразно обновить систему раньше, чем позже из-за другой уязвимости local (см. FreeBSD-SA-14: 06.openssl и Раздел «FreeBSD 10.0» наверху):
Локальный злоумышленник может отслеживать процесс подписи и может восстановить ключ подписи от него. [CVE-2014-0076]
Примечание
Оригинальные Heartbleed консультационные списки FreeBSD 8.4 и 9.1 как потенциально уязвимые. Это неверно из-за отсутствия Heartbeat Extension (по умолчанию библиотека FreeBSD openssl имеет версию 0.9.x).
Я обнаружил, что практически невозможно определить версии SSL, используемые на нескольких устройствах, с которыми я работаю. Хотя это технически не смягчение, позволяющее идентификатору, в настоящее время уязвимые узлы находятся в верхней части моего списка.
Я собрал небольшую виртуальную машину, которая будет выполнять проверки против произвольных хостов и портов, используя тестовый модуль FiloSottile , По предварительным взглядам код выглядит здорово.
Выпуск завершенной виртуальной машины здесь . Он находится в формате VMX.
Слова предупреждения
Этот сценарий и виртуальная машина будут only показывать текущий статус ваших систем. Вполне возможно, что в какой-то момент в прошлом ваши системы находились в уязвимом состоянии и могли подвергнуться насилию.
Что-то, появившееся здесь, безусловно, является высоким приоритетом для исправления, но not избавляет вас от необходимости применять обновления и изменять все ваши ключи.
Amazon Linux (дистрибутив Linux, используемый в Amazon EC2)
https: //aws.amazon. ком /амазонка-линукс-AMI /охранно-бюллетени /ALAS-2014-320 /
Обзор проблем: Проверка недостающих границ была обнаружена в том, как OpenSSL обрабатывал пакеты расширения пульса TLS. Этот недостаток может быть использован для обнаружения до 64k памяти от подключенного клиента или сервера.
Затронутые версии: Любой AMA Amazon Linux AMI, на котором установлен openssl 1.0.1, который является любым Amazon Linux AMI 2013.03 или новее, и любой AMI Amazon Linux, обновленный до 2013.03 или позже. OpenSSL устанавливается по умолчанию на AMI Amazon Linux.
Пораженные пакеты: OpenSSL
Исправление ошибок: Запустите yum update openssl, чтобы обновить вашу систему. После установки нового пакета требуется либо вручную перезапустить все службы, которые используют openssl, либо перезагрузить ваш экземпляр. Хотя новый пакет по-прежнему называется openssl-1.0.1e, он содержит исправление для CVE-2014-0160.
Новые пакеты: i686:
openssl-1.0.1e-37.66.amzn1.i686
openssl-static-1.0.1e-37.66.amzn1.i686
openssl-perl-1.0.1e-37.66.amzn1.i686
openssl-devel-1.0.1e-37.66.amzn1.i686
openssl-debuginfo-1.0.1e-37.66.amzn1.i686
x86_64:
openssl-devel-1.0.1e-37.66.amzn1.x86_64
openssl-1.0.1e-37.66.amzn1.x86_64
openssl-debuginfo-1.0.1e-37.66.amzn1.x86_64
openssl-perl-1.0.1e-37.66.amzn1.x86_64
openssl-static-1.0.1e-37.66.amzn1.x86_64