Уязвимости проявляются в различных CPU Intel, включая процессоры на базе микроархитектур Haswell, Skylake, IceLake, Broadwell, Lakefield, Kabylake, Cometlake и Rocketlake, а также серверные процессоры Xeon EP/EX, Scalable и некоторые Atom. Для совершения атаки требуется доступ к MMIO, который, например, может быть получен в системах виртуализации, предоставляющих возможность обращения к MMIO для гостевых систем, подконтрольных атакующему. Исправление также может потребоваться для систем, использующих изолированные анклавы Intel SGX (Software Guard Extensions).
Для блокирования уязвимости требуется как обновление микрокода, так и применение дополнительных программных методов защиты, основанных на применении инструкции VERW для очистки содержимого микроархитектурных буферов в момент возвращения из ядра в пространство пользователя или при передаче управления гостевой системе. Подобная защита также применяется для блокирования ранее выявленных атак класса MDS (Microarchitectural Data Sampling), SRBDS (Special Register Buffer Data Sampling) и TAA (Transactional Asynchronous Abort).
На стороне микрокода необходимые для реализации защиты изменения предложены в майском обновлении микрокода для CPU Intel (IPU 2022.1). В ядре Linux защита от нового класса атак включена в состав выпусков 5.18.5, 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284 и 4.9.319. Для проверки подверженности системы уязвимостям в MMIO и оценки активности тех или иных механизмов защиты в ядро Linux добавлен файл «/sys/devices/system/cpu/vulnerabilities/mmio_stale_data». Для управления включением защиты реализован загрузочный параметр ядра «mmio_stale_data», который может принимать значения «full» (включение чистки буферов при переходе в пространство пользователя и в VM), «full,nosmt» (как «full» + дополнительно отключается SMT/Hyper-Threads) и «off» (защита отключена). Отдельные исправления предложены для гипервизора Xen и операционной системы Qubes.
Суть выявленного класса уязвимостей в том, что некоторые операции приводят к копированию или перемещению данных, оставшихся после выполнения на других ядрах CPU, из одного микроархитектурного буфера в другой. Уязвимости в MMIO позволяют перенести эти остаточные данные из изолированных микроархитектурных буферов в видимые приложениям регистры или буферы CPU. Выявлено три метода извлечения остаточных данных через MMIO:
- DRPW (Device Register Partial Write, CVE-2022-21166) — проблема с некорректной обработкой операций записи в некоторые регистры MMIO. Если размер записываемых данных меньше размера регистра, то в регистр копируется и остаточная информация из буферов заполнения (fill buffer). В итоге, процесс, инициировавший неполную операцию записи в регистр MMIO, может получить данные, оставшиеся в микроархитектурных буферах после операций, выполненных на других ядрах CPU.
- SBDS (Shared Buffers Data Sampling, CVE-2022-21125) — утечка остаточных данных из привязанного к ядру буфера заполнения, попавших в результате перемещения из общих для всех ядер промежуточных буферов.
- SBDR (Shared Buffers Data Read, CVE-2022-21123) — проблема походит на SBDS, но отличается тем, что остаточные данные могут попасть в видимые приложениям структуры CPU. Проблемы SBDS и SBDR проявляются только на процессорах для клиентских систем и на серверном семействе Intel Xeon E3.

Источник: http://www.opennet.ru/opennews/art.shtml?num=57378