Топ-новостью последних дней, без сомнения, стала проблема с процессорами Intel, AMD и ARM-чипами. И вот разработчики из Google Project Zero опубликовали детали двух уязвимостей, которые получили кодовые имена Meltdown и Spectre.
Как сообщается, первая и вторая актуальна для Intel и ARM64, для AMD – только Spectre. Разработчики подготовили работающие прототипы эксплоитов, в том числе реализация на JavaScript для использования в браузере.
Суть в том, что Meltdown (CVE-2017-5754) позволяет приложению прочитать содержимое любой области память компьютера, включая память ядра и других пользователей. Проблема также позволяет получить доступ к чужой памяти в системах паравиртуализации (режим полной виртуализации (HVM) проблеме не подвержен) и контейнерной изоляции (в том числе Docker, LXC, OpenVZ), например, пользователь одной виртуальной машины может получить содержимое памяти хост-системы и других виртуальных машин. Уязвимости подвержены процессоры Intel, выпускаемые с 1995 года, за исключением Intel Itanium и Intel Atom, выпущенных до 2013 года, и ARM64 (Cortex-A15/A57/A72/A75). Подготовленный прототип эксплоита позволяет читать память ядра со скоростью 2000 байт в секунду на процессоре Intel Xeon архитектуры Haswell.
Уязвимость Spectre (CVE-2017-5753, CVE-2017-5715) позволяет создать брешь в механизме изоляции памяти приложений и позволяет атакующему обманным способом получить данные чужого приложения (только приложения, но не памяти ядра). Этой атаке подвержены процессоры Intel, AMD (только при включенном eBPF в ядре) и ARM64 (Cortex-R7/R8, Cortex-A8/A9/A15/A17/A57/A72/A73/A75). Как отмечается, в сравнении с Meltdown уязвимость существенно труднее эксплуатировать, но значительно труднее исправить.
Эти атаки используют три уязвимости (обход проверки границ, сбой проверки прав доступа при обработке исключений и оседание данных в кэше после отмены операции), каждую из которых надо исправлять отдельно.
Для пользователей рекомендуется установить обновление ядра сразу после его публикации. Как отмечается, обновление ядра Linux выпущено в виде набора патчей KPTI, оно исправляет только Meltdown для дистрибутивов RHEL и Fedora. Также выпущено обновление для Windows 7, 8/8,1 и 10, Android и Chrome OS 63.
Как заявил Линус Торвальдс, создатель Linux, текущие патчи безусловно включили KPTI для всех процессоров и архитектур Intel, что может означать, что у компании нет кристаллов, в которых эта ошибка исправлена. То есть Cannon Lake/Ice Lake выйдут с этой же проблемой.