Уязвимост Π² спСкулативния ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° изпълнСниС Π½Π° AMD процСсори

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Grsecurity ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° подробности ΠΈ дСмонстрация Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π° Π°Ρ‚Π°ΠΊΠ° Π·Π° Π½ΠΎΠ²Π° уязвимост (CVE-2021-26341) Π² процСсоритС Π½Π° AMD, ΡΠ²ΡŠΡ€Π·Π°Π½Π° със спСкулативното изпълнСниС Π½Π° инструкции слСд бСзусловни ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°ΠΏΡ€Π΅Π΄. Ако Π°Ρ‚Π°ΠΊΠ°Ρ‚Π° Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½Π°, уязвимостта позволява Π΄Π° сС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ области Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. НапримСр, изслСдоватСлитС са ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈΠ»ΠΈ Сксплойт, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠΌ позволява Π΄Π° опрСдСлят ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° адрСса ΠΈ Π΄Π° заобиколят защитния ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ KASLR (рандомизация Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° ядрото), ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΡ‚ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ ΠΊΠΎΠ΄ Π² подсистСмата Π½Π° ядрото ePBF. Π”Ρ€ΡƒΠ³ΠΈ сцСнарии Π½Π° Π°Ρ‚Π°ΠΊΠ° Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π±ΠΈΡ…Π° ΠΌΠΎΠ³Π»ΠΈ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π°Ρ‚ Π΄ΠΎ ΠΈΠ·Ρ‚ΠΈΡ‡Π°Π½Π΅ Π½Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° ядрото.

Уязвимостта Π²ΠΈ позволява Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ условия, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΎΡ†Π΅ΡΠΎΡ€ΡŠΡ‚, ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΡ€Π΅Π²Π°Π½Ρ‚ΠΈΠ²Π½ΠΎ изпълнСниС, спСкулативно ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° инструкцията нСпосрСдствСно слСд инструкцията Π·Π° прСскачанС Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° (SLS, Straight Line Speculation). ОсвСн Ρ‚ΠΎΠ²Π° Ρ‚Π°ΠΊΠ°Π²Π° оптимизация Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π΅ само Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ Π·Π° условСн скок, Π½ΠΎ ΠΈ Π·Π° инструкции, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π΅Π½ бСзусловСн скок, ΠΊΠ°Ρ‚ΠΎ JMP, RET ΠΈ CALL. Π‘Π»Π΅Π΄ бСзусловни инструкции Π·Π° прСскачанС ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС поставят ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ Π·Π° изпълнСниС. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ установи, Ρ‡Π΅ Ρ€Π°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π²Π° изпълнСниС Π½Π° слСдващата инструкция, ΠΏΡ€ΠΎΡ†Π΅ΡΠΎΡ€ΡŠΡ‚ просто Π²Ρ€ΡŠΡ‰Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π°Π·Π°Π΄ ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π° спСкулативното изпълнСниС, Π½ΠΎ слСдата ΠΎΡ‚ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° инструкцията остава Π² сподСлСния кСш ΠΈ Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½Π° Π·Π° Π°Π½Π°Π»ΠΈΠ· с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° страничСн ΠΊΠ°Π½Π°Π».

ΠšΠ°ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈ Сксплоатацията Π½Π° уязвимостта Spectre-v1, Π°Ρ‚Π°ΠΊΠ°Ρ‚Π° изисква Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ послСдоватСлности ΠΎΡ‚ инструкции (Π΄ΠΆΠ°Π΄ΠΆΠΈ) Π² ядрото, ΠΊΠΎΠΈΡ‚ΠΎ водят Π΄ΠΎ спСкулативно изпълнСниС. Π‘Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° уязвимост Π² Ρ‚ΠΎΠ·ΠΈ случай сС свСТда Π΄ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Π°ΠΊΠΈΠ²Π° Π΄ΠΆΠ°Π΄ΠΆΠΈ Π² ΠΊΠΎΠ΄Π° ΠΈ добавянС Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ инструкции към тях, ΠΊΠΎΠΈΡ‚ΠΎ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚ спСкулативното изпълнСниС. Условия Π·Π° спСкулативно изпълнСниС ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ създадСни ΠΈ ΠΎΡ‚ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ във Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° машина Π½Π° eBPF. Π—Π° Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° създаванС Π½Π° ΠΏΡ€ΠΈΡ‚ΡƒΡ€ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° eBPF, сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ eBPF Π² систСмата (β€œsysctl -w kernel.unprivileged_bpf_disabled=1”).

Уязвимостта засяга процСсори, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Zen1 ΠΈ Zen2, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΡŠΡ€Π²ΠΎ ΠΈ Π²Ρ‚ΠΎΡ€ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ процСсори AMD EPYC ΠΈ AMD Ryzen Threadripper, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper ΠŸΡ€ΠΎΡ†Π΅ΡΠΎΡ€ΠΈ ΠΎΡ‚ сСрията PRO ΠΈ APU A. Π—Π° Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ спСкулативното изпълнСниС Π½Π° инструкции, сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°Ρ‚Π΅ инструкции INT3 ΠΈΠ»ΠΈ LFENCE слСд ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° разклоняванС (RET, JMP, CALL).

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€