Ученые из Амстердамского свободного университета и Швейцарской высшей технической школы Цюриха обнаружили новую уязвимость, влияющую на процессоры компании 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

Видеоролик ниже демонстрирует, как 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.

На этих процессорах исследователи тестировали CrossTalk. Они точно уязвимы

При этом представители Intel подчеркивают, что на сегодняшний день вряд ли можно говорить о каких-то реальных атаках с использованием CrossTalk вне контролируемой тестовой среды.

1 комментарий

  1. Аватар

    0d8bc7

    11.06.2020 в 13:39

    Судя по всему, этот цирк ещё не скоро закончится. Тогда почему бы не популяризировать материнсие платы с 2+ (N) процессорами? Можно заставить выполняться довереные и недоверенные программы на разных множествах ЦП (если ОС «умная», то можно ещё и распределять ЦП динамически), а ресурсоёмким не критичным к безопасности программам разрешить выполняться на всех ЦП.

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