Pull to refresh

OpenSSL: новая уязвимость: возможность выполнить MITM атаку (CVE-2014-0224)

Reading time3 min
Views36K
Original author: Huzaifa Sidhpurwala

Атака OpenSSL MITM CCS injection


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

Среди недавних багов исправленных в OpenSSL версии 1.0.1h главная это — возможность MITM-атаки (CVE-2014-0224) против протоколов OpenSSL и TLS.

Что такое CVE-2014-0224 и должен ли я волноваться из-за него?

Короткий ответ: неоднозначно, Но как и в случае с любой другой уязвимостью в безопасности, лучше всегда исправить, чем откладывать и волноваться.
Примечание переводчика: мне кажется, что надо просто бежать и обновляться. Данная уязвимость сводить на «нет» весь смысл SSL.

Для эксплуатации этой уязвимость следующие условия должны выполняться:

  • И клиент, и сервер должны быть уязвимы. Со стороны клиента все версии OpenSSL уязвимы. На стороне сервера на данный момент считается уязвимой только версия 1.0.1. Если либо на клиенте, либо на сервере уязвимость исправлена, использование уязвимости становится невыполнимым.
  • Атакующий должен быть «человеком посередине». Атакующий должен иметь возможность перехватывать и модифицировать Ваши пакеты. Десять лет назад такой вектор атаки казался почти невозможным для любого, кроме интернет-провайдеров, так как у них есть доступ ко всем сетевым устройствам, через которые идет трафик интернет.
    (Примечание переводчика: и десять лет назад, и у неразумных провайдеров сейчас можно слушать соседский трафик активными снифферами с помощью, например, arp-poisoning)

Однако с появлением различных публичных беспроводных точек доступа, свободно доступных в кафе, ресторанах и т.д., MITM становится более реальным. К тому же существует множество программного обеспечения, которое позволяет создавать поддельные точки доступа. Как только клиент подключается к такой точке доступа, атакующий может стать «человеком посередине» для трафика от клиента. Успешная атака «человек посередине» может сделать доступными злоумышленнику Ваши учетные данные, конфиденциальную информацию или предоставить злоумышленнику возможность подделать личность жертвы.

Как работает эта атака?

SSL/TLS сессия инициализируется с помощью согласования посредством сообщений ClientHello и ServerHello с соответствующей стороны. Эта часть протокола отвечает за установку атрибутов сессии, таких как версия используемого протокола, протокол шифрования, ключи шифрования, код аутентичности сообщения (Message Authentication Code (MAC)), векторы инициализации и используемые расширения.

По разным причинам, как клиент, так и сервер могут принять решение о модификации стратегий выбора криптографического алгоритма во время этапа согласования (не путайте с протоколом согласования). Это достигается с помощью запроса ChangeCipherSpec (CCS). CCS состоит из одного пакета, посылаемого с клиентской и серверной стороны для уведомления о том, что следующие данные будут защищены новыми криптоалгоритмом и ключами.

В соответствии с стандартами (RFC 2246, RFC 5246) «CCS отправляется во время хэндшейка после согласования параметров безопасности, но до проверки, что сообщение „Finished“ отправлено». Однако, в случае OpenSSL это не так, и он принимает CCS даже до момента согласования параметров безопасности. Ожидается, что при принятии ChangeCipherSpec в неправильном порядке, будет рассинхронизация состояний между обеими сторонами. Обычно это приводит к тому, что обе стороны должны разорвать соединения, если, однако, у вас нет других уязвимостей.

Для того, чтоб эксплуатировать эту уязвимость, «человеку посередине» надо:

Дождаться установки нового соединения, с последующими сообщениями ClientHello / ServerHello. Послать CCS пакет в оба направления, который приведет к тому, что OpenSSL будет использовать мастер-ключ нулевой длины. Сессионные ключи будут созданы, на основе этого «нулевого» ключа и будущие сессионные ключи будут так же уязвимы.
Переинициализировать параметры согласования.
Атакующий получается возможность расшифровывать и даже модифицировать передаваемые пакеты.

В OpenSSL исправлена эта уязвимость следующим образом: CCS пакеты не могут быть получены до установки мастер-ключа, а мастер-ключи нулевой длины не разрешены.

Как защититься?

Обновите пакет OpenSSL до последней версии, предоставленной Вашим дистрибутивом.

Примечание переводчика:

О данной уязвимости в OpenSSL сообщил KIKUCHI Masashi (Lepidum Co. Ltd.) первого мая 2014 года. На основании его патча фикс для OpenSSL разработал Stephen Henson из команды OpenSSL.

Исправленные версии выпущены для
OpenSSL 0.9.8 — 0.9.8za
OpenSSL 1.0.0 — 1.0.0m
OpenSSL 1.0.1 — 1.0.1h

Баг в генту (исправленная версия (openssl-1.0.1h) уже в портажах)
В убунте (trusty) исправлено (openssl (1.0.1f-1ubuntu2.2) trusty-security; urgency=medium)
В debian wheezy фикс есть (1.0.1e-2+deb7u10). Остальные debian (squeeze, jessie, sid) на текущий момент уязвимы.

Спасибо amarao и valdikss за помощь в переводе.
Tags:
Hubs:
+60
Comments22

Articles

Change theme settings