BHI ir jauna Spectre klases ievainojamība Intel un ARM procesoros

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.

Play video

Å Ä« 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