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

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

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

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

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

решение1

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

Что именно представляет собой уязвимость CVE-2014-0160, также известная как «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. См.Heartbleed / сложность протокола.

Был ли ошибочный код вставлен злонамеренно?

Я не буду рассуждать о том, было ли это действительно ошибкой или, возможно, это был кусок кода, вставленный от имени злоумышленника. Однако человек, который разработал код для OpenSSL, утверждает, что это было непреднамеренно. СмотритеЧеловек, внедривший серьезную уязвимость безопасности Heartbleed, отрицает, что сделал это намеренно.

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

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

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

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

Имеются данные, что Heartbleed активно эксплуатировался в дикой природе еще в ноябре 2013 года. См. EFFДикие сердцем: использовали ли спецслужбы Heartbleed в ноябре 2013 года?А Bloomberg сообщает, что АНБ превратило эксплойт в оружие вскоре после того, как уязвимость была представлена. СмотритеГоворят, что АНБ годами использовало уязвимость Heartbleed в разведывательных целях. Однако разведывательное сообщество США отрицает заявления Bloomberg. См.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 и других пакетов, когда пакеты подвергаются обратному патчу. К сожалению, полезных ответов нет (кроме проверки веб-сайта дистрибутива). СмотретьОпределите эффективную версию безопасности при столкновении с обратным исправлением?.

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

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

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

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

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

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

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

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

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

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

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

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


Достаточно подробную хронологию событий раскрытия информации можно найти на сайтеХронология раскрытия информации Heartbleed: кто что знал и когда.


Если вы программист и вас интересуют различные приемы программирования, такие как обнаружение атаки Heartbleed с помощью msg_cbобратного вызова OpenSSL, то см. OpenSSLКонсультация по безопасности 2014047.

решение2

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

XKCD 1354

решение3

Ubuntu 12.04, 12.10 и 13.10

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

sudo apt-get update
sudo apt-get upgrade

Убунту 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), а не просто использовать исправленные версии в архивах.

Убунту 10.04

Это версия LTS, серверная версия все еще поддерживается и получает обновления безопасности. Но уязвимость heartbleed не затронула пакет 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/После обновления система получает патч Heartbleed от 13.10.

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

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

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

Перезагрузить

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

решение4

Debian Хриплый

Debian выпустилДСА-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

Связанный контент