TikTag — Π°Ρ‚Π°ΠΊΠ° Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ спСкулятивного выполнСния Π² CPU ARM, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρƒ MemTag

Π“Ρ€ΡƒΠΏΠΏΠ° исслСдоватСлСй ΠΈΠ· Π‘Π΅ΡƒΠ»ΡŒΡΠΊΠΎΠ³ΠΎ унивСрситСта ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Samsung Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ Π°Ρ‚Π°ΠΊΠΈ Π½Π° процСссоры ARM, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΡƒΡŽ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ имя TikTag, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΎΠ±Ρ…ΠΎΠ΄Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π°Ρ‰ΠΈΡ‚Ρ‹ MemTag (MTE, Memory Tagging Extension), ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π² Ρ‡ΠΈΠΏΠ°Ρ… Π½Π° Π±Π°Π·Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ARMv8.5-A. Атака позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ содСрТимоС Ρ‚Π΅Π³ΠΎΠ² TikTag для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… адрСсов памяти ΠΈΠ·-Π·Π° ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ спСкулятивного выполнСния инструкций CPU.

ВСхнология MemTag Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ Ρ‚Π΅Π³ΠΈ ΠΊ областям Π² памяти ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ коррСктности использования ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ для блокирования эксплуатации уязвимостСй, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΡƒΠΆΠ΅ освобоТдённым Π±Π»ΠΎΠΊΠ°ΠΌ памяти, ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π±ΡƒΡ„Π΅Ρ€Π° ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ использовании MemTag для ΠΊΠ°ΠΆΠ΄Ρ‹Ρ… 16 Π±Π°ΠΉΡ‚ физичСской памяти создаётся 4-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ Ρ‚Π΅Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выступаСт ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π° для доступа ΠΊ этой памяти. Π’Π΅Π³ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сгСнСрирован ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ для выдСляСмой области памяти ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… инструкций CPU, ΠΈ Π·Π°Ρ‚Π΅ΠΌ сохранён Π² Π²Π΅Ρ€Ρ…Π½ΠΈΡ… Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π±ΠΈΡ‚Π°Ρ… указатСля. ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ памяти с использованиСм Ρ‚Π΅Π³Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ указатСля, процСссор провСряСт соотвСтствиС Ρ‚Π΅Π³Π°, привязанного ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ, с Ρ‚Π΅Π³Π°ΠΌΠΈ, привязанными ΠΊ Π±Π»ΠΎΠΊΠ°ΠΌ памяти, ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Ρ‚Π΅Π³ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚.

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π°Ρ‚Π°ΠΊΠΈ позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ привязанныС ΠΊ Π±Π»ΠΎΠΊΠ°ΠΌ памяти Ρ‚Π΅Π³ΠΈ ΠΈ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρƒ MemTag. Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ продСмонстрирована Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ осущСствлСния Π°Ρ‚Π°ΠΊΠΈ TikTag ΠΏΡ€ΠΈ эксплуатации уязвимостСй Π² ядрС Linux ΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Chrome, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ инструкций (Π³Π°Π΄ΠΆΠ΅Ρ‚Ρ‹), приводящиС ΠΊ спСкулятивному Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π°. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π³Π°Π΄ΠΆΠ΅Ρ‚Ρ‹ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π² спСкулятивном Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΊΠΎΠ΄Π°, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ с указатСлями, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… MemTag Π² зависимости ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… условий, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ. ПослС опрСдСлСния ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ спСкулятивного выполнСния отбрасываСтся, Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π² кэшС ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Ρ‚Π΅ΠΌ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎ сторонним ΠΊΠ°Π½Π°Π»Π°ΠΌ. Π’Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ…ΠΎΠ΄Π° Π·Π°Ρ‰ΠΈΡ‚Ρ‹ MemTag Π² ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ… тСстах ΠΎΡ†Π΅Π½Π΅Π½Π° Π² 95% ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π°Ρ‚Π°ΠΊΠΈ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 4 сСкунд.

TikTag - Π°Ρ‚Π°ΠΊΠ° Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ спСкулятивного выполнСния Π² CPU ARM, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρƒ MemTag

ВыявлСно Π΄Π²Π° Π²ΠΈΠ΄Π° Π³Π°Π΄ΠΆΠ΅Ρ‚ΠΎΠ², приводящих ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ΅ свСдСния ΠΎ Ρ‚Π΅Π³Π°Ρ… MemTag. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС спСкулятивноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠΌ прСдсказании ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°, Π° условия для выполнСния Π³Π°Π΄ΠΆΠ΅Ρ‚Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы Ρ‡Π΅Ρ€Π΅Π· манипуляции с систСмными Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС
спСкулятивноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΠ·-Π·Π° ошибки прСдсказания взаимосвязи ΠΌΠ΅ΠΆΠ΄Ρƒ опСрациями чтСния ΠΈ записи ΠΏΡ€ΠΈ использовании ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ STLF (Store-To-Load-Forwarding), Ρ‡Ρ‚ΠΎ позволяСт ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚Π΅Π³, оцСнивая состояниС кэша (Ссли Ρ‚Π΅Π³ совпадаСт, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ «store» Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ «load» ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ состояниС кэша). ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²ΠΈΠ΄ Π³Π°Π΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π°Ρ‚Π°ΠΊΠΈ Π½Π° ядро Linux, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π½Π° JavaScript-Π΄Π²ΠΈΠΆΠΎΠΊ V8, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… Π½Π° Π±Π°Π·Π΅ Chromium. ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ инструмСнтария для провСдСния Π°Ρ‚Π°ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π½Π° GitHub.

TikTag - Π°Ρ‚Π°ΠΊΠ° Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ спСкулятивного выполнСния Π² CPU ARM, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρƒ MemTagTikTag - Π°Ρ‚Π°ΠΊΠ° Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ спСкулятивного выполнСния Π² CPU ARM, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρƒ MemTag

Компания ARM ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ Π½Π° систСмах с процСссорами Cortex-X2, Cortex-X3, Cortex-A510, Cortex-A520, Cortex-A710, Cortex-A715 ΠΈ Cortex-A720, Π½ΠΎ Π½Π΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π° Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² CPU для блокирования ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° MemTag ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Π³ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ сСкрСтными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ Chromium ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ‚Π°ΠΊΠΆΠ΅ остаётся нСисправлСнной, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Chrome Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° основС MemTag ΠΏΠΎΠΊΠ° Π½Π΅ примСняСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Команда, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π°Ρ Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Android, ΠΏΡ€ΠΈΠ·Π½Π°Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ Π½Π° устройства Pixel 8, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… примСняСтся Π·Π°Ρ‰ΠΈΡ‚Π° MemTag, Π΄ΠΎΠ±Π°Π²ΠΈΠ»Π° исправлСния для блокирования ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ ΠΈ Π²Ρ‹Ρ€Π°Π·ΠΈΠ»Π° Π³ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π²ΠΎΠ·Π½Π°Π³Ρ€Π°ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π° Π½Π°ΠΉΠ΄Π΅Π½Π½ΡƒΡŽ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ.

Π’ качСствС ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для блокирования Π°Ρ‚Π°ΠΊΠΈ исслСдоватСли ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструкции sb ΠΈΠ»ΠΈ isb для Π·Π°ΠΏΡ€Π΅Ρ‚Π° спСкулятивного выполнСния Π²ΠΎ врСмя ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ критичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ инструкциями вСтвлСния ΠΈ инструкциями доступа ΠΊ памяти Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… инструкций.

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