SLAM — Π°Ρ‚Π°ΠΊΠ° Π½Π° CPU Intel, AMD ΠΈ ARM, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ содСрТимоС памяти

Π“Ρ€ΡƒΠΏΠΏΠ° исслСдоватСлСй ΠΈΠ· АмстСрдамского свободного унивСрситСта прСдставила Π½ΠΎΠ²ΡƒΡŽ Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ Π°Ρ‚Π°ΠΊΠΈ SLAM (Spectre Linear Address Masking), ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΡƒΡŽ Π½ΠΎΠ²Ρ‹ΠΉ способ эксплуатации ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… уязвимостСй класса Spectre, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡƒΡ‚Π΅Ρ‡ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… происходит ΠΏΡ€ΠΈ трансляции нСканоничСских адрСсов, Π° для ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ каноничности ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ прСдоставляСмыС Π² Π½ΠΎΠ²Ρ‹Ρ… процСссорах Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для маскировки Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… адрСсов. Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ инструмСнтарий с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° дСмонстрация, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ· памяти ядра Π΄Π°Π½Π½Ρ‹Π΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ маскС (ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ Π·Π° нСсколько дСсятков сСкунд Π² Ubuntu Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΠ· памяти ядра строку с Ρ…ΡΡˆΠ΅ΠΌ пароля ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ root).

Атака ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π° Π½Π° систСмах с процСссорами Intel, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ LAM (Linear Address Masking), процСссорами AMD с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ UAI (Upper Address Ignore) ΠΈ процСссорами ARM с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ TBI (Top Byte Ignore). Π£ΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ Π±ΠΈΡ‚ΠΎΠ² 64-разрядных ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ для хранСния Π½Π΅ связанных с адрСсациСй ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… (для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π΅ трСбуСтся ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ памяти, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π°Π΄Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ 64-разрядныС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, поэтому Π²Π΅Ρ€Ρ…Π½ΠΈΠ΅ Π±ΠΈΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ задСйствованы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ, связанных с обСспСчСниСм бСзопасности). Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ процСссоры Intel, AMD ΠΈ ARM с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ LAM, UAI ΠΈ TBI Π΅Ρ‰Ρ‘ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ анонсированы, Π½ΠΎ массово Π½Π΅ производятся, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ SLAM ΠΏΠ΅Ρ€Π²ΠΎΠΉ спСкулятивной Π°Ρ‚Π°ΠΊΠΎΠΉ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ CPU. Атака Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π° Π½Π° старых CPU AMD Zen+ ΠΈ Zen 2, ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π½Ρ‹Ρ… уязвимости CVE-2020-12965.

По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с эксплуатациСй уязвимостСй Spectre для осущСствлСния Π°Ρ‚Π°ΠΊΠΈ SLAM трСбуСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² ядрС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ инструкций (Π³Π°Π΄ΠΆΠ΅Ρ‚ΠΎΠ²), приводящих ΠΊ спСкулятивному Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ инструкций. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ инструкции приводят ΠΊ спСкулятивному Ρ‡Ρ‚Π΅Π½ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· памяти Π² зависимости ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… условий, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ. ПослС опрСдСлСния ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ спСкулятивного выполнСния отбрасываСтся, Π½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π² кэшС ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Ρ‚Π΅ΠΌ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎ сторонним ΠΊΠ°Π½Π°Π»Π°ΠΌ. Для извлСчСния ΠΎΡΠ΅Π²ΡˆΠΈΡ… Π² кэшС Π΄Π°Π½Π½Ρ‹Ρ… исслСдоватСлями задСйствован ΠΌΠ΅Ρ‚ΠΎΠ΄ Evict+Reload, основанный Π½Π° создании условий для вытСснСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· кэша (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, создаётся Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π°Ρ кэш Ρ‚ΠΈΠΏΠΎΠ²Ρ‹ΠΌ содСрТимым) ΠΈ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, врСмя выполнСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… позволяСт ΡΡƒΠ΄ΠΈΡ‚ΡŒ ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² процСссорном кэшС.

Для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ SLAM ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π³Π°Π΄ΠΆΠ΅Ρ‚Ρ‹ Π½Π° основС ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΌ Π΄Π°Π½Π½Ρ‹Π΅ (Π½ΠΈΠΆΠ΅ пСрСмСнная «secret») ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. НапримСр: void unmasked_gadget(long **secret) { **secret; }

ΠžΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΊΠΎΠ΄Π° часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ядрС Linux выявлСны дСсятки тысяч Ρ‚Π°ΠΊΠΈΡ… Π³Π°Π΄ΠΆΠ΅Ρ‚ΠΎΠ², ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ нСсколько сотСн ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ для использования Π² эксплоитах. Π£Ρ‚Π΅Ρ‡ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π° Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π³Π°Π΄ΠΆΠ΅Ρ‚Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… инструкций, Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… спСкулятивноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Компания Intel Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π° ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ блокирования ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° поставки процСссоров с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ LAM. Компания AMD Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ блокирования Π°Ρ‚Π°ΠΊ класса Spectre v2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ядра Linux для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π°Ρ‚Π°ΠΊΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ LAM Π΄ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ Intel ΠΏΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ уязвимости.

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