Gipakita sa Google ang pagpahimulos sa mga kahuyangan sa Spectre pinaagi sa pagpatuman sa JavaScript sa browser

Gipatik sa Google ang daghang mga prototype sa pagpahimulos nga nagpakita sa posibilidad sa pagpahimulos sa mga kahuyangan sa klase sa Specter kung gipatuman ang code sa JavaScript sa usa ka browser, nga wala’y gidugang kaniadto nga mga pamaagi sa pagpanalipod. Ang mga pagpahimulos mahimong magamit aron makakuha og access sa memorya sa usa ka proseso nga nagproseso sa sulud sa web sa kasamtangan nga tab. Aron masulayan ang operasyon sa pagpahimulos, ang site leaky.page gilunsad, ug ang code nga naghulagway sa lohika sa trabaho gi-post sa GitHub.

Ang gisugyot nga prototype gidesinyo sa pag-atake sa mga sistema nga adunay Intel Core i7-6500U nga mga processor sa usa ka Linux ug Chrome 88 nga palibot. Kinahanglan ang mga pagbag-o aron magamit ang pagpahimulos sa ubang mga palibot. Ang pamaagi sa pagpahimulos dili espesipiko sa mga processor sa Intel - pagkahuman sa angay nga pagpahiangay, ang pagpahimulos gikumpirma nga molihok sa mga sistema nga adunay mga CPU gikan sa ubang mga tiggama, lakip ang Apple M1 base sa arkitektura sa ARM. Pagkahuman sa ginagmay nga mga pag-adjust, ang pagpahimulos magamit usab sa ubang mga operating system ug uban pang mga browser nga gibase sa makina sa Chromium.

Sa usa ka palibot nga gibase sa standard nga Chrome 88 ug Intel Skylake nga mga processor, na-leak ang data gikan sa proseso nga responsable sa pagproseso sa web content sa kasamtangan nga tab sa Chrome (proseso sa renderer), sa gikusgon nga 1 kilobyte kada segundo. Dugang pa, ang mga alternatibong prototype gihimo, pananglitan, usa ka pagpahimulos nga nagtugot, sa gasto sa pagkunhod sa kalig-on, aron madugangan ang leakage rate sa 8kB / s kung gamiton ang performance.now() timer nga adunay katukma nga 5 microseconds (0.005 milliseconds) . Giandam usab ang usa ka variant, nga nagtrabaho uban ang katukma sa timer nga usa ka millisecond, nga magamit sa pag-organisar sa pag-access sa memorya sa laing proseso sa gikusgon nga mga 60 bytes matag segundo.

Ang gipatik nga demo code naglangkob sa tulo ka bahin. Ang unang bahin nag-calibrate sa timer aron mabanabana ang oras sa pagpatuman sa mga operasyon nga gikinahanglan aron mapasig-uli ang datos nga nahabilin sa cache sa processor isip resulta sa espekulatibo nga pagpatuman sa mga instruksiyon sa CPU. Ang ikaduha nga bahin nagtino sa layout sa memorya nga gigamit sa paggahin sa JavaScript array.

Ang ikatulo nga bahin direkta nga gipahimuslan ang kahuyang sa Spectre aron mahibal-an ang sulud sa panumduman sa karon nga proseso ingon usa ka sangputanan sa pagmugna og mga kondisyon alang sa espekulatibo nga pagpatuman sa pipila nga mga operasyon, ang sangputanan nga gilabay sa processor human matino ang usa ka dili malampuson nga panagna, apan ang pagpatuman. Ang mga pagsubay gi-deposito sa kinatibuk-ang cache ug mahimong ibalik gamit ang mga pamaagi sa pagtino sa mga sulud sa cache pinaagi sa mga third-party nga channel nga nag-analisar sa mga pagbag-o sa oras sa pag-access sa cache ug non-cached nga datos.

Ang gisugyot nga teknik sa pagpahimulos nagwagtang sa mga high-precision timers nga magamit pinaagi sa performance.now() API, ug walay suporta alang sa SharedArrayBuffer type, nga nagtugot sa paghimo og arrays sa shared memory. Ang pagpahimulos naglakip sa Spectre gadget, nga maoy hinungdan sa kontrolado nga speculative code execution, ug usa ka side-channel leak analyzer, nga nagtino sa datos nga nakuha atol sa speculative execution nga nasulod sa cache.

Gipatuman ang gadyet gamit ang JavaScript array, diin gihimo ang pagsulay sa pag-access sa usa ka lugar sa gawas sa mga utlanan sa buffer, nga nakaapekto sa estado sa block sa prediksyon sa sanga tungod sa buffer size check nga gidugang sa compiler (ang processor, nagtan-aw sa unahan. , ispekulatibo nga naghimo sa pag-access, apan gibalik ang estado pagkahuman sa tseke). Sa pag-analisar sa mga sulod sa cache ubos sa mga kondisyon sa dili igo nga timer tukma, usa ka pamaagi ang gisugyot nga paglimbong sa Tree-PLRU cache eviction estratehiya nga gigamit sa processors ug nagtugot, pinaagi sa pagdugang sa gidaghanon sa mga cycle, sa kamahinungdanon sa pagdugang sa kalainan sa panahon sa pagbalik sa usa ka. bili gikan sa cache ug sa diha nga walay bili sa cache.

Namatikdan nga ang Google nagpatik sa usa ka prototype nga pagpahimulos aron ipakita ang realismo sa mga pag-atake gamit ang mga kahuyangan sa klase sa Spectre ug aron madasig ang mga web developer sa paggamit sa mga teknik nga makapamenos sa mga peligro gikan sa ingon nga mga pag-atake. Sa parehas nga oras, ang Google nagtuo nga kung wala’y hinungdanon nga pagbag-o sa gisugyot nga prototype, imposible ang paghimo sa mga unibersal nga pagpahimulos nga andam dili lamang alang sa demonstrasyon, kondili alang usab sa kaylap nga paggamit.

Aron makunhuran ang risgo, giawhag ang mga tag-iya sa site nga gamiton ang bag-o lang gipatuman nga Cross-Origin Opener Policy (COOP), Cross-Origin Embedder Policy (COEP), Cross-Origin Resource Policy (CORP), Fetch Metadata Request, X-Frame-Options, X -Content-Type-Options ug SameSite Cookies. Kini nga mga mekanismo dili direkta nga manalipod batok sa mga pag-atake, apan gitugotan ang paglain sa datos sa site gikan sa pagtulo ngadto sa mga proseso diin ang JavaScript code sa tig-atake mahimong ipatuman (ang pagtulo mahitabo gikan sa panumduman sa kasamtangan nga proseso, diin, dugang pa sa code sa tig-atake, data gikan sa laing site nga giablihan sa samang tab). Ang panguna nga ideya mao ang pagbulag sa lainlaing mga proseso ang pagpatuman sa code sa site gikan sa code sa ikatulo nga partido nga nakuha gikan sa dili kasaligan nga mga gigikanan, pananglitan, gilakip pinaagi sa usa ka iframe.



Source: opennet.ru

Idugang sa usa ka comment