Раскрыты детали новой атаки на различные реализации 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 и на основе манипуляций с блоком предсказания переходов.
Проблема была выявлена в ноябре 2018 года и сообщена разработчикам библиотек, но детали раскрыты только сейчас, после публикации исправлений. Проблема затрагивает реализации TLS в библиотеках OpenSSL, Amazon s2n, MbedTLS, Apple CoreTLS, Mozilla NSS, WolfSSL и GnuTLS. Не подвержена атаки оказались библиотеки BearSSL и BoringSSL. В TLS 1.3 не используется обмен ключами на основе RSA, поэтому для атаки на TLS 1.3 применяется обходной маневр, позволяющий откатить шифрованное соединение на прошлую версию протокола через спуфинг TCP-пакетов. Атака является достаточно эффективной и позволяет восстановить все 2048 бит шифротекста RSA за время, не превышающее 30 секунд.
Для атаки на клиентские браузеры может применяться метод, напоминающий атаки BEAST и POODLE, и требующий запуска подконтрольного атакующему JavaScript-кода в браузере жертвы (например, через подстановку кода в любой незашифрованный HTTP-ответ при наличии контроля за транзитным шлюзом). JavaScript-код используется для отправки на защищенный сайт, с которым работает жертва, фиктивных запросов с изначально известными контрольными метками, которые используются атакующим для воссоздания отдельных блоков для шифра TLS/SSL. Так как для успешной атаки необходимо проанализировать тысячи проверочных запросов, которые не удается отправить в рамках установленного в браузерах таймаута (обычно 30 секунд), предложен метод распараллеливания подобных запросов через их отправку к различным TLS-серверам, на которых используется сертификат с одним и тем же открытым ключом.