Как мне оправиться от ошибки Heartbleed в OpenSSL?

CVE-2014-0160 aka Heartbleed – уязвимость в OpenSSL. Это выглядит страшно.

Как определить, затронута ли я?

Если я затрону, что мне нужно делать? По-видимому, модернизации недостаточно.

  • Преобразование открытого ключа OpenSSH в PKCS # 1 в формате HEX с пробелами и столбцами
  • Как s_client превращает ip6-localhost в 127.0.0.1?
  • Как добавить несколько адресов электронной почты в сертификат SSL через командную строку?
  • Почему GCM HTTPS не работает с nginx?
  • Как связать библиотеку OpenSSL в macOS с помощью gcc?
  • Как найти окончательный сертификат CA в действительном сертификате
  • «Git clone» с ошибкой 443
  • Как исправить «Dillo HTTPS: Отсутствует сертификат эмитента!»?
  • 3 Solutions collect form web for “Как мне оправиться от ошибки Heartbleed в OpenSSL?”

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

    Я уязвим?

    Багги версия OpenSSL

    Багги программное обеспечение является OpenSSL библиотеки 1.0.1 до 1.0.1f и OpenSSL 1.0.2 до бета1. Старые версии (0.9.x, 1.0.0) и версии, в которых исправлена ​​ошибка (1.0.1g, 1.0.2 beta 2 и далее), не затрагиваются. Это ошибка реализации, а не ошибка в протоколе, поэтому затрагиваются только программы, использующие библиотеку OpenSSL.

    Вы можете использовать программу командной строки openssl version -a для отображения номера версии OpenSSL. Обратите внимание, что некоторые дистрибутивы переносят исправление ошибок в более ранние версии; если в журнале изменений вашего пакета упоминается исправление ошибки Heartbleed, все в порядке, даже если вы видите версию типа 1.0.1f. Если openssl version -a упоминает дату сборки (а не дату в первой строке) 2014-04-07 около вечера UTC или позже, вы должны быть в порядке. Обратите внимание, что пакет OpenSSL может иметь 1.0.0 в своем имени, даже если версия 1.0.1 ( 1.0.0 относится к двоичной совместимости).

    Затронутые приложения

    Эксплуатация выполняется через приложение, которое использует библиотеку OpenSSL для реализации SSL-соединений . Многие приложения используют OpenSSL для других криптографических служб, и это прекрасно: ошибка заключается в реализации определенной функции протокола SSL, «heartbeat».

    Вы можете проверить, какие программы связаны с библиотекой вашей системы. В системах, использующих dpkg и apt (Debian, Ubuntu, Mint, …), следующая команда перечисляет установленные пакеты, отличные от библиотек, которые используют libssl1.0.0 (затронутый пакет):

     apt-cache rdepends libssl1.0.0 | tail -n +3 | xargs dpkg -l 2>/dev/null | grep '^ii' | grep -v '^ii lib' 

    Если вы запустите какое-либо серверное программное обеспечение, которое находится в этом списке, и прислушивается к соединениям SSL , вы, вероятно, будете затронуты. Это касается веб-серверов, серверов электронной почты, VPN-серверов и т. Д. Вы узнаете, что вы включили SSL, потому что вам нужно было сгенерировать сертификат, либо отправив запрос на подпись сертификата в центр сертификации, либо сделав свой собственный самозаверяющий сертификат. (Возможно, какая-то процедура установки создала самозаверяющий сертификат без вашего уведомления, но обычно это делается только для внутренних серверов, а не для серверов, работающих в Интернете.) Если вы запустили уязвимый сервер, открытый в Интернете, считайте его скомпрометированным если в вашем журнале нет соединения с момента объявления в 2014-04-07. (При этом предполагается, что уязвимость не была использована до ее объявления.) Если ваш сервер был открыт только внутри страны, нужно ли менять ключи, зависит от того, какие другие меры безопасности существуют.

    На клиентское программное обеспечение влияет только, если вы использовали его для подключения к вредоносному серверу. Поэтому, если вы подключились к своему провайдеру электронной почты с помощью IMAPS, вам не нужно беспокоиться (если только у провайдера не было нападения, но если это так, они должны сообщить вам об этом), но если вы просматриваете случайные сайты с уязвимым браузером, вам может понадобиться беспокоиться. До сих пор кажется, что уязвимость не была использована до ее обнаружения, поэтому вам нужно только беспокоиться, если вы подключились к вредоносным серверам с 2014-04-08.

    Следующие программы не затронуты, поскольку они не используют OpenSSL для реализации SSL:

    • SSH (протокол не SSL)
    • Chrome / Chromium ( использует NSS )
    • Firefox (использует NSS) (по крайней мере, с Firefox 27 на Ubuntu 12.04, но не со всеми сборками?

    Каково влияние?

    Ошибка позволяет любому клиенту, который может подключиться к вашему SSL-серверу, чтобы получить примерно 64 Кбайт памяти с сервера одновременно. Клиент не должен быть аутентифицирован каким-либо образом. Повторяя атаку, клиент может сбрасывать разные части памяти при последовательных попытках. Это потенциально позволяет злоумышленнику получить любые данные, которые были в памяти процесса сервера, включая ключи, пароли, файлы cookie и т. Д.

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

    Ошибка также позволяет любому серверу, к которому подключен ваш клиент SSL, извлекать около 64 КБ памяти из клиента за раз. Это вызывает беспокойство, если вы использовали уязвимый клиент для управления конфиденциальными данными, а затем подключились к ненадежному серверу с тем же клиентом. Таким образом, сценарии атаки на этой стороне значительно менее вероятны, чем на стороне сервера.

    Обратите внимание, что для типичных дистрибутивов нет влияния безопасности на дистрибутив пакетов, поскольку целостность пакетов зависит от подписей GPG, а не от транспорта SSL.

    Как устранить эту уязвимость?

    Исправление открытых серверов

    1. Отключите все затронутые серверы. Пока они работают, они потенциально могут просачивать критические данные.

    2. Обновите пакет библиотеки OpenSSL . Все дистрибутивы должны быть исправлены к настоящему времени (либо с 1.0.1g, либо с патчем, который исправляет ошибку, не изменяя номер версии). Если вы скомпилировали исходный код, обновите его до 1.0.1g или выше. Убедитесь, что все затронутые серверы перезагружены.
      В Linux вы можете проверить, продолжают ли выполняться потенциально затронутые процессы с помощью grep 'libssl.*(deleted)' /proc/*/maps

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

      • Если вы используете сертификаты, подписанные сертификационным центром, отправьте свои открытые ключи в ваш центр сертификации. Когда вы получите новый сертификат, установите его на свой сервер.
      • Если вы используете самозаверяющие сертификаты, установите его на свой сервер.
      • В любом случае, удалите старые ключи и сертификаты (но не удаляйте их, просто убедитесь, что они больше не используются).
    4. Теперь, когда у вас есть новые бескомпромиссные ключи, вы можете вернуть свой сервер в онлайн-режиме .

    5. Отменить старые сертификаты.

    6. Оценка ущерба : любые данные, хранящиеся в памяти процесса, поддерживающего SSL-соединения, могут быть утечки. Это может включать пароли пользователей и другие конфиденциальные данные. Вы должны оценить, какими были эти данные.

      • Если вы используете службу, которая разрешает аутентификацию по паролю, то пароли пользователей, которые подключались с незадолго до объявления уязвимости, должны считаться скомпрометированными. Проверьте свои журналы и измените пароли любого затронутого пользователя.
      • Также недействительны все файлы cookie сеанса, поскольку они могут быть скомпрометированы.
      • Клиенты не подвергаются риску.
      • Любые данные, которые были обменены, так как немного раньше уязвимости, возможно, остались в памяти сервера, и, возможно, это было утечка злоумышленнику.
      • Если кто-то записал старое SSL-соединение и извлек ключи вашего сервера, он теперь может расшифровать свою расшифровку. (Если PFS не было обеспечено – если вы не знаете, это не так.)

    Восстановление в других случаях

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

    У клиентов есть только редкие сценарии, в которых ошибка может быть использована: для эксплойта потребуется, чтобы вы использовали один и тот же процесс клиента для

    1. манипулировать конфиденциальными данными (например, паролями, клиентскими сертификатами, …);
    2. а затем, в том же процессе, подключен к вредоносному серверу через SSL.

    Так, например, клиент электронной почты, который используется только для подключения к вашему (не полностью ненадежному) почтовому провайдеру, не вызывает беспокойства (а не вредоносного сервера). Запуск wget для загрузки файла не вызывает беспокойства (никаких конфиденциальных данных для утечки).

    Если вы сделали это между UTC 2014-04-07 и обновлением библиотеки OpenSSL, рассмотрите любые данные, которые были в памяти клиента, чтобы быть скомпрометированы.

    Рекомендации

    • The Heartbleed Bug (одной из двух команд, которые самостоятельно обнаружили ошибку)
    • Как работает OpenSSL TLS heartbeat (Heartbleed)?
    • Имеет ли Heartbleed новые сертификаты для каждого сервера SSL?
    • Heartbleed: Что это такое и какие варианты смягчить его?

    Чтобы проверить, уязвимы ли вы, перейдите по ссылке: http://filippo.io/Heartbleed/

    Если вы обнаружите, что у вас уязвимое обновление openssl и перезапустите веб-сервер.

    Если вы хотите увидеть, насколько плох эксплойт; см. здесь: https://github.com/nopejpg/Heartbleed

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

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

    Interesting Posts

    Почему есть только два пользовательских сигнала?

    Как команда netstat подходит для разных уровней модели TCP / IP на диаграмме производительности?

    Добавить столбец в интерфейс диспетчера архива

    Захват последнего возвращаемого значения в Unix

    Какова наилучшая процедура для настройки системы с тройной загрузкой?

    xfce4-терминал раздражает нижнюю и правую границу

    Почему мой блок Systemd arkos-redis загружен, но неактивен (мертв)?

    collectd не может контролировать ntpd 4.2.8 (Ubuntu 16.04)

    Есть ли способ узнать, сколько ssh-подчиненных подключений открыто при подключении master ssh?

    Отображение потоков уровня на уровне ядра, потоки пользовательского уровня для процессов / потоков

    Расшифровка LUKS при загрузке: с помощью монтирования nfs для хранения ключа

    Проверяет ли верхние системные файлы?

    Ошибка при установке gnome-shell-extension-common из AUR на Arch

    Каков пароль root по умолчанию для Chromebook 1 для Toshiba?

    Помогите с правилами udev моя клавиатура думает, что это джойстик

    Linux и Unix - лучшая ОС в мире.