5 лет назад 27 декабря 2018 в 7:30 69450

В 2018 году были раскрыты самые разрушительные уязвимости за всю историю информационных технологий — Spectre и Meltdown, которые коснулись всех процессоров, выпущенных с 1995 года. Производители операционных систем, драйверов и железа весь год старались устранить эти уязвимости, но на конец года абсолютной защиты всё ещё не существует.

Уязвимости CVE-2017-5753, CVE-2017-5715 и CVE-2017-5754 были обнаружены инженерами-исследователями из группы Google Project Zero и ряда других организаций в тысячах моделей вычислительных и графических процессоров AMD, ARM, Intel, IBM, NVIDIA и других компаний ещё в 2017 году. Ещё летом 2017 года исследователи предупредили все эти и другие компании об уязвимостях, чтобы инженеры могли подготовить ответные решения, но публика узнала уязвимостях раньше запланированного — 3 января 2018 года. Атакам подвержены все процессоры, которые оснащены блоком предсказания ветвлений в вычислениях. Спекулятивные вычисления, частным случаем которых является предсказание ветвлений, необходимы чтобы подготовить результаты однотипных операций, ещё до того, как запрос на эти операции поступит от пользователя, что ускоряет работу процессоров. Блоком спекулятивных вычислений оснащались миллиарды произведённых с 1995 года процессоров, что подвело под риск всю существующую в мире информационную инфраструктуру.

Уязвимость CVE-2017-5753 получила наименование Spectre Variant 1, она позволяет рядом однотипных добропорядочных операций «обмануть» предсказатель ветвлений, который выполнит очередную операцию и сохранит результаты её выполнения в кэш до того, как выяснит, что операция недобропорядочная и не должна была быть выполнена. Уязвимость CVE-2017-5715 была названа Spectre Variant 2, она позволяет атакующему «натренировать» предсказатель ветвлений таким образом, чтобы он в итоге указал на так называемый «гаджет», то есть на функцию возврата в смещённую часть адресного пространства, откуда злоумышленник получит данные, к которым он не должен иметь доступа. Уязвимость CVE-2017-5754 под названием Meltdown Variant 3 позволяет процессам вырваться из пользовательского режима работы и переключиться в режим работы с ядром операционной системы благодаря несовершенству процесса внеочередного исполнения инструкций: внеочередная инструкция на доступ к ядру выполняется до того, как процессор определяет, что у пользователя нет прав на эту операцию.

Устранение Spectre Variant 1 потребовало перекомпиляции программ и ядер ОС другими компиляторами, а также обновления браузеров, поскольку в самом ПО требовались дополнительные инструкции, блокирующие вызов спекулятивных вычислений. Apple, Google, Linux Foundation и «Майкрософт» выпустили обновления своего ПО. Также Google и Mozilla выпустили Chrome 64 и Firefox 57.0.0.4 соответственно, которые блокировали возможность эксплуатации уязвимости из JavaScript. Ликвидация уязвимости Spectre Variant 2 потребовала от производителей материнских плат, BIOS и процессоров обновления микрокода, который бы добавлял дополнительные инструкции на процессорный конвейер. Новый микрокод был выпущен для большинства аппаратных платформ, вышедших на рынок в последние три-четыре года. Уязвимость Meltdown Variant 3 в меньшей степени коснулась процессоров AMD, и в большей — Intel, из-за особенностей управления доступом пользователя к оперативной памяти AMD, хотя эта уязвимость затронула большую часть процессоров ARM, некоторые из которых используются в решениях AMD. Однако именно Meltdown можно было устранить программными средствами на уровне операционных систем и низкоуровневых библиотек ядра: «Майкрософт» разослала обновления для Windows 7, 8.1 и 10, Linux Foundation выключила заплатки в ядро GNU/Linux 4.14.11, а Apple внесла исправления в macOS 10.13.2, iOS 11.2 и tvOS 11.2. Пользователи Android получили исправление только в тех случаях, когда производитель устройства ещё не прекратил его программную поддержку.

Большая часть современных процессоров получила исправления, однако, вряд ли все владельцы этого железа осведомлены об уязвимостях и установили эти обновления. Огромное число более старых процессоров не получили и не получат исправлений. На конец 2018 года ни один из производителей процессоров не выпустил моделей, которые бы не содержали этих уязвимостей. Модели с частичными исправлениями ожидаются лишь в 2020 году. Исправления вызвали заметное снижение производительности на пользовательских компьютерах и ещё более серьёзное — на серверах. Хакеры уже нашли сотни векторов атак с использованием этих уязвимостей. Наибольшей опасности подвергнуты облачные серверы, где на одном процессоре могут работать сервисы правительственных организаций и крупных компаний, а вместе с ними — небольшие виртуальные машины частных пользователей. Таким образом с помощью Spectre и Meltdown злоумышленники могут получить доступ к данным даже тех пользователей, которые никогда в жизни не использовали компьютеров.

Никто не прокомментировал материал. Есть мысли?