Атака Блейхенбахера

В далеком 1998 году специалист Bell Laboratories Даниэль Блейхенбахер (Daniel Bleichenbacher) обнаружил проблему (PDF), связанную с тем, как ведет себя TLS-сервер, в том случае, если его оператор решил зашифровать обмен ключами между клиентом и сервером при помощи алгоритма RSA.

Суть атаки, разработанной тогда Блейхенбахером, заключается в том, что перед установкой зашифрованного соединения, клиент случайным образом выбирает ключ сессии, который затем зашифровывается публичным ключом и отправляется серверу. Сервер расшифровывает это «послание», сохраняет копию ключа сессии и впоследствии использует для идентификации клиента. Таким образом клиент проходит валидацию, и устанавливается защищенное HTTPS-соединение.

Так как алгоритм RSA недостаточно защищен сам по себе, дополнительно используется так называемый padding, то есть добавление ничего не значащих данных к зашифровываемой информации, что в итоге должно повысить стойкость шифрования. Блейхенбахер обнаружил проблему в случае если ключи сессий, шифрующиеся с помощью RSA, используют padding PKCS #1 1.5.

Оказалось, что атакующий может просто направлять TLS-серверу случайные ключи, спрашивая, верны ли они. Подобрать настоящий ключ можно основываясь лишь на ответах сервера: простом «да/нет», которое тот возвращает в ответ на запрос «это RSA-ключ сессии?».

Однако после обнаружения данного бага от использования алгоритма RSA не отказались. Вместо этого авторы стандарта TLS реализовали ряд контрмер, которые мешали осуществить подобный брутфорс. К сожалению, этого оказалось явно недостаточно, и ИБ-специалисты уже неоднократно находили другие способы реализации атаки Блейхенбахера. Соответствующие исследования были представлены в 200320122014 и 2015 годах. А наиболее свежим вариантом этой проблемы является атака, получившая имя DROWN (Decrypting RSA with Obsolete and Weakened eNcryption), обнаруженная в 2016 году.

ROBOT

Теперь сводная группа из трех ИБ-специалистов обнаружила новую вариацию атаки Блейхенбахера, которой дали название ROBOT (Return Of Bleichenbacher’s Oracle Threat). Проблему нашли Ханно Бек (Hanno Böck), Юрай Соморовски (Juraj Somorovsky) и Крейг Янг (Craig Young).

На этот раз проблема связана с тем, что стандарт TLS – это комплексная и сложная штука, и многие поставщики серверного оборудования не могут правильно реализовать раздел 7.4.7.1 стандарта TLS (то есть RFC 5246). Как нетрудно догадаться, именно этот раздел описывает контрмеры против атаки Блейхенбахера.

Как оказалось, оборудование Cisco, Citrix, F5, Radware и других вендоров уязвимо перед проблемой ROBOT в определенных конфигурациях. А именно, если владелец сервера решает шифровать ключи TLS-сессий при помощи RSA и padding PKCS #1 1.5. Ниже перечислены далеко не все уязвимые вендоры, но только те, кто уже выпустил исправления.

F5 Уязвимость в BIG-IP SSL CVE-2017-6168
Citrix Уязвимость TLS Padding Oracle в Citrix NetScaler Application Delivery Controller (ADC) и в составе NetScaler Gateway CVE-2017-17382
Radware Бюллетень безопасности, посвященный уязвимости перед адаптивными атаками на основе подобранного шифротекста CVE-2017-17427
Cisco ACE Продукция Cisco, уязвимая перед атакой Блейхенбахера; End-of-Sale и End-of-Life CVE-2017-17428
Bouncy Castle Исправление в 1.59 beta 9Патч/Коммит CVE-2017-13098
Erlang OTP 18.3.4.7OTP 19.3.6.4OTP 20.1.7 CVE-2017-1000385
WolfSSL Github PR /Патч CVE-2017-13099
MatrixSSL Изменения в 3.8.3 CVE-2016-6883
Java / JSSE Критическое обновление от октября 2012 года CVE-2012-5081

 

Специалисты, обнаружившие проблему, а также эксперты US-CERT настоятельно рекомендуют временно отказаться от RSA-шифрования ключей, что не должно стать проблемой, ведь большинство устройств поддерживают протокол Диффи-Хеллмана на эллиптических кривых (Elliptic Curve Diffie Hellman, ECDH), который считается куда более надежным.

Невзирая на тот факт, что атака ROBOT базируется на проблемах 19-летней давности, перед ней и сегодня уязвимы 27 из 100 наиболее популярных в интернете сайтов по версии Alexa, в том числе Facebook и PayPal. Так, в научном докладе исследователей (PDF) подробно разобран пример дешифровки трафика Facebook.

Разумеется, за пределами топ-100 сайтов насчитывается множество уязвимых ресурсов. В связи с этим исследователи опубликовали на GitHub специальный Python-скрипт, который должен помочь администраторам обнаружить уязвимые хосты. Также на официальном сайте ROBOT есть специальный раздел для проверки на уязвимость.

2 комментария

  1. john_

    14.12.2017 at 08:19

    Что же мы наделали…

Оставить мнение