Retbleed — новая Π°Ρ‚Π°ΠΊΠ° Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ спСкулятивного выполнСния CPU Intel ΠΈ AMD

Π“Ρ€ΡƒΠΏΠΏΠ° исслСдоватСлСй ΠΈΠ· ШвСйцарской Π²Ρ‹ΡΡˆΠ΅ΠΉ тСхничСской ΡˆΠΊΠΎΠ»Ρ‹ Π¦ΡŽΡ€ΠΈΡ…Π° выявила Π½ΠΎΠ²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π°Ρ‚Π°ΠΊΠΈ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ спСкулятивного выполнСния косвСнных ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² Π² CPU, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· памяти ядра ΠΈΠ»ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ‚Π°ΠΊΡƒ Π½Π° хост-систСму ΠΈΠ· Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин. Уязвимости ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ имя Retbleed (CVE-2022-29900, CVE-2022-29901) ΠΈ Π±Π»ΠΈΠ·ΠΊΠΈ ΠΏΠΎ своСй сути ΠΊ Π°Ρ‚Π°ΠΊΠ°ΠΌ Spectre-v2. ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ сводится ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ спСкулятивного выполнСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ инструкции «ret» (return), ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‰Π΅ΠΉ адрСс для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΈΠ· стСка, вмСсто косвСнного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ инструкции «jmp» с Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ адрСса ΠΈΠ· памяти ΠΈΠ»ΠΈ рСгистра CPU.

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

Для опрСдСлСния Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ Π² кэшС послС спСкулятивного выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ опрСдСлСния остаточных Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ сторонним ΠΊΠ°Π½Π°Π»Π°ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ доступа ΠΊ ΠΏΡ€ΠΎΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈ Π½Π΅ ΠΏΡ€ΠΎΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ. Для Ρ†Π΅Π»Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ извлСчСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· областСй Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· памяти ядра) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ «Π³Π°Π΄ΠΆΠ΅Ρ‚Ρ‹» — ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² ядрС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹Π΅ для спСкулятивного чтСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· памяти Π² зависимости ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… условий, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ.

Для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ классичСских Π°Ρ‚Π°ΠΊ класса Spectre, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ инструкции условного ΠΈ косвСнного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм примСняСтся Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° «retpoline», основанная Π½Π° Π·Π°ΠΌΠ΅Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ косвСнного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ «ret», для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² процСссорах примСняСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ прСдсказания состояния стСка, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ Π±Π»ΠΎΠΊ прСдсказания ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ². ΠŸΡ€ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠΈ retpoline Π² 2018 Π³ΠΎΠ΄Ρƒ ΡΡ‡ΠΈΡ‚Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π½Π° Spectre манипуляции с адрСсами Π½Π΅ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ для спСкулятивного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ инструкции «ret».

Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π°Ρ‚Π°ΠΊΠΈ Retbleed, продСмонстрировали Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… условий для инициирования спСкулятивного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ инструкции «ret» ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ инструмСнтарий для выявлСния Π² ядрС Linux подходящих для эксплуатации уязвимости ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ инструкций (Π³Π°Π΄ΠΆΠ΅Ρ‚ΠΎΠ²), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ условия.

Π’ Ρ…ΠΎΠ΄Π΅ исслСдования ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ эксплоит, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π½Π° систСмах c CPU Intel ΠΈΠ· Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ процСсса Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· памяти ядра со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ 219 Π±Π°ΠΉΡ‚ Π² сСкунду ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ 98%. На процСссорах AMD ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ эксплоита Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π²Ρ‹ΡˆΠ΅ — ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ составляСт 3.9 ΠšΠ‘ Π² сСкунду. Π’ качСствС практичСского ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ эксплоита ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ содСрТимоС Ρ„Π°ΠΉΠ»Π° /etc/shadow. На систСмах с CPU Intel Π°Ρ‚Π°ΠΊΠ° для опрСдСлСния Ρ…ΡΡˆΠ° пароля ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ root Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° Π·Π° 28 ΠΌΠΈΠ½ΡƒΡ‚, Π° Π½Π° систСмах с CPU AMD — Π·Π° 6 ΠΌΠΈΠ½ΡƒΡ‚.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π° для 6-8 ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ процСссоров Intel, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Π»ΠΈΡΡŒ Π΄ΠΎ 3 ΠΊΠ²Π°Ρ€Ρ‚Π°Π»Π° 2019 Π³ΠΎΠ΄Π° (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Skylake), ΠΈ процСссоров AMD Π½Π° Π±Π°Π·Π΅ ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ Zen 1, Zen 1+ ΠΈ Zen 2, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Π»ΠΈΡΡŒ Π΄ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΊΠ²Π°Ρ€Ρ‚Π°Π»Π° 2021 Π³ΠΎΠ΄Π°. Π’ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Ρ… модСлях процСссоров, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ AMD Zen3 ΠΈ Intel Alder Lake, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² процСссорах ARM, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° блокируСтся ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹. НапримСр, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ инструкций IBRS (Indirect Branch Restricted Speculation) ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Π°Ρ‚Π°ΠΊΠΈ.

Для ядра Linux ΠΈ Π³Π΅ΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π° Xen ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½Π° старых CPU Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ для ядра Linux ΠΏΠ°Ρ‚Ρ‡ измСняСт 68 Ρ„Π°ΠΉΠ»ΠΎΠ², добавляСт 1783 строк ΠΈ удаляСт 387 строк. К соТалСнию Π·Π°Ρ‰ΠΈΡ‚Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ сущСствСнным Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹ΠΌ расходам — Π² ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ… тСкстах Π½Π° процСссорах AMD ΠΈ Intel сниТСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ оцСниваСтся ΠΎΡ‚ 14% Π΄ΠΎ 39%. Π‘ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ являСтся ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π½Π° основС инструкций IBRS, доступных Π² Π½ΠΎΠ²Ρ‹Ρ… поколСниях CPU Intel ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… начиная с ядра Linux 4.19.

На процСссорах Intel подстановка адрСса для спСкулятивного косвСнного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° осущСствляСтся благодаря особСнности, ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‰Π΅ΠΉΡΡ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ (underflow) Π² Π±ΡƒΡ„Π΅Ρ€Π΅ прСдсказания содСрТимого стСка (Return Stack Buffer). ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… условий для инструкции «ret» Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π»ΠΎΠ³ΠΈΠΊΠ° Π²Ρ‹Π±ΠΎΡ€Π° адрСса, аналогичная Ρ‚ΠΎΠΉ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… косвСнных ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°Ρ…. Π’ ядрС Linux Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ тысячи мСст, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΡ… условия инициирования ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ пСрСполнСния ΠΈ доступных Ρ‡Π΅Ρ€Π΅Π· систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹.

На процСссорах AMD спСкулятивноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ инструкции «ret» осущСствляСтся Π±Π΅Π· привязки ΠΊ спСцифичному для стСка Π±ΡƒΡ„Π΅Ρ€Ρƒ (Return Address Stack) ΠΈ Π±Π»ΠΎΠΊ прСдсказания ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² рассматриваСт ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ «ret» Π½Π΅ ΠΊΠ°ΠΊ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ управлСния, Π° ΠΊΠ°ΠΊ косвСнный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄, ΠΈ, соотвСтствСнно, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈ прСдсказании Π΄Π°Π½Π½Ρ‹Π΅ для косвСнных ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ². ΠŸΡ€ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… условиях фактичСски любая опСрация «ret», достиТимая Ρ‡Π΅Ρ€Π΅Π· систСмный Π²Ρ‹Π·ΠΎΠ², ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для эксплуатации.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π² CPU AMD Ρ‚Π°ΠΊΠΆΠ΅ выявлСна Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° (CVE-2022-23825, Branch Type Confusion), связанная с осущСствлСниСм Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² — условия для прСдсказания ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… инструкций вСтвлСния, Ρ‡Ρ‚ΠΎ позволяСт Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π±ΡƒΡ„Π΅Ρ€ прСдсказания ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² Π±Π΅Π· инструкции «ret». Данная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ сущСствСнно услоТняСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ очистки Π±ΡƒΡ„Π΅Ρ€Π° прСдсказании ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ². ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π² ядро ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° 209%.

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