Поделиться через


Руководство по устранению уязвимостей процессоров к атакам по побочным каналам в Azure, связанных с микроархитектурой и спекулятивным выполнением.

Применимо к: ✔️ Виртуальные машины Linux ✔️ Виртуальные машины Windows ✔️ Универсальные масштабируемые наборы

Внимание

Эта статья ссылается на CentOS, дистрибутив Linux, который является состоянием "Конец жизни" (EOL). Пожалуйста, рассмотрите возможность использования и планирования соответствующим образом.

В этой статье представлено руководство по новому классу уязвимостей процессов к атакам по сторонним каналам, связанных с микроархитектурой и спекулятивным выполнением, которые затрагивают многие современные процессоры и операционные системы в устройствах на основе кремния. Руководство применимо к процессорам Intel, AMD и ARM. См. сведения об этих уязвимостях устройств на основе кремния в следующих рекомендациях по безопасности и CVE:

Раскрытие информации об этих уязвимостях ЦП вызвало вопросы у клиентов, которые хотели получить больше ясности.

Корпорация Майкрософт развернула по всем облачным службам средства устранения уязвимостей. Инфраструктура с изолированными друг от друга нагрузками, которая работает в Azure, является защищенной. Это означает, что потенциальный злоумышленник, использующий ту же инфраструктуру, не может атаковать приложение с помощью этих уязвимостей.

Чтобы свести к минимуму последствия для пользователей и устранить необходимость перезагрузки, Azure всякий раз при возможности использует обслуживание с сохранением памяти. Azure продолжит использовать эти методы при выполнении системных обновлений на узле и для защиты своих клиентов.

Дополнительные сведения о том, как вопросы безопасности учитываются в каждом аспекте создания Azure, доступны на веб-сайте Документация по системе безопасности Azure.

Примечание.

С тех пор как этот документ был впервые опубликован, было обнаружено несколько вариантов этого класса уязвимостей. Корпорация Майкрософт продолжает активно вкладывать средства в защиту своих клиентов и предоставлять поддержку. Эта страница будет обновляться по мере выпуска дальнейших исправлений.

Клиенты, которые работают с ненадежным кодом на своих виртуальных машинах, должны предпринять меры по защите от этих уязвимостей, прочитав приведенные ниже сведения обо всех уязвимостях.

Другим клиентам следует оценить эти уязвимости с точки зрения глубокой защиты и рассмотреть выбранную ими конфигурацию с точки зрения безопасности и производительности.

Поддержка актуальности операционных систем

Хотя обновление ОС не требуется для изоляции приложений, работающих в Azure от других клиентов Azure, всегда рекомендуется поддерживать актуальность программного обеспечения. Последние обновления системы безопасности для Windows содержат методы устранения этих уязвимостей. Аналогичным образом дистрибутивы Linux выпустили несколько обновлений для устранения этих уязвимостей. Ниже приведены рекомендуемые действия для обновления операционной системы.

Предложение Рекомендуемое действие
Oблачныe службы Azure2 Включите автоматическое обновление или убедитесь, что используется последняя версия гостевой ОС.
Виртуальные машины Linux в Azure Устанавливайте обновления, предоставляемые поставщиками операционной системы. Дополнительные сведения см. в пункте Linux далее в этом документе.
Виртуальные машины Windows в Azure Установка последнего накопительного пакета обновлений безопасности.
Прочие службы Azure PaaS Для клиентов, использующих эти службы, не требуется никаких действий. Azure автоматически выполняет обновление версий операционной системы.

Дополнительные рекомендации при выполнении ненадежного кода

Клиентам, которые позволяют ненадежным пользователям выполнять произвольный код, может потребоваться использование дополнительных компонентов безопасности на своих виртуальных машинах Azure или в облачных службах. Эти компоненты защищают от внутрипроцессных векторов обнаружения, описываемых несколькими уязвимостями спекулятивного выполнения команд.

Примеры сценариев, где рекомендуется использовать дополнительные компоненты безопасности:

  • Вы разрешаете коду, который не доверяете запуску на виртуальной машине.
    • Например, вы разрешаете одному из клиентов загрузить двоичный файл или сценарий, который затем будет выполнен в приложении.
  • Вы разрешаете пользователям, которым вы не доверяете войти в виртуальную машину с помощью учетных записей с низким уровнем привилегий.
    • Например, вы разрешаете низкопривилегированному пользователю войти в одну из виртуальных машин с помощью удаленного рабочего стола или SSH.
  • Вы разрешаете ненадежным пользователям доступ к виртуальным машинам с помощью встроенной виртуализации.
    • Например, вы управляете узлом Hyper-V, но выделяете виртуальные машины для ненадежных пользователей.

Клиентам, которые не реализуют сценарий с ненадежным кодом, не нужно включать эти дополнительные функции безопасности.

Включение дополнительной защиты

Если вы используете ненадежный код, можно включить дополнительные возможности безопасности на виртуальной машине или в облачной службе. Одновременно с этим убедитесь, что операционная система обновлена, чтобы включить функции безопасности в виртуальной машине или в облачной службе.

Windows

Ваша целевая операционная система должна быть обновлена, чтобы включить эти дополнительные функции безопасности. Хотя многие средства защиты включены по умолчанию, описанные здесь дополнительные функции необходимо включать вручную, что может привести к снижению производительности.

Вариант 1

Шаг 1. Следуйте инструкциям по обновлению безопасности KB4072698, чтобы проверить, что средства защиты включены с помощью модуля PowerShell SpeculationControl.

Примечание.

Если этот модуль ранее уже был загружен, необходимо установить его последнюю версию.

Сведения о проверке включенной защиты от этих уязвимостей см. в статье Основные сведения о выходных данных скрипта PowerShell Get-SpeculationControlSettings.

Если защита не включена, обратитесь в службу поддержки Azure, чтобы включить дополнительные элементы управления на виртуальной машине Azure.

Шаг 2. Для включения поддержки в ОС теневого копирования виртуальных адресов ядра (KVAS) и внедрения целевой ветви (BTI) выполните инструкции из статьи KB4072698, чтобы включить защиту с помощью разделов реестра Session Manager. Потребуется перезагрузка.

Шаг 3. Для развертываний, использующих вложенную виртуализацию (только D3 и E3): эти инструкции применяются внутри виртуальной машины, используемой в качестве узла Hyper-V.

  1. Следуйте инструкциям обновления безопасности KB4072698 для включения защиты с помощью разделов реестра MinVmVersionForCpuBasedMitigations.
  2. Задайте тип планировщика низкоуровневой оболочки как Core, следуя инструкциям в этой статье.

Вариант 2

Отключите технологию Hyper-Threading на виртуальной машине. Клиенты, выполняющие недоверенный код на виртуальной машине с технологией Hyper-Threading, могут отключить эту технологию или перейти на размер виртуальной машины без Hyper-Threading. В этом документе приведен список размеров виртуальных машин с технологией Hyper-Threading (где количество виртуальных ЦП относится к количеству ядер как 2:1). Чтобы проверить, включена ли технология Hyper-Threading на виртуальной машине, используйте следующий скрипт в командной строке Windows на виртуальной машине.

Введите wmic, чтобы войти в интерактивный интерфейс. Затем введите следующую команду, чтобы просмотреть количество физических и логических процессоров на виртуальной машине.

CPU Get NumberOfCores,NumberOfLogicalProcessors /Format:List

Если число логических процессоров превышает количество физических процессоров (ядер), то технология Hyper-Threading включена. Если вы используете виртуальную машину с технологией Hyper-Threading, обратитесь в Службу поддержки Azure, чтобы отключить эту технологию. После отключения технологии Hyper-Threading служба поддержки попросит полностью перезагрузить виртуальную машину. Сведения о том, почему уменьшилось количество ядер виртуальной машины, см. в разделе Число ядер.

Параметр 3

Для CVE-2022-23816 и CVE-2022-21123 (ошибка определения типа ЦП AMD) следуйте как варианту 1, так и варианту 2 выше.

Linux

Включение набора дополнительных функций безопасности внутри требует, чтобы целевая операционная система была полностью обновлена. Некоторые методы устранения рисков будут включены по умолчанию. В приведенном ниже разделе описаны компоненты, которые по умолчанию отключены и/или зависят от аппаратной поддержки (микрокод). Включение этих компонентов может отрицательно сказаться на производительности. Дополнительные инструкции см. в документации поставщика операционной системы.

Шаг 1. Отключите технологию Hyper-Threading на виртуальной машине. Клиенты, выполняющие недоверенный код на виртуальной машине с технологией Hyper-Threading, должны отключить эту технологию или перейти на виртуальную машину без Hyper-Threading. В этом документе приведен список размеров виртуальных машин с технологией Hyper-Threading (где количество виртуальных ЦП относится к количеству ядер как 2:1). Чтобы проверить, включена ли технология Hyper-Threading, выполните команду lscpu на виртуальной машине Linux.

Если вывелось значение Thread(s) per core = 2, то технология Hyper-Threading включена.

Если вывелось значение Thread(s) per core = 1, то технология Hyper-Threading отключена.

Пример выходных данных для виртуальной машины с включенной технологией Hyper-Threading:

CPU Architecture:      x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) per core:    2
Core(s) per socket:    4
Socket(s):             1
NUMA node(s):          1

Если вы используете виртуальную машину с технологией Hyper-Threading, обратитесь в Службу поддержки Azure, чтобы отключить эту технологию. После отключения технологии Hyper-Threading служба поддержки попросит полностью перезагрузить виртуальную машину. Сведения о том, почему уменьшилось количество ядер виртуальной машины, см. в разделе Число ядер.

Шаг 2. Чтобы устранить любые из следующих уязвимостей памяти на основе ЦП, обратитесь к документации поставщика операционной системы:

Число ядер

При создании виртуальной машины с поддержкой технологии Hyper-Threading Azure выделяет 2 потока на ядро — они называются виртуальными ЦП. Если технология Hyper-Threading отключена, Azure удаляет поток и отображает однопоточные ядра (физические ядра). Отношение виртуальных ЦП к ЦП равно 2:1, поэтому после отключения технологии Hyper-Threading количество ЦП на виртуальной машине уменьшится в два раза. Например, виртуальная машина D8_v3 поддерживает технологию Hyper-Threading и работает на 8 виртуальных ЦП (2 потока на ядро умножить на 4 ядра). Если отключить Hyper-Threading, количество процессоров упадет до 4 физических ядер с 1 потоком на ядро.

Следующие шаги

Дополнительные сведения о том, как вопросы безопасности учитываются в каждом аспекте работы Azure, см. в документации по системе безопасности Azure.