Isang pangkat ng mga mananaliksik mula sa Vrije Universiteit Amsterdam ang nakatukoy ng isang bagong kahinaan sa microarchitecture ng mga processor ng Intel at ARM. Ang kahinaang ito ay isang pinalawak na variant ng Spectre-v2, na nagpapahintulot sa pag-bypass ng mga mekanismo ng proteksyon ng eIBRS at CSV2 na idinagdag sa mga processor. Ang kahinaan ay binigyan ng ilang pangalan: BHI (Branch History Injection, CVE-2022-0001), BHB (Branch History Buffer, CVE-2022-0002), at Spectre-BHB (CVE-2022-23960), na naglalarawan ng iba't ibang manipestasyon ng parehong problema (ang BHI ay isang pag-atake na nakakaapekto sa iba't ibang antas ng pribilehiyo, tulad ng proseso ng gumagamit at ang kernel, habang ang BHB ay isang pag-atake sa iisang antas ng pribilehiyo, tulad ng eBPF JIT at ang kernel).
Ipinakita ng mga mananaliksik ang isang gumaganang exploit na nagpapahintulot sa arbitraryong pagkuha ng data mula sa kernel memory mula sa user space. Halimbawa, ipinapakita nila kung paano magagamit ang isang inihandang exploit upang kunin ang isang string na naglalaman ng password hash ng root user, na nilo-load mula sa /etc/shadow file, mula sa mga kernel buffer. Ipinapakita ng exploit ang posibilidad ng pagsasamantala sa isang kahinaan sa loob ng iisang antas ng pribilehiyo (isang kernel-to-kernel attack) gamit ang isang user-downloaded na eBPF program. Posible ring gamitin ang mga umiiral na Spectre gadget, mga command sequence na humahantong sa speculative instruction execution, sa halip na eBPF.

Ang kahinaan ay nakakaapekto sa karamihan ng mga kasalukuyang processor ng Intel, maliban sa pamilyang Atom. Sa mga processor ng ARM, ang isyu ay nakakaapekto sa Cortex-A15, Cortex-A57, Cortex-A7*, Cortex-X1, Cortex-X2, Cortex-A710, Neoverse N1, Neoverse N2, Neoverse V1, at posibleng ilang Cortex-R chips. Iminumungkahi ng pananaliksik na ang mga processor ng AMD ay hindi mahina. Ilang mga pagpapagaan ng software ang iminungkahi, na maaaring gamitin hanggang sa maipakilala ang proteksyon ng hardware sa mga modelo ng CPU sa hinaharap.
Para harangan ang mga pag-atake sa pamamagitan ng eBPF subsystem, inirerekomenda na huwag paganahin ang kakayahan ng mga unprivileged user na mag-load ng mga programang eBPF bilang default sa pamamagitan ng pagsulat ng 1 sa file na "/proc/sys/kernel/unprivileged_bpf_disabled" o pagpapatakbo ng command na "sysctl -w kernel.unprivileged_bpf_disabled=1". Para harangan ang mga pag-atake sa pamamagitan ng mga gadget, inirerekomenda na gamitin ang instruksyon ng LFENCE sa mga seksyon ng code na posibleng humantong sa haka-haka na pagpapatupad. Kapansin-pansin na ang default na configuration ng karamihan sa mga distribusyon ng Linux ay kinabibilangan na ng mga kinakailangang mitigasyon na sapat upang harangan ang pag-atake ng eBPF na ipinakita ng mga mananaliksik. Ang mga rekomendasyon ng Intel para sa pag-disable ng unprivileged access sa eBPF ay inilalapat din bilang default simula sa Linux kernel 5.16 at ibabalik sa mga naunang kernel.
Sa konsepto, ang BHI ay isang pinahabang bersyon ng pag-atakeng Spectre-v2, na lumalampas sa mga karagdagang proteksyon (Intel eIBRS at Arm CSV2) at naglalabas ng datos sa pamamagitan ng pagpapalit ng mga halaga sa Branch History Buffer, isang pandaigdigang branch history buffer na ginagamit sa mga CPU upang mapabuti ang katumpakan ng prediksyon ng branch sa pamamagitan ng pagsasaalang-alang sa kasaysayan ng mga nakaraang branch. Ang pag-atake, sa pamamagitan ng manipulasyon ng kasaysayan ng branch, ay lumilikha ng mga kondisyon para sa maling prediksyon ng branch at haka-haka na pagpapatupad ng mga kinakailangang tagubilin, na ang mga resulta ay naka-cache.
Maliban sa paggamit ng Branch History Buffer sa halip na Branch Target Buffer, ang bagong pag-atake ay kapareho ng Spectre-v2. Ang layunin ng attacker ay lumikha ng mga kondisyon kung saan ang address na kinuha sa panahon ng isang speculative operation ay kinukuha mula sa target data area. Pagkatapos isagawa ang isang speculative indirect jump, ang jump address na nabasa mula sa memorya ay mananatili sa cache, at pagkatapos nito ay maaari itong makuha gamit ang isa sa mga paraan ng pagtukoy ng nilalaman ng cache batay sa pagsusuri ng mga pagkakaiba-iba ng oras ng pag-access sa pagitan ng naka-cache at hindi naka-cache na data.
Pinagmulan: opennet.ru
