LVI — Π½ΠΎΠ²Ρ‹ΠΉ класс Π°Ρ‚Π°ΠΊ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ спСкулятивного выполнСния Π² CPU

ΠžΠ±Π½Π°Ρ€ΠΎΠ΄ΠΎΠ²Π°Π½Ρ‹ свСдСния ΠΎ Π½ΠΎΠ²ΠΎΠΌ классС Π°Ρ‚Π°ΠΊ LVI (Load Value Injection, CVE-2020-0551) Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ спСкулятивного выполнСния Π² CPU Intel, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ сСкрСтных Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π°Π½ΠΊΠ»Π°Π²ΠΎΠ² Intel SGX ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссов.

Новый класс Π°Ρ‚Π°ΠΊ основан Π½Π° манипуляциях с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΌΠΈ структурами, Ρ‡Ρ‚ΠΎ ΠΈ Π² Π°Ρ‚Π°ΠΊΠ°Ρ… MDS (Microarchitectural Data Sampling), Spectre ΠΈ Meltdown. ΠŸΡ€ΠΈ этом Π½ΠΎΠ²Ρ‹Π΅ Π°Ρ‚Π°ΠΊΠΈ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Meltdown, Spectre, MDS ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π°Ρ‚Π°ΠΊ. Для обСспСчСния эффСктивной Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ LVI трСбуСтся внСсСниС Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² CPU. ΠŸΡ€ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ, Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ компилятором инструкции LFENCE послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ· памяти ΠΈ Π·Π°ΠΌΠ΅Π½Ρƒ инструкции RET Π½Π° POP, LFENCE ΠΈ JMP, Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ слишком большиС Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы — ΠΏΠΎ ΠΎΡ†Π΅Π½ΠΊΠ΅ исслСдоватСлСй полная программная Π·Π°Ρ‰ΠΈΡ‚Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ сниТСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² 2-19 Ρ€Π°Π·.

Частично, Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡΡ‚ΡŒ блокирования ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ компСнсируСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² настоящСС врСмя Π°Ρ‚Π°ΠΊΠ° носит большС тСорСтичСский, Ρ‡Π΅ΠΌ практичСский Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ (Π°Ρ‚Π°ΠΊΠ° тСорСтичСски Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½Π° Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ воспроизводима лишь Π² синтСтичСских тСстах).
Компания Intel присвоила ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ ΡƒΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ опасности (5.6 ΠΈΠ· 10) ΠΈ выпустила ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ ΠΈ SDK для окруТСния SGX, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»Π°ΡΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π°Ρ‚Π°ΠΊΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°Ρ‚Π°ΠΊΠΈ ΠΏΠΎΠΊΠ° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ процСссорам Intel, Π½ΠΎ Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ LVI ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссоров, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ Π°Ρ‚Π°ΠΊΠΈ класса Meltdown.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° выявлСна Π² Π°ΠΏΡ€Π΅Π»Π΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° исслСдоватСлСм Π”ΠΆΠΎ Π’Π°Π½ Π‘Π°Π»ΠΊΠΎΠΌ (Jo Van Bulck) ΠΈΠ· ЛёвСнского унивСрситСта, послС Ρ‡Π΅Π³ΠΎ ΠΏΡ€ΠΈ участии 9 исслСдоватСлСй ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… унивСрситСтов, Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΠΏΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… допускаСт сущСствованиС Π±ΠΎΠ»Π΅Π΅ спСцифичных Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ². НСзависимо Π² Ρ„Π΅Π²Ρ€Π°Π»Π΅ этого Π³ΠΎΠ΄Π° исслСдоватСли ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Bitdefender Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π°Ρ‚Π°ΠΊΠΈ LVI ΠΈ сообщили ΠΎ Π½Ρ‘ΠΌ Π² Intel. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π°Ρ‚Π°ΠΊ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ использованиСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… структур, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π±ΡƒΡ„Π΅Ρ€ хранСния (SB, Store Buffer), Π±ΡƒΡ„Π΅Ρ€ заполнСния (LFB, Line Fill Buffer), Π±ΡƒΡ„Π΅Ρ€ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ контСкста FPU ΠΈ кэш ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня (L1D), Ρ€Π°Π½Π΅Π΅ примСняСмых Π² Ρ‚Π°ΠΊΠΈΡ… Π°Ρ‚Π°ΠΊΠ°Ρ… ΠΊΠ°ΠΊ ZombieLoad, RIDL, Fallout, LazyFP, Foreshadow ΠΈ Meltdown.

LVI - Π½ΠΎΠ²Ρ‹ΠΉ класс Π°Ρ‚Π°ΠΊ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ спСкулятивного выполнСния Π² CPU

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ LVI ΠΎΡ‚ Π°Ρ‚Π°ΠΊ MDS являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ MDS ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ содСрТимого ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… структур, ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π² кэшС послС спСкулятивной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (fault) ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ load ΠΈ store, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ
Π°Ρ‚Π°ΠΊΠΈ LVI ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ подстановки Π΄Π°Π½Π½Ρ‹Ρ… Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅Π³ΠΎ Π² ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ структуры для влияния Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ спСкулятивноС выполнСния ΠΊΠΎΠ΄Π° ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… манипуляций Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ содСрТимоС Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… структур Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссах ΠΏΡ€ΠΈ исполнСнии ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΌ ядрС CPU.

LVI - Π½ΠΎΠ²Ρ‹ΠΉ класс Π°Ρ‚Π°ΠΊ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ спСкулятивного выполнСния Π² CPU

Для эксплуатации ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² ΠΊΠΎΠ΄Π΅ процСсса-ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ΄Π° (Π³Π°Π΄ΠΆΠ΅Ρ‚Ρ‹), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… загруТаСтся ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° этого значСния ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ возникновСнию ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (fault, abort ΠΈΠ»ΠΈ assist), ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ. ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ спСкулятивноС ΠΎΠΊΠ½ΠΎ, Π²ΠΎ врСмя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ происходит ΡƒΡ‚Π΅Ρ‡ΠΊΠ° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π² Π³Π°Π΄ΠΆΠ΅Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ частности, процСссор Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π² спСкулятивном Ρ€Π΅ΠΆΠΈΠΌΠ΅ кусок ΠΊΠΎΠ΄Π° (Π³Π°Π΄ΠΆΠ΅Ρ‚), ΠΏΠΎΡ‚ΠΎΠΌ опрСдСляСт, Ρ‡Ρ‚ΠΎ прСдсказаниС Π½Π΅ ΠΎΠΏΡ€Π°Π²Π΄Π°Π»ΠΎΡΡŒ ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² исходноС состояниС, Π½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Π² процСссС спСкулятивного выполнСния Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡΠ΅Π΄Π°ΡŽΡ‚ Π² кэшС L1D ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… Π±ΡƒΡ„Π΅Ρ€Π°Ρ… ΠΈ доступны для извлСчСния ΠΈΠ· Π½ΠΈΡ… с использованиСм извСстных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² опрСдСлСния остаточных Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ сторонним ΠΊΠ°Π½Π°Π»Π°ΠΌ.

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ «assist», Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ «fault», обрабатываСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ процСссора Π±Π΅Π· Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Assist ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° трСбуСтся ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΡ‚ A (Accessed) ΠΈΠ»ΠΈ D (Dirty) Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ страниц памяти. Главная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ провСдСния Π°Ρ‚Π°ΠΊΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ процСссы Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ assist, манипулируя процСссом ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹. Π’ настоящСС врСмя Π½Π΅ сущСствуСт Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹Ρ… способов ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Π½ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΈΡ… Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ ΠΏΠΎΠΊΠ° ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π°Π½ΠΊΠ»Π°Π²ΠΎΠ² Intel SGX, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ сцСнарии ΡΠ²Π»ΡΡŽΡ‚ΡΡ тСорСтичСскими ΠΈΠ»ΠΈ воспроизводимыми Π² синтСтичСских условиях (трСбуСтся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π³Π°Π΄ΠΆΠ΅Ρ‚ΠΎΠ²)

LVI - Π½ΠΎΠ²Ρ‹ΠΉ класс Π°Ρ‚Π°ΠΊ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ спСкулятивного выполнСния Π² CPU

LVI - Π½ΠΎΠ²Ρ‹ΠΉ класс Π°Ρ‚Π°ΠΊ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ спСкулятивного выполнСния Π² CPU

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Π°Ρ‚Π°ΠΊ:

  • Π£Ρ‚Π΅Ρ‡ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· структур ядра Π² процСсс Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π˜ΠΌΠ΅ΡŽΡ‰Π°ΡΡΡ Π² ядрС Linux Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Π°Ρ‚Π°ΠΊ класса Spectre 1, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ SMAP (Supervisor Mode Access Prevention) сущСствСнно ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‚ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π°Ρ‚Π°ΠΊΠΈ LVI. ВнСсСниС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π² ядро ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ выявлСния Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ простых ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² провСдСния Π°Ρ‚Π°ΠΊΠΈ LVI.
  • Π£Ρ‚Π΅Ρ‡ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ процСссами. Для Π°Ρ‚Π°ΠΊΠΈ трСбуСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° формирования ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Ρ†Π΅Π»Π΅Π²ΠΎΠΌ процСссС.
  • Π£Ρ‚Π΅Ρ‡ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· хост-окруТСния Π² Π³ΠΎΡΡ‚Π΅Π²ΡƒΡŽ систСму. Атака отнСсСна ΠΊ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ слишком слоТных, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… выполнСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Ρ… шагов ΠΈ прСдсказаний активности Π² систСмС.
  • Π£Ρ‚Π΅Ρ‡ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами Π² Ρ€Π°Π·Π½Ρ‹Ρ… гостСвых систСмах. Π’Π΅ΠΊΡ‚ΠΎΡ€ Π°Ρ‚Π°ΠΊΠΈ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ процСссами, Π½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ выполнСния слоТных манипуляций для ΠΎΠ±Ρ…ΠΎΠ΄Π° изоляции ΠΌΠ΅ΠΆΠ΄Ρƒ гостСвыми систСмами.

Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ нСсколько ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² с дСмонстрациСй ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² провСдСния Π°Ρ‚Π°ΠΊΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ‚Π°ΠΊ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ позволяСт ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ спСкулятивноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² процСссС-ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (ROP, Return-Oriented Programming). Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² качСствС ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹ выступаСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ процСсс, содСрТащий Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π³Π°Π΄ΠΆΠ΅Ρ‚Ρ‹ (ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°Ρ‚Π°ΠΊΠΈ ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ сторонним процСссам Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΎ). Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ позволяСт Π²ΠΊΠ»ΠΈΠ½ΠΈΡ‚ΡŒΡΡ Π² вычислСния ΠΏΡ€ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠΈ AES Π²Π½ΡƒΡ‚Ρ€ΠΈ Π°Π½ΠΊΠ»Π°Π²Π° Intel SGX ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡ‚Π΅Ρ‡ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ врСмя спСкулятивного выполнСния инструкций для восстановлСния значСния примСняСмого для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»ΡŽΡ‡Π°.


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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ