В процессорах Intel и AMD обнаружен новый вариант уязвимости Spectre — ее закрытие может сильно ударить по производительности
Исследователи из Университета Вирджинии и Калифорнийского университета в Сан-Диего в совместном исследовании сообщили о новом варианте известной уязвимости Spectre, которая позволяет обходить текущие защитные механизмы и затрагивает обе основные x86-совместимые платформы — Intel и AMD.
Новая уязвимость, как и большинство других вариантов Spectre, связана с механизмами спекулятивного исполнения команд (процедура, когда процессор заранее просчитывает разные возможные сценарии команд, которые придется сделать программе, чтобы по возможности ускорить выполнение тех или иных задач), но затрагивает промежуточный кэш микроопераций (micro-op cache).
Современные x86-совместимые процессоры на фронтенд этапе разбивают сложные инструкции на более мелкие RISC-подобные блоки, именуемые микрооперациями, что значительно упрощает проектирование бэкенд составляющей. Микрооперации хранятся в кэше микроопераций. Этот кэш является неотъемлемой частью процессоров Intel и AMD с 2011 года.
В исследовании фигурируют три сценария атак, позволяющих создавать скрытые каналы передачи данных и использовать уязвимый код для организации утечки конфиденциальных данных, как в рамках одного процесса, так и между ядром и процессами в пространстве пользователя.
При демонстрации атаки Spectre с использованием кэша микроопераций исследователям удалось добиться производительности в 965,59 кбит/с при уровне ошибок 0,22% и 785,56 кбит/с при использовании коррекции ошибок в рамках одного адресного пространства и уровня привилегий. При атаке, охватывающей разные уровни привилегий (между ядром и пространством пользователя), производительность составила 85,2 кбит/с с коррекцией ошибок и 110,96 кбит/с при уровне ошибок в 4%. При атаке на процессоры AMD Zen, создающей утечку между разными логическими ядрами CPU, производительность составила 250 кбит/с при уровне ошибок 5,59% и 168,58 кбит/с при коррекции ошибок. Таким образом, по сравнению с классическим вариантом Spectre v1 новая атака оказалась в 2,6 раза эффективнее.
Для защиты от атак на кэш микроопераций потребуется внести соответствущие изменения в микрокод, и, по оценкам исследователей, производительность от этого может просесть еще сильнее, чем при добавлении защитных механизмов от атак Spectre. В качестве оптимального компромиссного решения предлагается блокировка не путем отключения кэширования, а с помощью отслеживания аномалий и определения специфический состояний кэша при таких атаках.
Важно оговорить, что в любых атаках класса Spectre для организации утечки из ядра или других процессов требуется выполнение на стороне процессов-жертв определенной последовательности команд, запускающей спекулятивное выполнение инструкций. Иными словами, проведение такой атаки на практике требует огромных усилий.