SWAPGS — новая ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ спСкулятивного выполнСния CPU

Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Bitdefender выявили Π½ΠΎΠ²ΡƒΡŽ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2019-1125) Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ спСкулятивного выполнСния инструкций соврСмСнных CPU, которая ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° имя SWAPGS, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ названию процСссорной инструкции, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ позволяСт Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ содСрТимоС областСй памяти ядра ΠΈΠ»ΠΈ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π° Π² процСссорах Intel (x86_64) ΠΈ частично Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ процСссоры AMD, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ проявляСтся основной Π²Π΅ΠΊΡ‚ΠΎΡ€ Π°Ρ‚Π°ΠΊΠΈ. Π Π°Π½Π΅Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ противодСйствия уязвимостям Spectre ΠΈ Meltdown Π½Π΅ Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‚ ΠΎΡ‚ Π°Ρ‚Π°ΠΊΠΈ SWAPGS ΠΏΡ€ΠΈ использовании процСссоров Intel, Π½ΠΎ для Linux, ChromeOS, Android ΠΈ Windows ΡƒΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ исправлСния.

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ относится ΠΊ классу Spectre v1 ΠΈ основываСтся Π½Π° ΠΈΠ΄Π΅Π΅ восстановлСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· процСссорного кэша, ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ послС спСкулятивного выполнСния инструкций. Π‘Π»ΠΎΠΊΠΈ прСдсказания ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² соврСмСнных CPU для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… инструкций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вСроятнСС всСго Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹, Π½ΠΎ Π½Π΅ доТидаясь вычислСния всСх Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° Π΅Ρ‰Ρ‘ Π½Π΅ вычислСны условия ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ доступа). Если ΠΏΡ€ΠΎΠ³Π½ΠΎΠ· Π½Π΅ подтвСрТдаСтся, процСссор отбрасываСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ спСкулятивного выполнСния, Π½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Π² Π΅Π³ΠΎ Ρ…ΠΎΠ΄Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡΠ΅Π΄Π°ΡŽΡ‚ Π² процСссорном кэшС ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ восстановлСны ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² опрСдСлСния содСрТимого кэша ΠΏΠΎ сторонним ΠΊΠ°Π½Π°Π»Π°ΠΌ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ доступа ΠΊ ΠΏΡ€ΠΎΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈ Π½Π΅ ΠΏΡ€ΠΎΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠΉ Π°Ρ‚Π°ΠΊΠΈ Π² использовании ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰Π΅ΠΉ Π² Ρ…ΠΎΠ΄Π΅ спСкулятивного выполнСния инструкции SWAPGS, которая примСняСтся Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах для Π·Π°ΠΌΠ΅Π½Ρ‹ значСния рСгистра GS ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ управлСния ΠΈΠ· пространства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² ядро ОБ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ GS замСняСтся Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ ΠΏΡ€ΠΈ опСрациях Π² ядрС). Π’ ядрС Linux Π² GS хранится ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ per_cpu, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ядра, Π° Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° TLS (Thread Local Storage).

Для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° инструкции SWAPGS ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ядру ΠΈΠ· пространства ядра ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° выполняСтся ΠΊΠΎΠ΄, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ Π·Π°ΠΌΠ΅Π½Ρ‹ рСгистра GS, ΠΏΠ΅Ρ€Π΅Π΄ инструкциСй осущСствляСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈ условный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ спСкулятивного выполнСния Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π° с инструкциСй SWAPGS, Π½Π΅ доТидаясь Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, ΠΈ Ссли выбранная Π²Π΅Ρ‚ΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ»Π°ΡΡŒ, отбрасываСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ситуация, ΠΊΠΎΠ³Π΄Π° спСкулятивно Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Π½Π° Π²Π΅Ρ‚ΠΊΠ° Π½Π΅ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‰Π°Ρ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ SWAPGS, Π½ΠΎ Π² процСссС спСкулятивного выполнСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рСгистра GS Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ инструкциСй SWAPGS ΠΈ использовано Π² зависимых опСрациях с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡΠ΅Π΄Π°ΡŽΡ‚ Π² кэшС CPU.

Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π΄Π²Π° сцСнария Π°Ρ‚Π°ΠΊΠΈ, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ эксплоитов. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ сцСнарий основываСтся Π½Π° ситуации, ΠΊΠΎΠ³Π΄Π° инструкция SWAPGS Π½Π΅ выполняСтся спСкулятивно, хотя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ фактичСском Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ — Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΊΠΎΠ³Π΄Π° инструкция SWAPGS выполняСтся спСкулятивно, хотя фактичСски Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π°. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сцСнария прСдусмотрСно Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° эксплуатации: Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌΡƒ адрСсу Π² области ядра ΠΈ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ поиск ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ значСния Π² ΠΏΠΎ случайным адрСсам Π² ядрС. ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π°Ρ‚Π°ΠΊΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ эксплоита Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… часов.

Π’ ядрС Linux ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° устранСна Ρ‡Π΅Ρ€Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ Π²Ρ‹Π·ΠΎΠ²Π° инструкции SWAPGS (Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ спСкулятивного выполнСния), ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с исправлСниСм Π΄Ρ€ΡƒΠ³ΠΈΡ… уязвимостСй класса Spectre v1. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ добавлСнная Π·Π°Ρ‰ΠΈΡ‚Π° минимально повлияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ. Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π° этапС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ пространством ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ядра, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ сниТСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ интСнсивном Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈΠ· прилоТСния ΠΈΠ»ΠΈ частой Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ NMI ΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ.

Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ установки обновлСния ядра ΠΊΠ°ΠΊ Π² основной систСмС, Ρ‚Π°ΠΊ ΠΈ Π² гостСвых окруТСниях, с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ систСмы. Для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π² Linux ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована опция «nospectre_v1», которая Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΌΠ΅Ρ€Ρ‹ для блокирования уязвимости SWAPGS. Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ доступно Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ‚Ρ‡Π° для ядра Linux, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ Π² состав выпусков 4.19.65, 5.2.7, 4.14.137, 4.9.188 ΠΈ 4.4.188. ОбновлСния для дистрибутивов Linux ΠΏΠΎΠΊΠ° Π½Π΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Ρ‹ (Debian, RHEL, Fedora, Arch Linux, SUSE/openSUSE, Ubuntu). Π’ Windows ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Π΅Π· лишнСй огласки Π±Ρ‹Π»Π° устранСна Π² июльском ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ. Компания Google ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»Π° исправлСниС для ядра 4.19, поставляСмого Π² ChromeOS ΠΈ Android.

По заявлСнию исслСдоватСлСй ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Bitdefender, Intel Π±Ρ‹Π» ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ Π΅Ρ‰Ρ‘ Π² августС ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ, для Ρ‡Π΅Π³ΠΎ ΠΊ скоординированной Π²Ρ‹Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ исправлСния Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π΅Π½Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠ· Microsoft, Google ΠΈ ядра Linux. Π‘Ρ‚Π°Ρ€Ρ‹Π΅ процСссоры Intel, Π΄ΠΎ Ivy Bridge, Π°Ρ‚Π°ΠΊΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ ΠΈΠ·-Π·Π° отсутствия ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ инструкции WRGSBASE, использованной Π² эксплоитС. БистСмы ARM, POWER, SPARC, MIPS ΠΈ RISC-V Π½Π΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ SWAPGS.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΡƒΠ³Ρ€ΠΎΠΆΠ°Π΅Ρ‚ Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ обладатСлям процСссоров Intel —
Π½Π° систСмах AMD ΡƒΠ΄Π°Π»ΠΎΡΡŒ воспроизвСсти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ сцСнарий Π°Ρ‚Π°ΠΊΠΈ, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉΡΡ спСкулятивной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ значСния рСгистра GS, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для поиска ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² случайных областях памяти. Для блокирования Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π°Ρ‚Π°ΠΊΠΈ достаточно ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ уязвимостСй Spectre v1.

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