Представлен новый класс уязвимостей в процессорах Intel

14 мая 2019 года

Компания Intel опубликовала сведения о новом классе уязвимостей в своих процессорах - MDS (Microarchitectural Data Sampling). Как и прошлые атаки класса Spectre новые проблемы могут привести к утечке закрытых данных операционной системы, виртуальных машин и чужих процессов. Утверждается, что проблемы сперва были выявлены сотрудниками и партнёрами Intel в ходе внутреннего аудита. В июне и августе 2018 года информацию о проблемах в Intel также передали независимые исследователи, после чего почти год велась совместная работа с производителями и разработчиками операционных систем по определению возможных векторов атак и доставке исправлений. Процессоры AMD и ARM проблеме не подвержены.

На основе выявленных проблем исследователями из Грацского технического университета (Австрия) разработано несколько практических атак по сторонним каналам:

  • ZombieLoad ( PDF, прототип эксплоитов для Linux и Windows) - позволяет извлечь конфиденциальную информацию из других процессов, операционной системы, виртуальных машин и защищённых анклавов (TEE, Trusted Execution Environment). Например, продемонстрирована возможность определения истории открытия страниц в Tor browser, запущенном в другой виртуальной машине, а также извлечения используемых в приложениях ключей доступа и паролей;
  • RIDL ( PDF, код для проверки) - позволяет организовать утечку информации между различными изолированными областями в процессорах Intel, такими как буферы заполнения, буферы хранения и порты загрузки. Примеры проведения атаки показаны для организации утечек из других процессов, операционной системы, виртуальных машин и защищённых анклавов. Например, показано как узнать содержимое хэша пароля root из /etc/shadow при периодических попытках аутентификации (атака заняла 24 часа);

Кроме того показан пример проведения атаки с использованием JavaScript и WebAssembly при открытии вредоносной страницы в движке SpiderMonkey (в современных полноценных браузерах подобная атака маловероятна из-за ограничения точности таймера и мер для защиты от Spectre). Представители проекта Chromium считают, что добавления дополнительной защиты в браузер не требуется и можно обойтись исправлениями на уровне ОС.

  • Fallout ( PDF) - даёт возможность читать данные, недавно записанные операционной системой и определять раскладку памяти ОС для упрощения проведения других атак;
  • Store-To-Leak Forwarding - эксплуатирует оптимизации CPU по работе с буфером хранения и может применяться для обхода механизма рандомизации адресного пространства ядра (KASLR), для мониторинга состояния операционной системы или для организации утечек в комбинации с гаджетами на базе методов Spectre.

Выявленные уязвимости:

  • CVE-2018-12126 - MSBDS (Microarchitectural Store Buffer Data Sampling), восстановление содержимого буферов хранения. Используется в атаке Fallout. Степень опасности определена в 6.5 баллов (CVSS);
  • CVE-2018-12127 - MLPDS (Microarchitectural Load Port Data Sampling), восстановление содержимого портов загрузки. Используется в атаке RIDL. CVSS 6.5;
  • CVE-2018-12130 - MFBDS (Microarchitectural Fill Buffer Data Sampling), восстановление содержимого буферов заполнения. Используется в атаках ZombieLoad и RIDL. CVSS 6.5;
  • CVE-2019-11091 - MDSUM (Microarchitectural Data Sampling Uncacheable Memory), восстановление содержимого некэшируемой памяти. Используется в атаке RIDL. CVSS 3.8.

Суть выявленных проблем в возможности применения методов анализа по сторонним каналам к данным в микроархитектурных структурах, к которым приложения напрямую не имеют доступа. Речь ведётся о таких низкоуровневых структурах, как буферы заполнения (Line Fill Buffer), буферы хранения (Store Buffer) и порты загрузки (Load Port), которые являются более мелкими составными блоками, чем кэш первого уровня (L1D), кэш загрузки данных (RDCL) или L1TF (L1 Terminal Fault), и соответственно включают меньше информации и обновляются более интенсивно.


Атаки по сторонним каналам на микроархитектурные структуры существенно сложнее в проведении по сравнению с методами восстановления содержимого кэша и требуют отслеживания и анализа значительных объёмов данных для определения их связи с определёнными адресами в памяти (по сути, атакующий не может целенаправленно перехватить определённые данные, а может длительное время накапливать утечки и применять статистические методы для реконструкции определённых видов данных). Кроме того, атака затрагивает только данные на том же физическом ядре CPU, что и код атакующего.

Предложенные методы определения содержимого микроархитектурных структур основываются на том, что данные структуры используются при спекулятивной обработке исключений (fault) или операций load и store. При спекулятивном выполнении содержимое внутренних структур перенаправляется для обработки в регистры или кэш. Спекулятивные операции не завершаются и результат отбрасывается, но перенаправленное содержимое можно определить при помощи методов анализа кэша по сторонним каналам.

Порты загрузки используются процессором для получения данных из памяти или подсистемы ввода/вывода и предоставления полученной информации в регистры CPU. Из-за особенности реализации данные от старых операций загрузки остаются в портах до их перезаписи новыми данными, что позволяет косвенно определить состояние данных в порте загрузки при помощи манипуляций с исключениями (fault) и инструкциями SSE/AVX/AVX-512, загружающими более 64 бит данных. В подобных условиях операции загрузки спекулятивно засвечивают устаревшие значения данных из внутренних структур в зависимые операции. Похожим образом организуется утечка через буфер хранения, применяемый для ускорения записи в кэш CPU и включающий в себя таблицу адресов, значений и флагов, а также через буфер заполнения, который содержит данные, пока отсутствующие в кэше L1 (cache-miss), на время их загрузки из кэшей других уровней.

Проблема затрагивает модели процессоров Intel, выпускаемые с 2011 года (начиная с 6 поколения). При этом аппаратно уязвимости блокируются начиная с некоторых моделей 8 и 9 поколений Intel Core и 2 поколения Intel Xeon Scalable (проверить можно через бит ARCH_CAP_MDS_NO в IA32_ARCH_CAPABILITIES MSR). Уязвимости также уже устранены на уровне прошивок, микрокода и операционных систем. Многие производители серверов, ПК и ноутбуков к моменту раскрытия сведений об уязвимостях успели выпустить обновления прошивок (например, Lenovo).

По оценке Intel потеря производительности после активации исправления для большинства пользователей не превышает 3%. При отключении технологии Hyper-Threading снижение производительности может доходить до 9% в тесте SPECint_rate_base, до 11% при активных целочисленных вычислениях и до 19% при выполнении серверных Java-приложений (при включенном HT снижение производительности почти отсутствует). Исправления практически не влияют на производительность операций, связанных с вводом/выводом. В macOS отмечается провал производительности многопоточных приложений при отключении hyper-threading до 40%.

В ядре Linux защита от MDS добавлена в сегодняшних обновлениях 5.1.2, 5.0.16, 4.19.43, 4.14.119 и 4.9.176. Метод защиты строится (Архивная копия от 21 октября 2020 на Wayback Machine) на очистке содержимого микроархитектурных буферов в момент возвращения из ядра в пространство пользователя или при передаче управления гостевой системе, для чего используется инструкция VERW. Для работы защиты требуется наличие поддержки режима MD_CLEAR, реализованного в свежем обновлении микрокода. Для полной защиты также рекомендуется отключить Hyper Threading. Для проверки подверженности системе уязвимости в ядро Linux добавлен обработчик "/sys/devices/system/cpu/vulnerabilities/mds". Для управления включением различных режимов блокирования уязвимости в ядро добавлен параметр "mds=", который может принимать значения "full", "full,nosmt" (отключение Hyper-Threads), "vmwerv" и "off".

Обновления пакетов уже выпущены для RHEL, CentOS 6 и Ubuntu, но пока остаются недоступны для

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Представлен новый класс уязвимостей в процессорах Intel», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.