Уязвимости Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ MMIO процСссоров Intel

Компания Intel раскрыла ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½ΠΎΠ²ΠΎΠΌ классС ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ структуры процСссоров, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΡΡ†ΠΈΡŽ с ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ MMIO (Memory Mapped Input Output) ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… ядрах CPU. НапримСр, уязвимости ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссов, Π°Π½ΠΊΠ»Π°Π²ΠΎΠ² Intel SGX ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин. Уязвимости спСцифичны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для CPU ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Intel, процСссоры Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ уязвимости Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‚.

Уязвимости ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… 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.

Уязвимости Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ MMIO процСссоров Intel


Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru