xaker

В OpenSSL закрыли критическую уязвимость 16-летней давности

  • вторник, 10 июня 2014 г. в 03:10:57
http://www.xakep.ru/post/62606/

В криптографическом пакете OpenSSL обнаружена и исправлена очередная серьёзная уязвимость CVE-2014-0224. С её помощью злоумышленник может специальным образом подобрать параметры рукопожатия, чтобы клиент и сервер OpenSSL SSL/TLS использовали для связи между собой слабые ключи, не обеспечивающие должной безопасности.

Ослабив таким образом канал, злоумышленник имеет возможность провести атаку типа «человек посередине» (MiTM), расшифровать и модифицировать трафик между клиентом и сервером.

Проведение атаки возможно только в том случае, если обе стороны используют уязвимую версию библиотеки OpenSSL. Уязвимыми являются все клиентские версии OpenSSL, и из серверных пакетов — только OpenSSL 1.0.1 и 1.0.2-beta1. Тем не менее, пользователям более ранних серверных версий тоже рекомендуется обновиться на всякий случай.

Более подробно механизм эксплуатации объясняет японский специалист Макаси Кукичи (Masashi Kikuchi), который обнаружил этот баг.

Проблема заключается в некорректной обработке спецификаций ChangeCipherSpec (CCS) в OpenSSL во время рукопожатия. Причём баг существовал с момента самого первого выпуска криптографического пакета 16 лет назад.

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

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

В новых версиях 0.9.8za, 1.0.0m и 1.0.1h исправлена эта и ещё несколько уязвимостей в OpenSSL.