Ошибки безопасности процессоров AMD и Intel приносят исправления для Linux
Две новые уязвимости чипов, AMD Inception и Intel Downfall, вынудили Торвальдса выпустить исправления безопасности Linux.
На самом деле это не проблема Linux, но, как это часто бывает, разработчикам ядра Linux приходится наводить порядок после AMD и Intel. Это произошло снова с последними уязвимостями процессоров производителей чипов: AMD Inception и Intel Downfall. Чтобы исправить это, создатель Linux Линус Торвальдс выпустил новый набор патчей.
Как ни странно, оба являются спекулятивными атаками по побочным каналам, которые могут привести к утечке привилегированных данных в непривилегированные процессы. Торвальдс описал их как «еще одну проблему, когда пользовательское пространство отравляет микроархитектурную структуру, которая затем может быть использована для утечки привилегированной информации через побочный канал».
Это звучит знакомо? Это будет для экспертов по безопасности Linux. Да, это еще один пример уязвимостей безопасности, которые сделали Intel Meltdown и Spectre печально известными в кругах Linux. К счастью, в отличие от двух предыдущих случаев, разработчики на этот раз заранее знали о проблеме с кремнием, поэтому патчи вышли до появления новостей о последних дырах.
В ходе этого недавнего слияния Торвальдс и компания включили меры на стороне ядра, которые противодействуют уязвимости AMD к переполнению стека спекулятивного обратного адреса (RAS) в архитектурах Zen 3 и Zen 4. Эта уязвимость позволяет пользовательскому пространству загрязнять микроархитектурную структуру. , что впоследствии может быть использовано для перекачки привилегированной информации через побочный канал.
AMD скажет вам, что это не так уж и важно: гигант чипов считает, что эту уязвимость можно потенциально использовать только локально, например, с помощью загруженного вредоносного ПО. Тем не менее, AMD «рекомендует клиентам применять передовые методы обеспечения безопасности, включая использование новейшего программного обеспечения и средств обнаружения вредоносных программ».
Однако исследователи безопасности ETH Zurich, обнаружившие уязвимость, не столь оптимистичны. Они считают, что злоумышленник может использовать Inception в облачных вычислениях, где клиенты обычно используют одни и те же аппаратные ресурсы обработки.
Исследователи говорят, что Inception — это новый класс атак с временным выполнением, в котором используется обучение переходному выполнению (TTE). Вместо попыток утечки данных в переходном окне атаки TTE злоупотребляют временным окном, чтобы вставить новые прогнозы в предиктор ветвей. В сочетании с Phantom, который позволяет запускать временные окна из произвольных инструкций, Inception может стать неприятным способом очистки конфиденциальных данных.
Забавно, что опытный разработчик ядра Linux Питер Зийлстра, сотрудничающий с Intel, доработал патчи AMD. Несколько иронично видеть, как инженер Intel возглавляет доработку ядра кода защиты от AMD. Добро пожаловать в дух сообщества открытого исходного кода!
Разработчики ядра Linux также устранили уязвимость Intel Gather Data Sampling (GDS), известную как Downfall. Эта конкретная уязвимость затрагивает процессоры Intel Core от Skylake 6-го поколения до Tiger Lake 11-го поколения. Короче говоря, есть вероятность, что ваш компьютер, ваши серверы и ваши облачные процессоры уязвимы.
По словам Дэниела Могими, старшего научного сотрудника Google, который обнаружил Downfall, «Уязвимость вызвана функциями оптимизации памяти в процессорах Intel, которые непреднамеренно раскрывают внутренние аппаратные регистры программному обеспечению. Это позволяет ненадежному программному обеспечению получить доступ к данным, хранящимся в других программах, что не должно обычно быть доступным».
Итак, насколько это плохо? Могими показал, что эксплойт может быть использован для кражи ключей безопасности и паролей другого пользователя. Хуже всего то, что такие атаки «весьма практичны», — отмечает Могими. «Мне потребовалось две недели, чтобы разработать сквозную атаку, крадущую ключи шифрования из OpenSSL. Для этого требуется только, чтобы злоумышленник и жертва использовали одно и то же физическое ядро процессора, что часто происходит на современных компьютерах, реализуя вытесняющую многозадачность и одновременную работу. многопоточность».
Intel Software Guard Extensions (SGX), функция аппаратной безопасности Intel, доступная на процессорах Intel для защиты данных пользователей от вредоносного программного обеспечения, также беспомощна перед этой уязвимостью.
Некоторым пользователям исправление может показаться большей проблемой, чем проблема. По данным Intel, некоторые рабочие нагрузки могут вызывать накладные расходы до 50%. Это какое-то замедление! Однако Могими предупреждает: «Это плохая идея. Даже если ваша рабочая нагрузка не использует векторные инструкции, современные процессоры полагаются на векторные регистры для оптимизации общих операций, таких как копирование памяти и переключение содержимого регистров».
Однако для Linux замедление может быть не таким уж плохим. Майкл Ларабель, инженер-программист Linux и главный редактор хардкорного Linux-сайта Phoronix, провел тестирование патчей Downfall. Ларабель обнаружила, что вместо того, чтобы влиять на ввод-вывод или взаимодействие пользовательского пространства и ядра (как это сделали исправления для Meltdown, Spectre и их родственников), исправление Downfall ухудшает только программное обеспечение, привязанное к пользовательскому пространству. Он также обнаружил, что, хотя падение производительности, как правило, было не таким плохим, как прогнозировала Intel, некоторые значительные замедления все же наблюдались.
Исправления безопасности Linux были включены в Linux Git для будущего ядра Linux 6.5. Последние стабильные выпуски, включающие эти исправления, включают версии Linux 6.4.9, 6.1.44, 5.15.125, 5.10.189, 4.19.290 и 4.14.321. Эти выпуски включают текущую стабильную серию Linux 6.4 и поддерживаемые ядра серии долгосрочной поддержки (LTS).
Патчи облегчают отчеты о состоянии уязвимостей спекулятивного выполнения ЦП и вводят новые элементы управления для изменения их поведения в сочетании с новейшим микрокодом ЦП. Конечно, чтобы эти исправления работали, вам также необходимо установить обновления микрокода AMD и Intel.
Итак, что нужно делать? Будьте готовы установить новый микрокод, как только он станет доступен. Затем приступайте к исправлению ваших систем Linux по мере того, как исправления становятся доступными. Это не будет иметь большого значения для пользователей настольных компьютеров Linux, но будет актуально для тех из вас, кто использует Linux на своих серверах и в облаках.