BHI Π΅ Π½ΠΎΠ²Π° уязвимост ΠΎΡ‚ клас Spectre Π² процСсори Intel ΠΈ ARM

Π•ΠΊΠΈΠΏ ΠΎΡ‚ изслСдоватСли ΠΎΡ‚ Бвободния унивСрситСт Π² АмстСрдам ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π° Π½ΠΎΠ²Π° уязвимост Π² ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΈΡ‚Π΅ структури Π½Π° процСсоритС Intel ΠΈ ARM, която Π΅ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½Π° вСрсия Π½Π° уязвимостта Spectre-v2, която позволява заобикалянС Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈΡ‚Π΅ Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° eIBRS ΠΈ CSV2, Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ към процСсоритС. На уязвимостта са Π΄Π°Π΄Π΅Π½ΠΈ няколко ΠΈΠΌΠ΅Π½Π°: BHI (Π˜Π½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° история Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, CVE-2022-0001), BHB (Π‘ΡƒΡ„Π΅Ρ€ Π·Π° история Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, CVE-2022-0002) ΠΈ Spectre-BHB (CVE-2022-23960), ΠΊΠΎΠΈΡ‚ΠΎ описват Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ прояви Π½Π° ΡΡŠΡ‰ΠΈΡΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ (BHI - Π°Ρ‚Π°ΠΊΠ°, която засяга Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½ΠΈΠ²Π° Π½Π° привилСгия, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ потрСбитСлски процСс ΠΈ ядрото, BHB - Π°Ρ‚Π°ΠΊΠ° Π½Π° ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° привилСгия, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ eBPF JIT ΠΈ ядрото).

Π˜Π·ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ дСмонстрираха Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ Сксплойт, ΠΊΠΎΠΉΡ‚ΠΎ позволява Π½Π° потрСбитСлското пространство Π΄Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° ядрото. НапримСр, ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΅ ΠΊΠ°ΠΊ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° подготвСния Сксплойт Π΅ възмоТно Π΄Π° сС ΠΈΠ·Π²Π»Π΅Ρ‡Π΅ ΠΎΡ‚ Π±ΡƒΡ„Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° ядрото Π½ΠΈΠ· с Ρ…Π΅Ρˆ Π½Π° ΠΏΠ°Ρ€ΠΎΠ»Π°Ρ‚Π° Π½Π° потрСбитСля root, Π·Π°Ρ€Π΅Π΄Π΅Π½ ΠΎΡ‚ Ρ„Π°ΠΉΠ»Π° /etc/shadow. Π•ΠΊΡΠΏΠ»ΠΎΠΉΡ‚ΡŠΡ‚ дСмонстрира способността Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° уязвимостта Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π΅Π΄Π½ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° привилСгия (Π°Ρ‚Π°ΠΊΠ° ΠΎΡ‚ ядро ​​до ядро), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π·Π°Ρ€Π΅Π΄Π΅Π½Π° ΠΎΡ‚ потрСбитСля eBPF ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ вмСсто eBPF Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅ Π² ΠΊΠΎΠ΄Π° Π½Π° ядрото приспособлСния Spectre, послСдоватСлности ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π²ΠΎΠ΄Π΅Ρ‰ΠΈ Π΄ΠΎ спСкулативно изпълнСниС Π½Π° инструкции, ΡΡŠΡ‰ΠΎ Π½Π΅ Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½Π°.

Уязвимостта сС появява Π² ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ процСсори Π½Π° Intel, с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° процСсоритС ΠΎΡ‚ сСмСйството Atom. ΠžΡ‚ ARM процСсоритС са засСгнати Cortex-A15, Cortex-A57, Cortex-A7*, Cortex-X1, Cortex-X2, Cortex-A710, Neoverse N1, Neoverse N2, Neoverse V1 ΠΈ вСроятно някои Ρ‡ΠΈΠΏΠΎΠ²Π΅ Cortex-R. Π‘ΠΏΠΎΡ€Π΅Π΄ изслСдвания уязвимостта Π½Π΅ сС проявява Π² процСсоритС Π½Π° AMD. Π—Π° отстраняванС Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° са ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ няколко софтуСрни ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° уязвимостта, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΏΡ€Π΅Π΄ΠΈ появата Π½Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π² Π±ΡŠΠ΄Π΅Ρ‰ΠΈΡ‚Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ CPU.

Π—Π° Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ Π°Ρ‚Π°ΠΊΠΈ ΠΏΡ€Π΅Π· подсистСмата eBPF, сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° eBPF ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ ΠΎΡ‚ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ 1 във Ρ„Π°ΠΉΠ»Π° β€ž/proc/sys/kernel/unprivileged_bpf_disabledβ€œ ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žsysctl -w kernel .unprivileged_bpf_disabled=1". Π—Π° Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ Π°Ρ‚Π°ΠΊΠΈ Ρ‡Ρ€Π΅Π· Π΄ΠΆΠ°Π΄ΠΆΠΈ, сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ инструкцията LFENCE Π² сСкциитС Π½Π° ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ водят Π΄ΠΎ спСкулативно изпълнСниС. Врябва Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ, Ρ‡Π΅ конфигурацията ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Linux дистрибуции Π²Π΅Ρ‡Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ ΠΌΠ΅Ρ€ΠΊΠΈ Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π°, Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΈ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° eBPF Π°Ρ‚Π°ΠΊΠ°Ρ‚Π°, дСмонстрирана ΠΎΡ‚ изслСдоватСлитС. ΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠΈΡ‚Π΅ Π½Π° Intel Π·Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ eBPF ΡΡŠΡ‰ΠΎ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, ΠΊΠ°Ρ‚ΠΎ сС Π·Π°ΠΏΠΎΡ‡Π½Π΅ с ядрото Π½Π° Linux 5.16 ΠΈ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ прСнСсСни към ΠΏΠΎ-Ρ€Π°Π½Π½ΠΈ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»Π½ΠΎ, BHI Π΅ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° Π°Ρ‚Π°ΠΊΠ°Ρ‚Π° Spectre-v2, ΠΏΡ€ΠΈ която сС заобикаля Π΄ΠΎΠ±Π°Π²Π΅Π½Π°Ρ‚Π° Π·Π°Ρ‰ΠΈΡ‚Π° (Intel eIBRS ΠΈ Arm CSV2) ΠΈ сС ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π° ΠΈΠ·Ρ‚ΠΈΡ‡Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ, замСстванС Π½Π° стойности Π² Π±ΡƒΡ„Π΅Ρ€Π° с Π³Π»ΠΎΠ±Π°Π»Π½Π° история Π½Π° разклонСнията (Branch History Buffer ), ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² процСсора Π·Π° подобряванС Π½Π° разклоняванСто Π½Π° точността Π½Π° ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€Π°Π½Π΅ Ρ‡Ρ€Π΅Π· ΠΎΡ‚Ρ‡ΠΈΡ‚Π°Π½Π΅ Π½Π° историята Π½Π° ΠΌΠΈΠ½Π°Π»ΠΈ ΠΏΡ€Π΅Ρ…ΠΎΠ΄ΠΈ. Π’ Ρ…ΠΎΠ΄Π° Π½Π° Π°Ρ‚Π°ΠΊΠ° Ρ‡Ρ€Π΅Π· ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ†ΠΈΠΈ с историята Π½Π° ΠΏΡ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ условия Π·Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€Π΅Ρ…ΠΎΠ΄Π° ΠΈ спСкулативното изпълнСниС Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ инструкции, Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΎΡ‚ ΠΊΠΎΠ΅Ρ‚ΠΎ сС установява Π² кСша.

Π‘ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Branch History Buffer вмСсто Branch Target Buffer, Π½ΠΎΠ²Π°Ρ‚Π° Π°Ρ‚Π°ΠΊΠ° Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Π° Π½Π° Spectre-v2. Π—Π°Π΄Π°Ρ‡Π°Ρ‚Π° Π½Π° нападатСля Π΅ Π΄Π° създадС Ρ‚Π°ΠΊΠΈΠ²Π° условия, Ρ‡Π΅ Π°Π΄Ρ€Π΅ΡΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° спСкулативна опСрация, Π΄Π° бъдС Π²Π·Π΅Ρ‚ ΠΎΡ‚ областта Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ сС опрСдСлят. Π‘Π»Π΅Π΄ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° спСкулативСн ΠΈΠ½Π΄ΠΈΡ€Π΅ΠΊΡ‚Π΅Π½ скок Π°Π΄Ρ€Π΅ΡΡŠΡ‚ Π·Π° скок, ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Π½ ΠΎΡ‚ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, остава Π² кСша, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° опрСдСлянС Π½Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° кСша ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ въз основа Π½Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ във Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½ΠΈΡ‚Π΅ ΠΈ Π½Π΅ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½ΠΈ Π΄Π°Π½Π½ΠΈ.

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

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