Amsterdamas BrÄ«vÄs universitÄtes pÄtnieku komanda ir atklÄjusi jaunu ievainojamÄ«bu Intel un ARM procesoru mikroarhitektÅ«rÄ. Å Ä« ievainojamÄ«ba ir paplaÅ”inÄta Spectre-v2 versija, kas ļauj apiet procesoriem pievienotos eIBRS un CSV2 aizsardzÄ«bas mehÄnismus. IevainojamÄ«bai ir doti vairÄki nosaukumi: BHI (Branch History Injection, CVE-2022-0001), BHB (Branch History Buffer, CVE-2022-0002) un Spectre-BHB (CVE-2022-23960), kas apraksta vienas un tÄs paÅ”as problÄmas dažÄdas izpausmes (BHI ir uzbrukums, kas ietekmÄ dažÄdus privilÄÄ£iju lÄ«meÅus, piemÄram, lietotÄja procesu un kodolu, savukÄrt BHB ir uzbrukums vienam privilÄÄ£iju lÄ«menim, piemÄram, eBPF JIT un kodolam).
PÄtnieki ir demonstrÄjuÅ”i funkcionÄjoÅ”u ievainojamÄ«bu, kas ļauj no lietotÄja kodola atmiÅas iegÅ«t patvaļīgus datus. PiemÄram, viÅi demonstrÄ, kÄ sagatavotu ievainojamÄ«bu var izmantot, lai no kodola buferiem iegÅ«tu virkni, kas satur root lietotÄja paroles jaucÄjkodu, kas ielÄdÄts no /etc/shadow faila. IevainojamÄ«ba demonstrÄ iespÄju izmantot ievainojamÄ«bu viena privilÄÄ£iju lÄ«meÅa ietvaros (kodola uzbrukums), izmantojot lietotÄja lejupielÄdÄtu eBPF programmu. eBPF vietÄ ir iespÄjams izmantot arÄ« esoÅ”os Spectre sÄ«krÄ«kus ā komandu secÄ«bas, kas noved pie spekulatÄ«vas instrukciju izpildes.

Å Ä« ievainojamÄ«ba ietekmÄ lielÄko daļu paÅ”reizÄjo Intel procesoru, izÅemot Atom saimi. Starp ARM procesoriem problÄma skar Cortex-A15, Cortex-A57, Cortex-A7*, Cortex-X1, Cortex-X2, Cortex-A710, Neoverse N1, Neoverse N2, Neoverse V1 un, iespÄjams, dažas Cortex-R mikroshÄmas. PÄtÄ«jumi liecina, ka AMD procesori nav ievainojami. Ir ierosinÄti vairÄki programmatÅ«ras risinÄjumi, kurus var izmantot, lÄ«dz nÄkotnes centrÄlo procesoru modeļos tiks ieviesta aparatÅ«ras aizsardzÄ«ba.
Lai bloÄ·Ätu uzbrukumus, izmantojot eBPF apakÅ”sistÄmu, ieteicams pÄc noklusÄjuma atspÄjot iespÄju neprivileÄ£Ätiem lietotÄjiem ielÄdÄt eBPF programmas, ierakstot failÄ "/proc/sys/kernel/unprivileged_bpf_disabled" vÄrtÄ«bu 1 vai izpildot komandu "sysctl -w kernel.unprivileged_bpf_disabled=1". Lai bloÄ·Ätu uzbrukumus, izmantojot sÄ«krÄ«kus, ieteicams izmantot LFENCE instrukciju koda sadaļÄs, kas potenciÄli var novest pie spekulatÄ«vas izpildes. JÄatzÄ«mÄ, ka vairuma Linux distribÅ«ciju noklusÄjuma konfigurÄcija jau ietver nepiecieÅ”amos mazinÄÅ”anas pasÄkumus, kas ir pietiekami, lai bloÄ·Ätu pÄtnieku demonstrÄto eBPF uzbrukumu. Intel ieteikumi par neprivileÄ£Ätas piekļuves eBPF atspÄjoÅ”anu tiek piemÄroti arÄ« pÄc noklusÄjuma, sÄkot ar Linux kodola 5.16 versiju, un tiks pÄrnesti uz agrÄkiem kodola modeļiem.
KonceptuÄli BHI ir paplaÅ”inÄta Spectre-v2 uzbrukuma versija, kas apiet papildu aizsardzÄ«bas lÄ«dzekļus (Intel eIBRS un Arm CSV2) un nopludina datus, aizstÄjot vÄrtÄ«bas Branch History Buffer ā globÄlÄ zaru vÄstures buferÄ«, ko izmanto centrÄlajos procesoros, lai uzlabotu zaru prognozÄÅ”anas precizitÄti, Åemot vÄrÄ iepriekÅ”Äjo zaru vÄsturi. Uzbrukums, manipulÄjot ar zaru vÄsturi, rada apstÄkļus zaru nepareizai prognozÄÅ”anai un nepiecieÅ”amo instrukciju spekulatÄ«vai izpildei, kuru rezultÄti tiek saglabÄti keÅ”atmiÅÄ.
IzÅemot to, ka Branch History Buffer tiek izmantots Branch Target Buffer vietÄ, jaunais uzbrukums ir identisks Spectre-v2. UzbrucÄja mÄrÄ·is ir radÄ«t apstÄkļus, lai spekulatÄ«vas operÄcijas laikÄ iegÅ«tÄ adrese tiktu Åemta no mÄrÄ·a datu apgabala. PÄc spekulatÄ«va netieÅ”a lÄciena izpildes no atmiÅas nolasÄ«tÄ lÄciena adrese paliek keÅ”atmiÅÄ, pÄc kuras to var izgÅ«t, izmantojot vienu no keÅ”atmiÅas satura noteikÅ”anas metodÄm, kas balstÄ«ta uz piekļuves laika variÄciju analÄ«zi starp keÅ”atmiÅÄ saglabÄtajiem un nesaglabÄtajiem datiem.
Avots: opennet.ru
