Разработчики OpenSSL исправили опасную уязвимость с подделкой сертификатов, выпустив новые версии криптографического пакета. Возможность подделки сертификатов добавлена в код OpenSSL 27 января 2015 года. Это сделал один из добровольцев, участвующих в разработке, по имени Мэтт Кэсвелл (Matt Caswell). Возможно, неумышленно. В финальных версиях пакета она появилась только в июне.
Баг затронул OpenSSL 1.0.2c, 1.0.2b, 1.0.1n и 1.0.1o. Пользователям этих версий следует обновиться на 1.0.2d и 1.0.1p, соответственно.
Ошибка в программе состоит в некорректной процедуре поиска альтернативной цепочки сертификатов, если первая попытка построения такой цепочки оказалась неудачной. Ошибка в реализации логики этой процедуры потенциально позволяет злоумышленнику обойти некоторые проверки ненадежных сертификатов, в том числе проверку удостоверяющего центра. Таким образом, нападающий может использовать свой сертификат и выдать себя за настоящий удостоверяющий центр. Тот, в свою очередь, «выдает» поддельные сертификаты для серверов и приложений, работающих по «защищенным» каналам SSL/TLS/DTLS, то есть для кого угодно.
Об уязвимости сообщили Адам Лэнгли (Adam Langley) из Google и участники проекта BoringSSL, они же представили патч.
Хотя уязвимость выглядит очень опасной, но в реальности эффект для обычных пользователей ограничен. Например, браузеры Google Chrome, Mozilla Firefox, Microsoft Internet Explorer по умолчанию используют альтернативные библиотеки для проверки сертификатов: это Boring SSL, libPKIX и SChannel, соответственно. Старые версии Android используют OpenSSL, но как раз в тех версиях OpenSSL такой уязвимости еще не было.
В данном случае опасный баг обнаружили довольно быстро. К сожалению, иногда подобные «закладки» в криптографических программах и операционных системах остаются незамеченными в течение многих лет.