Новый Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π°Ρ‚Π°ΠΊΠΈ Foreshadow, Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ процСссоры Intel, AMD, ARM ΠΈ IBM

Π“Ρ€ΡƒΠΏΠΏΠ° исслСдоватСлСй ΠΈΠ· Грацского тСхничСского унивСрситСта (Австрия) ΠΈ Π¦Π΅Π½Ρ‚Ρ€Π° Π“Π΅Π»ΡŒΠΌΠ³ΠΎΠ»ΡŒΡ†Π° ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ бСзопасности (CISPA), выявила (PDF) Π½ΠΎΠ²Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ примСнСния Π°Ρ‚Π°ΠΊΠΈ ΠΏΠΎ сторонним ΠΊΠ°Π½Π°Π»Π°ΠΌ Foreshadow (L1TF), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· памяти Π°Π½ΠΊΠ»Π°Π²ΠΎΠ² Intel SGX, SMM (System Management Mode), областСй памяти ядра ОБ ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин Π² систСмах Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π² 2018 Π³ΠΎΠ΄Ρƒ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π°Ρ‚Π°ΠΊΠΈ Foreshadow Π½ΠΎΠ²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π΅ спСцифичСн для процСссоров Intel ΠΈ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ CPU Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ARM, IBM ΠΈ AMD. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½ΠΎΠ²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Π°Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ осущСствлСна Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ запуска JavaScript ΠΈ WebAssembly Π² web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

Атака Foreshadow ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ доступС ΠΊ памяти ΠΏΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ адрСсу, приводящСму ΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ (terminal page fault), процСссор спСкулятивно рассчитываСт физичСский адрСс ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, Ссли ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π² L1-кэшС. БпСкулятивноС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ выполняСтся Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ страниц памяти ΠΈ нСзависимо ΠΎΡ‚ состояния записи Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ страниц памяти (PTE), Ρ‚.Π΅. Π΄ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ наличия Π΄Π°Π½Π½Ρ‹Ρ… Π² физичСской памяти ΠΈ ΠΈΡ… доступности для чтСния. ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ доступности памяти, Π² случаС отсутствия Ρ„Π»Π°Π³Π° Present Π² PTE опСрация отбрасываСтся, Π½ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡΠ΅Π΄Π°ΡŽΡ‚ Π² кэшС ΠΈ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² опрСдСлСния содСрТимого кэша ΠΏΠΎ сторонним ΠΊΠ°Π½Π°Π»Π°ΠΌ (Ρ‡Π΅Ρ€Π΅Π· Π°Π½Π°Π»ΠΈΠ· измСнСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ доступа ΠΊ ΠΏΡ€ΠΎΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈ Π½Π΅ ΠΏΡ€ΠΎΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ).

Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Foreshadow нСэффСктивны ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ с Π½Π΅Π²Π΅Ρ€Π½ΠΎΠΉ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ
Foreshadow ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ эксплуатирована нСзависимо ΠΎΡ‚ примСнСния Π² ядрС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π·Π°Ρ‰ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π½Π΅Π΅ ΡΡ‡ΠΈΡ‚Π°Π»ΠΈΡΡŒ достаточными. Π’ ΠΈΡ‚ΠΎΠ³Π΅ исслСдоватСлями Π±Ρ‹Π»Π° продСмонстрирована Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ Foreshadow Π² систСмах с ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ старыми ядрами, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ всС ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Ρ€Π΅ΠΆΠΈΠΌΡ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Foreshadow, Π° Ρ‚Π°ΠΊΠΆΠ΅ с Π½ΠΎΠ²Ρ‹ΠΌΠΈ ядрами, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Spectre-v2 (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ опция ядра Linux nospectre_v2).

Π‘Ρ‹Π»ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ эффСкт ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅ΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π΅ связан с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ инструкциями prefetch ΠΈΠ»ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ эффСктом
ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅ΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² процСссС доступа ΠΊ памяти, Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ спСкулятивном Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ рСгистров пространства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² ядрС. ПодобноС Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ возникновСния уязвимости ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, Ρ‡Ρ‚ΠΎ ΡƒΡ‚Π΅Ρ‡ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² Foreshadow ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· кэш L1, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² ядрС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΎΡ‚Ρ€Ρ‹Π²ΠΊΠΎΠ² ΠΊΠΎΠ΄Π° (prefetch-Π³Π°Π΄ΠΆΠ΅Ρ‚ΠΎΠ²) ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡ‚Π΅Ρ‡ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π²Π½Π΅ L1-кэша, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² кэш L3.

ВыявлСнная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ возмоТности ΠΏΠΎ созданию Π½ΠΎΠ²Ρ‹Ρ… Π°Ρ‚Π°ΠΊ, Π½Π°Ρ†Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π½Π° процСссы трансляции Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… адрСсов Π² физичСскиС Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… окруТСниях ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ адрСсов ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, сохранённых Π² рСгистрах CPU. Π’ качСствС дСмонстраций исслСдоватСли ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования выявлСнного эффСкта для извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ процСсса Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΊΠΎΠ»ΠΎ 10 Π±ΠΈΡ‚ Π² сСкунду Π½Π° систСмС с CPU Intel Core i7-6500U CPU. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ содСрТимого рСгистров ΠΈΠ· Π°Π½ΠΊΠ»Π°Π²Π° Intel SGX (Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 32-разрядного значСния, записанного Π² 64-разрядный рСгистр ΡƒΡˆΠ»ΠΎ 15 ΠΌΠΈΠ½ΡƒΡ‚). НСкоторыС Π²ΠΈΠ΄Ρ‹ Π°Ρ‚Π°ΠΊ оказалось Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° JavaScript ΠΈ WebAssembly, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ физичСский адрСс JavaScript-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ 64-разрядныС рСгистры Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΌ.

Для блокирования Π°Ρ‚Π°ΠΊΠΈ Foreshadow Ρ‡Π΅Ρ€Π΅Π· кэш L3 эффСктивСн ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Spectre-BTB (Branch Target Buffer), Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² Π½Π°Π±ΠΎΡ€Π΅ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ retpoline. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, исслСдоватСли ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ оставлСниС retpoline Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹ΠΌ Π΄Π°ΠΆΠ΅ Π½Π° систСмах с Π½ΠΎΠ²Ρ‹ΠΌΠΈ CPU, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΆΠ΅ имССтся Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ извСстных уязвимостСй Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ спСкулятивного выполнСния инструкций CPU. ΠŸΡ€ΠΈ этом прСдставитСли Intel заявили, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² процСссоры Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ€Ρ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Foreshadow ΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ достаточным Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π°Ρ‚Π°ΠΊ Spectre V2 ΠΈ L1TF (Foreshadow).

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