ΠžΠ±Ρ…ΠΎΠ΄ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π°Ρ‚Π°ΠΊ Spectre ΠΈ эксплоит для извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· памяти Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ процСсса

Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈΠ· ШвСйцарской Π²Ρ‹ΡΡˆΠ΅ΠΉ тСхничСской ΡˆΠΊΠΎΠ»Ρ‹ Π¦ΡŽΡ€ΠΈΡ…Π° выявили Π΄Π²Π° способа ΠΎΠ±Ρ…ΠΎΠ΄Π° Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π°Ρ‚Π°ΠΊ класса Spectre, основанной Π½Π° использовании процСссорных инструкций IBPB (Indirect Branch Prediction Barriers) для сброса состояния Π±Π»ΠΎΠΊΠ° прСдсказания ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ контСкста (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ управлСния ΠΌΠ΅ΠΆΠ΄Ρƒ пространством ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² ядром ΠΈΠ»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ гостСвой систСмой ΠΈ хост ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ). ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ процСссоры Intel, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ — процСссоры AMD. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, исслСдоватСли Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ эксплоит, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Spectre для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ содСрТимого памяти ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами, ΠΈ продСмонстрировали Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ для извлСчСния ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ ΠΈΠ· памяти suid-процСссов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ sudo, su ΠΈ polkit.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ ΠΎΠ±Ρ…ΠΎΠ΄Π° Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Spectre Π²Ρ‹Π·Π²Π°Π½ ошибкой Π² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄Π΅ процСссоров Intel ΠΈ проявляСтся Π½Π° систСмах с 12, 13 ΠΈ 14 ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ΠΌ процСссоров Intel Core ΠΈ 5 ΠΈ 6 ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ΠΌ процСссоров Intel Xeon. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° устранСна Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄Π°, Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Intel Π² ΠΌΠ°Ρ€Ρ‚Π΅. Из-Π·Π° ошибки Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ прСдсказания ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² ΡΠΎΡ…Ρ€Π°Π½ΡΠ»ΠΈΡΡŒ послС выполнСния инструкции IBPB, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° ΠΈΡ… Π°Π½Π½ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ позволяло ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ послС спСкулятивного выполнСния инструкций Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссах ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ….

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

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

ΠžΠ±Ρ…ΠΎΠ΄ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π°Ρ‚Π°ΠΊ Spectre ΠΈ эксплоит для извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· памяти Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ процСсса

Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ ΠΎΠ±Ρ…ΠΎΠ΄Π° Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Spectre Π²Ρ‹Π·Π²Π°Π½ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Ρ‚Π°Π»ΠΈ использования инструкций IBPB ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π² процСссорах ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΈ Π² Ρ€Π°Π·Π½Ρ‹Ρ… поколСниях процСссоров ΠΎΠ΄Π½ΠΎΠ³ΠΎ производитСля. Из-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ сСмантика IBPB Π² ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… поколСниях процСссоров AMD отличаСтся ΠΎΡ‚ сСмантики Π² CPU Intel ΠΈ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ CPU AMD, Π² ядрС Linux ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ отличия Π½Π΅ Π±Ρ‹Π»ΠΈ ΡƒΡ‡Ρ‚Π΅Π½Ρ‹ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π±Ρ‹Π»ΠΈ Π½Π΅ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ВСроятно, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах ΠΈ Π² Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π°Ρ…, Π½ΠΎ Π² Ρ…ΠΎΠ΄Π΅ исслСдования Π±Ρ‹Π»ΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ядро Linux, Π² силу доступности Π΅Π³ΠΎ исходного ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π° Π² процСссорах AMD поколСния Zen, Zen2 ΠΈ Zen3 (ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π° систСмах с Zen3 Π½Π΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Ρ‹ исслСдоватСлями, Π½ΠΎ упомянуты Π² ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π΅ AMD) ΠΈ устраняСтся Ρ‡Π΅Ρ€Π΅Π· установку обновлСния ядра (ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ для исправлСния ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ ΠΏΠ°Ρ‚Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ° Π½Π΅ принят Π² основной состав ядра Linux).

Для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ уязвимостСй, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Ρ… спСкулятивным Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ инструкций, ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ управлСния ядро Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ IBPB для сброса Π±ΡƒΡ„Π΅Ρ€Π° прСдсказаний ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ². ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²Ρ‹Π·Π²Π°Π½Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… систСмах AMD ΠΏΠΎΠΌΠΈΠΌΠΎ очистки прСдсказания ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² трСбуСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ очистка прСдсказания адрСсов Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² инструкциях RET. Для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ Π½Π° систСмах с CPU AMD Zen ΠΈ Zen2 Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠΆΠ½ΠΎΠ΅ прСдсказаниС адрСса Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ IBPB. Π’ качСствС дСмонстрации ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ эксплоит, ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‰ΠΈΠΉ содСрТимоС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… областСй памяти ядра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для извлСчСния Ρ…ΡΡˆΠ° пароля ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ root ΠΈΠ· страничного кэша ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.



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