Раскрыты детали новой атаки на различные реализации TLS

Исследователи из компании NCC Group раскрыли сведения (PDF) о новой атаке по сторонним каналам, позволяющей через анализ остаточных данных в процессорном кэше восстановить содержимое, передаваемое через каналы связи, зашифрованные при помощи протоколов TLS и QUIC. С некоторыми оговорками атака затрагивает и протокол TLS 1.3.

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

Атака позволяет восстановить шифротекст, зашифрованный при помощи RSA-ключа, через анализ добавочного заполнения (padding oracle), используемого для выравнивания зашифрованных данных по границе блока.
Принцип атаки основан на методе, предложенном Даниэлем Блейхенбахером (Daniel Bleichenbacher) в 1998 году, суть которого в том, что атакующий на основании разных ответов от сервера может отделить корректные и некорректные блоки добавочного заполнения (padding oracle) в режиме PKCS #1 v1.5. Манипулируя информацией о корректности блоков добавочного заполнения атакующий может путём перебора определить содержимое шифротекста.

Так как утечки состояний на основе активности сервера уже давно блокированы в реализациях криптографических библиотек, в новой атаке для определения корректности блоков предлагается анализировать следы работы библиотек в процессорном кэше. Для атаки применимы различные техники извлечения остаточных данных из процессорного кэша, такие как Flush+Reload, Prime+Probe и методы на основе манипуляций с блоком предсказания переходов.
Атака является достаточно эффективной и позволяет восстановить все 2048 бит шифротекста RSA за время, не превышающее 30 секунд.

Проблема была выявлена в ноябре 2018 года и сообщена разработчикам библиотек, но детали раскрыты только сейчас, после публикации исправлений. Проблема затрагивает реализации TLS в библиотеках OpenSSL, Amazon s2n, MbedTLS, Apple CoreTLS, Mozilla NSS, WolfSSL и GnuTLS. Не подвержены атаки оказались библиотеки BearSSL и BoringSSL.
В TLS 1.3 не используется обмен ключами на основе RSA, поэтому для атаки на TLS 1.3 применяется обходной манёвр, позволяющий откатить шифрованное соединение на прошлую версию протокола через спуфинг TCP-пакетов.

Для атаки на клиентские браузеры может применяться метод, напоминающий атаки BEAST и POODLE, и требующий запуска подконтрольного атакующему JavaScript-кода в браузере жертвы (например, через подстановку кода в любой незашифрованный HTTP-ответ при наличии контроля за транзитным шлюзом). JavaScript-код используется для отправки на защищённый сайт, с которым работает жертва, фиктивных запросов с изначально известными контрольными метками, которые используются атакующим для воссоздания отдельных шифрованных блоков. Так как для успешной атаки необходимо проанализировать тысячи проверочных запросов, которые не удаётся отправить в рамках установленного в браузерах таймаута (обычно 30 секунд), предложен метод распараллеливания подобных запросов через их отправку к различным TLS-серверам, на которых используется сертификат с одним и тем же открытым ключом.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.