Хакер #305. Многошаговые SQL-инъекции
Ученые из Амстердамского свободного университета и Швейцарской высшей технической школы Цюриха обнаружили новую уязвимость, влияющую на процессоры компании Intel. Баг получил название CrossTalk, и он позволяет вредоносному коду, выполняющемуся в одном ядре процессора, «сливать» данные другого софта, работающего на другом ядре (в том числе в анклавах Intel SGX).
Исследователи объясняют, что CrossTalk представляет собой еще одну вариацию MDS-бага. Напомню, что проблемы Microarchitectural Data Sampling (MDS) были обнаружены в процессорах Intel весной 2019 года.
Тогда эксперты выявили сразу четыре новые уязвимости и разделили их на три группы: RIDL, Fallout и ZombieLoad (CVE-2018-12130, CVE-2018-12126, CVE-2018-12127 и CVE-2018-11091). Равно как и нашумевшие уязвимости Spectre и Meltdown, новые баги оказались связаны с упреждающим (или спекулятивным — speculative) механизмом исполнения команд. Они позволяли атакующему считывать данные из тех мест, к которым у него не должно быть доступа (ядро ОС, процессы, анклавы Software Guard eXtensions), а затем похищать пароли, криптографические ключи и прочие данные.
CrossTalk атакует данные, пока те обрабатываются Line Fill Buffer (LBF), одной из систем кэш-памяти ЦП. По словам экспертов, проблема заключается в том, что кэш LBF, по сути, работает с ранее недокументированным «промежуточным буфером» (staging buffer), который используется всеми ядрами процессора.
«С помощью CrossTalk мы обнаружили, что различные инструкции выполняют offcore-запросы на чтение данных из промежуточного буфера, совместно используемого всеми ядрами ЦП. Мы заметили, что этот промежуточный буфер содержит конфиденциальную информацию, включая выходные данные аппаратного генератора случайных чисел Digital Random Number Generator (DRNG), и что такие данные могут передаваться между ядрам с помощью атак RIDL (они же MDS)», — пишут эксперты.
Видеоролик ниже демонстрирует, как CrossTalk используется для атаки на упомянутый промежуточный буфер через кэш LBF, а затем это приводит к утечке данных из других ядер (в видео рассматривается утечка ключа Intel SGX).
Стоит отметить, что исследователи не только создали для проблемы CrossTalk собственный сайт, но также подготовили подробный технический доклад об уязвимости и опубликовали PoC-эксплоит на GitHub.
Исследовательская группа пишет, что работала со специалистами Intel над исправлением проблемы CrossTalk более 20 месяцев (с сентября 2018 года). Специалисты объясняют, что из-за сложности проблемы на исправление уязвимости ушло куда больше стандартных 90 дней, кроме того, изначально возможность «межъядерной» утечки вообще не рассматривалась.
Инженеры Intel, в свою очередь, опубликовали собственный отчет, где сообщают, что уже внесли значительные изменения в свои ЦП, и для большинства свежих продуктов компании CrossTalk не представляет угрозы.
Что касается более старых процессоров, для них на этой неделе были выпущены обновленные микрокоды для исправления CrossTalk: обновление Special Register Buffer Data Sampling (SRBDS, CVE-2020-0543, Intel-SA-00320).
Полный список из пятидесяти с лишним уязвимых процессоров (мобильных, десктопных и серверных) можно найти здесь. В частности, атака опасна для процессоров Core от 3 до 10 поколения, Core X-Series, Pentium, Celeron и Xeon E3.
При этом представители Intel подчеркивают, что на сегодняшний день вряд ли можно говорить о каких-то реальных атаках с использованием CrossTalk вне контролируемой тестовой среды.