Компания AMD ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ»Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ CPU AMD Zen 3 Π°Ρ‚Π°ΠΊΠ΅ Spectre-STL

Компания AMD ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° ΠΎΡ‚Ρ‡Ρ‘Ρ‚ с Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ бСзопасности Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ PSF (Predictive Store Forwarding), Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π² процСссорах сСрии Zen 3. Π’ Ρ…ΠΎΠ΄Π΅ исслСдования тСорСтичСски ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ PSF ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π°Ρ‚Π°ΠΊΠΈ Spectre-STL (Spectre-v4), выявлСнного Π² ΠΌΠ°Π΅ 2018 Π³ΠΎΠ΄Π°, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ способных привСсти ΠΊ Π°Ρ‚Π°ΠΊΠ΅ шаблонов ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ ΠΈ общая ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ†Π΅Π½Π΅Π½Π° ΠΊΠ°ΠΊ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ.

Напомним, Ρ‡Ρ‚ΠΎ Π°Ρ‚Π°ΠΊΠ° Spectre-v4 (Speculative Store Bypass) основываСтся Π½Π° восстановлСнии Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΡΠ΅Π²ΡˆΠΈΡ… Π² процСссорном кэшС послС отбрасывания Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° спСкулятивного выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ‡Π΅Ρ€Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи ΠΈ чтСния с использованиСм косвСнной адрСсации. Когда опСрация чтСния слСдуСт Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ записи (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), смСщСниС адрСса для чтСния ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ извСстно ΠΈΠ·-Π·Π° выполнСния ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ чтСния Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡Π°Ρ‰Π΅ ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΈΠ· кэша) ΠΈ процСссор ΠΌΠΎΠΆΠ΅Ρ‚ спСкулятивно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ€Π°Π½ΡŒΡˆΠ΅ записи, Π½Π΅ доТидаясь ΠΏΠΎΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ вычислСно смСщСниС косвСнной адрСсации для записи.

Данная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ позволяСт инструкции чтСния ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ старому Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ адрСсу Π²ΠΎ врСмя ΠΏΠΎΠΊΠ° опСрация сохранСния Π΅Ρ‰Ρ‘ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°. ΠŸΡ€ΠΈ ошибкС прогнозирования, нСудачная спСкулятивная опСрация Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π±Ρ€ΠΎΡˆΠ΅Π½Π°, Π½ΠΎ слСды Π΅Ρ‘ выполнСния останутся процСссорном кэшС ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Ρ‹ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· способов опрСдСлСния содСрТимого кэша Π½Π° основС Π°Π½Π°Π»ΠΈΠ·Π° измСнСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ доступа ΠΊ ΠΏΡ€ΠΎΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈ Π½Π΅ ΠΏΡ€ΠΎΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ.

ДобавлСнная Π² процСссоры AMD Zen 3 тСхнология PSF ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ STLF (Store-To-Load-Forwarding), спСкулятивно Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ чтСния Π½Π° основС прСдсказания взаимосвязи ΠΌΠ΅ΠΆΠ΄Ρƒ опСрациями чтСния ΠΈ записи. ΠŸΡ€ΠΈ использовании классичСского STLF процСссор выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ «load» с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ «store», Π½Π΅ доТидаясь фактичСской записи Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Π½ΠΎ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΠ²ΡˆΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… «load» ΠΈ «store» адрСса ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ PSF Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ адрСсов спСкулятивной ΠΈ выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ «load» Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ вычислСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± адрСсах, Ссли Π΄ΠΎ этого Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΏΠ°Ρ€Π° store/load, ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΎΠ΄Π½ΠΈΠΌ адрСсом. Π’ случаС ошибки ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·Π° состояниС откатываСтся Π½Π°Π·Π°Π΄, Π½ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π² кэшС.

Атака Π½Π° PSF осущСствима Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ уровня, ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ контСкст процСсса ΠΈ блокируСтся ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ изоляции адрСсного пространства ΠΈΠ»ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ sandbox-ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ. ΠŸΡ€ΠΈ этом ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ sandbox-изоляции Π² процСссах ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Атака прСдставляСт ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ для систСм, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Ρ‹ для выполнСния ΠΊΠΎΠ΄Π° ΠΈ JIT, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ сторонний ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ процСсса (Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π°Ρ‚Π°ΠΊΠΈ Π½Π΅Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ довСрия ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ процСсса).

Компания AMD прСдоставила ряд ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ PSF, Π½ΠΎ с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ риска для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π»Π° Π½Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Для Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ процСссов, ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… Π½Π΅ Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ довСрия ΠΊΠΎΠ΄, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ PSF Ρ‡Π΅Ρ€Π΅Π· установку MSR-Π±ΠΈΡ‚ΠΎΠ² «SSBD» ΠΈ «PSFD», Π² Ρ‚ΠΎΠΌ числС для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Для ядра Linux ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ ΠΏΠ°Ρ‚Ρ‡ΠΈ c Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΎΠΏΡ†ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки «psfd» ΠΈ «nopsfd», ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ PSF.

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