Ang LVI ay isang bagong klase ng pag-atake sa speculative execution mechanism sa CPU

Nai-publish impormasyon tungkol sa isang bagong klase ng pag-atake LVI (Load Value Injection, CVE-2020-0551) sa speculative execution mechanism sa mga Intel CPU, na maaaring gamitin para i-leak ang mga key at sikretong data mula sa Intel SGX enclaves at iba pang proseso.

Ang isang bagong klase ng mga pag-atake ay batay sa pagmamanipula ng parehong mga istrukturang microarchitectural na ginagamit sa mga pag-atake MDS (Microarchitectural Data Sampling), Spectre at Meltdown. Kasabay nito, ang mga bagong pag-atake ay hindi hinaharangan ng mga umiiral na paraan ng proteksyon laban sa Meltdown, Spectre, MDS at iba pang katulad na pag-atake. Ang epektibong proteksyon ng LVI ay nangangailangan ng mga pagbabago sa hardware sa CPU. Kapag nag-aayos ng proteksyon sa programmatically, sa pamamagitan ng pagdaragdag ng LFENCE na pagtuturo ng compiler pagkatapos ng bawat operasyon ng pag-load mula sa memorya at pagpapalit ng RET na pagtuturo ng POP, LFENCE at JMP, masyadong maraming overhead ang naitala - ayon sa mga mananaliksik, ang kumpletong proteksyon ng software ay hahantong sa pagbaba sa pagganap ng 2-19 beses.

Bahagi ng kahirapan sa pagharang sa problema ay nababawasan ng katotohanan na ang pag-atake ay kasalukuyang mas theoretical kaysa praktikal (ang pag-atake ay theoretically posible, ngunit napakahirap ipatupad at maaaring kopyahin lamang sa mga sintetikong pagsubok).
Intel iniangkop ang problema ay may katamtamang antas ng panganib (5.6 sa 10) at pinakawalan pag-update ng firmware at SDK para sa kapaligiran ng SGX, kung saan sinubukan nitong harangan ang pag-atake gamit ang isang solusyon. Ang mga iminungkahing paraan ng pag-atake ay kasalukuyang naaangkop lamang sa mga processor ng Intel, ngunit ang posibilidad ng pag-angkop ng LVI para sa iba pang mga processor kung saan naaangkop ang mga pag-atake sa klase ng Meltdown ay hindi maaaring iwasan.

Ang problema ay natukoy noong Abril ng mananaliksik na si Jo Van Bulck mula sa Unibersidad ng Leuven, pagkatapos nito, kasama ang paglahok ng 9 na mananaliksik mula sa iba pang mga unibersidad, limang pangunahing paraan ng pag-atake ang binuo, na bawat isa ay nagbibigay-daan para sa pagkakaroon ng mas tiyak mga pagpipilian. Nang nakapag-iisa, noong Pebrero ng taong ito, ang mga mananaliksik mula sa Bitdefender din natuklasan isa sa mga variant ng pag-atake ng LVI at iniulat ito sa Intel. Ang mga variant ng pag-atake ay nakikilala sa pamamagitan ng paggamit ng iba't ibang istruktura ng microarchitectural, tulad ng storage buffer (SB, Store Buffer), fill buffer (LFB, Line Fill Buffer), FPU context switch buffer at first-level cache (L1D), na dati nang ginamit sa mga pag-atake tulad ng ZombieLoad, RIDL, Fallout, LazyFP, Foreshadow ΠΈ Meltdown.

Ang LVI ay isang bagong klase ng pag-atake sa speculative execution mechanism sa CPU

Ang pangunahing karangalan Ang LVI laban sa mga pag-atake ng MDS ay ang MDS ay nagmamanipula sa pagtukoy ng mga nilalaman ng mga istrukturang microarchitectural na natitira sa cache pagkatapos ng speculative fault handling o load at store operations, habang
Ang mga pag-atake ng LVI ay nagpapahintulot sa data ng umaatake na maipasok sa mga istrukturang microarchitectural upang maimpluwensyahan ang kasunod na haka-haka na pagpapatupad ng code ng biktima. Gamit ang mga manipulasyong ito, maaaring kunin ng isang attacker ang mga nilalaman ng mga pribadong istruktura ng data sa iba pang mga proseso kapag nag-execute ng ilang code sa target na CPU core.

Ang LVI ay isang bagong klase ng pag-atake sa speculative execution mechanism sa CPU

Para sa problema sa pagsasamantala sa code ng proseso ng biktima dapat magkita mga espesyal na pagkakasunud-sunod ng code (mga gadget) kung saan nilo-load ang isang value na kinokontrol ng attacker, at ang pag-load ng value na ito ay nagdudulot ng mga exception (fault, abort o tulong) na itapon, itinatapon ang resulta at muling isagawa ang pagtuturo. Kapag naproseso ang isang pagbubukod, lilitaw ang isang speculative window kung saan tumagas ang data na naproseso sa gadget. Sa partikular, ang processor ay nagsimulang magsagawa ng isang piraso ng code (gadget) sa speculative mode, pagkatapos ay tinutukoy na ang hula ay hindi nabigyang-katwiran at i-roll pabalik ang mga operasyon sa kanilang orihinal na estado, ngunit ang data na naproseso sa panahon ng speculative execution ay idineposito sa L1D cache at microarchitectural buffer at magagamit para sa pagkuha mula sa mga ito gamit ang mga kilalang pamamaraan para sa pagtukoy ng natitirang data sa pamamagitan ng mga third-party na channel.

Ang "assist" exception, hindi katulad ng "fault" exception, ay panloob na pinangangasiwaan ng processor nang hindi tumatawag sa mga humahawak ng software. Maaaring mangyari ang tulong, halimbawa, kapag ang A (Na-access) o D (Dirty) bit sa talahanayan ng memory page ay kailangang i-update. Ang pangunahing kahirapan sa pagsasagawa ng pag-atake sa ibang mga proseso ay kung paano simulan ang paglitaw ng tulong sa pamamagitan ng pagmamanipula sa proseso ng biktima. Sa kasalukuyan ay walang maaasahang mga paraan upang gawin ito, ngunit posible na matagpuan ang mga ito sa hinaharap. Ang posibilidad na magsagawa ng pag-atake sa ngayon ay nakumpirma lamang para sa mga Intel SGX enclave, ang iba pang mga sitwasyon ay teoretikal o maaaring kopyahin sa mga sintetikong kondisyon (nangangailangan ng pagdaragdag ng ilang mga gadget sa code)

Ang LVI ay isang bagong klase ng pag-atake sa speculative execution mechanism sa CPU

Ang LVI ay isang bagong klase ng pag-atake sa speculative execution mechanism sa CPU

Posibleng mga vector ng pag-atake:

  • Ang pagtagas ng data mula sa mga istruktura ng kernel patungo sa proseso sa antas ng user. Ang proteksyon ng kernel ng Linux laban sa mga pag-atake ng Spectre 1, pati na rin ang mekanismo ng proteksyon ng SMAP (Supervisor Mode Access Prevention), ay makabuluhang binabawasan ang posibilidad ng pag-atake ng LVI. Maaaring kailanganin ang pagdaragdag ng karagdagang proteksyon sa kernel kung matutukoy ang mas simpleng paraan ng pag-atake ng LVI sa hinaharap.
  • Ang pagtagas ng data sa pagitan ng iba't ibang proseso. Ang pag-atake ay nangangailangan ng pagkakaroon ng ilang mga piraso ng code sa application at ang kahulugan ng isang paraan para sa paghahagis ng exception sa target na proseso.
  • Pag-leakage ng data mula sa host environment patungo sa guest system. Ang pag-atake ay inuri bilang masyadong kumplikado, na nangangailangan ng iba't ibang mahirap na ipatupad na mga hakbang at hula ng aktibidad sa system.
  • Data leakage sa pagitan ng mga proseso sa iba't ibang guest system. Ang vector ng pag-atake ay malapit sa pag-aayos ng pagtagas ng data sa pagitan ng iba't ibang proseso, ngunit nangangailangan din ito ng mga kumplikadong manipulasyon upang ma-bypass ang paghihiwalay sa pagitan ng mga guest system.

Inilathala ng mga mananaliksik ilan mga prototype na may isang pagpapakita ng mga prinsipyo ng pagsasagawa ng isang pag-atake, ngunit hindi pa ito angkop para sa pagsasagawa ng mga tunay na pag-atake. Ang unang halimbawa ay nagpapahintulot sa iyo na i-redirect ang speculative code execution sa proseso ng biktima, katulad ng return-oriented programming (ROP,Return-Oriented Programming). Sa halimbawang ito, ang biktima ay isang espesyal na inihandang proseso na naglalaman ng mga kinakailangang gadget (mahirap mag-apply ng pag-atake sa mga tunay na proseso ng third-party). Ang pangalawang halimbawa ay nagbibigay-daan sa amin na i-wedge ang ating mga sarili sa mga kalkulasyon sa panahon ng AES encryption sa loob ng Intel SGX enclave at ayusin ang isang data leak sa panahon ng speculative execution ng mga tagubilin upang maibalik ang halaga ng key na ginamit para sa encryption.


Pinagmulan: opennet.ru

Magdagdag ng komento