Bagong diskarte para sa pagsasamantala sa mga kahinaan ng Spectre sa Chrome

Ang isang pangkat ng mga mananaliksik mula sa mga unibersidad sa Amerika, Australian at Israeli ay nagmungkahi ng isang bagong side-channel attack technique upang samantalahin ang mga kahinaan ng Spectre-class sa mga browser batay sa Chromium engine. Ang pag-atake, na may codenamed Spook.js, ay nagbibigay-daan sa iyong i-bypass ang mekanismo ng paghihiwalay ng site sa pamamagitan ng pagpapatakbo ng JavaScript code at basahin ang mga nilalaman ng buong address space ng kasalukuyang proseso, i.e. i-access ang data mula sa mga page na tumatakbo sa iba pang mga tab, ngunit naproseso sa parehong proseso.

Dahil nagpapatakbo ang Chrome ng iba't ibang mga site sa iba't ibang proseso, ang kakayahang magsagawa ng mga praktikal na pag-atake ay limitado sa mga serbisyong nagbibigay-daan sa iba't ibang user na mag-host ng kanilang mga page. Ang pamamaraan ay nagbibigay-daan, mula sa isang pahina kung saan ang umaatake ay may pagkakataon na i-embed ang kanyang JavaScript code, upang matukoy ang presensya ng iba pang mga pahina na binuksan ng user mula sa parehong site at kumuha ng kumpidensyal na impormasyon mula sa kanila, halimbawa, mga kredensyal o mga detalye ng bangko na pinalitan. sa pamamagitan ng sistema ng awtomatikong pagpuno ng mga field sa mga web form. Bilang isang demonstrasyon, ipinapakita kung paano mo maaatake ang blog ng ibang tao sa serbisyo ng Tumblr kung magbubukas ang may-ari nito ng blog ng mga umaatake na naka-host sa parehong serbisyo sa isa pang tab.

Ang isa pang opsyon para sa paggamit ng paraan ay isang pag-atake sa mga add-on ng browser, na nagbibigay-daan, kapag nag-i-install ng add-on na kinokontrol ng attacker, na kumuha ng data mula sa iba pang mga add-on. Bilang halimbawa, ipinapakita namin kung paano sa pamamagitan ng pag-install ng nakakahamak na add-on maaari mong kunin ang kumpidensyal na impormasyon mula sa LastPass password manager.

Nag-publish ang mga mananaliksik ng isang prototype ng pagsasamantala na gumagana sa Chrome 89 sa mga system na may CPUIntel i7-6700K at i7-7600U. Kapag nililikha ang pagsasamantala, ginamit ang mga prototype ng JavaScript code na dati nang na-publish ng Google upang magsagawa ng mga pag-atake sa klase ng Specter. Nabanggit na ang mga mananaliksik ay nakapaghanda ng mga gumaganang pagsasamantala para sa mga system batay sa mga processor ng Intel at Apple M1, na ginagawang posible na ayusin ang pagbabasa ng memorya sa bilis na 500 bytes bawat segundo at isang katumpakan ng 96%. Ipinapalagay na ang pamamaraan ay naaangkop din sa mga processor ng AMD, ngunit hindi posible na maghanda ng isang fully functional na pagsasamantala.

Ang pag-atake ay naaangkop sa anumang mga browser batay sa Chromium engine, kabilang ang Google Chrome, Microsoft Edge at Brave. Naniniwala din ang mga mananaliksik na ang pamamaraan ay maaaring iakma upang gumana sa Firefox, ngunit dahil ang Firefox engine ay ibang-iba sa Chrome, ang gawain sa paglikha ng naturang pagsasamantala ay naiwan para sa hinaharap.

Upang maprotektahan laban sa mga pag-atake na nakabatay sa browser na nauugnay sa haka-haka na pagpapatupad ng mga tagubilin, ipinapatupad ng Chrome ang pagse-segment ng espasyo ng address - ang sandbox isolation ay nagbibigay-daan sa JavaScript na gumana lamang sa mga 32-bit na pointer at nagbabahagi ng memorya ng mga humahawak sa magkahiwalay na 4GB na tambak. Upang magbigay ng access sa buong puwang ng address ng proseso at i-bypass ang 32-bit na limitasyon, gumamit ang mga mananaliksik ng isang pamamaraan na tinatawag na Type Confusion, na pinipilit ang JavaScript engine na iproseso ang isang bagay na may hindi tamang uri, na ginagawang posible na bumuo ng isang 64-bit pointer batay sa isang kumbinasyon ng dalawang 32-bit na halaga.

Ang esensya ng pag-atake ay kapag nagpoproseso ng isang espesyal na idinisenyong malisyosong bagay sa JavaScript engine, ang mga kundisyon ay nilikha na humahantong sa haka-haka na pagpapatupad ng mga tagubilin na nag-a-access sa array. Pinili ang bagay sa paraang ang mga field na kontrolado ng attacker ay inilalagay sa lugar kung saan ginagamit ang 64-bit na pointer. Dahil ang uri ng nakakahamak na bagay ay hindi tumutugma sa uri ng array na pinoproseso, sa ilalim ng normal na mga kundisyon, ang mga naturang pagkilos ay na-block sa Chrome ng isang mekanismo para sa pag-deoptimize ng code na ginagamit upang ma-access ang mga array. Upang malutas ang problemang ito, ang code para sa pag-atake ng Uri ng Pagkalito ay inilalagay sa isang kondisyon na "kung" na bloke, na hindi isinaaktibo sa ilalim ng normal na mga kondisyon, ngunit isinasagawa sa speculative mode, kung ang processor ay hindi wastong hinuhulaan ang karagdagang sangay.

Bilang resulta, ispekulatibong ina-access ng processor ang nabuong 64-bit na pointer at ibabalik ang estado pagkatapos matukoy ang isang nabigong hula, ngunit ang mga bakas ng pagpapatupad ay nananatili sa nakabahaging cache at maaaring maibalik gamit ang mga side-channel na paraan ng pag-detect ng cache na nagsusuri ng mga pagbabago sa mga oras ng pag-access sa naka-cache at hindi naka-cache na data. Upang pag-aralan ang mga nilalaman ng cache sa mga kondisyon na hindi sapat ang katumpakan ng timer na available sa JavaScript, ginagamit ang isang paraan na iminungkahi ng Google, na nililinlang ang diskarte sa pag-alis ng cache ng Tree-PLRU na ginagamit sa mga processor at nagbibigay-daan, sa pamamagitan ng pagtaas ng bilang ng mga cycle, na makabuluhang taasan ang pagkakaiba sa oras kung kailan may value at wala sa cache. .

Pinagmulan: opennet.ru

Magdagdag ng komento