Google qhia txog kev siv Spectre vulnerabilities los ntawm kev ua JavaScript hauv browser

Google tau tshaj tawm ntau qhov kev siv cov qauv uas qhia txog qhov muaj peev xwm ntawm kev siv Spectre cov chav kawm tsis zoo thaum ua tiav JavaScript code hauv browser, hla dhau txoj kev tiv thaiv yav dhau los. Kev siv dag zog tuaj yeem siv los nkag mus rau lub cim xeeb ntawm cov txheej txheem ua cov ntsiab lus hauv lub vev xaib hauv tab tam sim no. Txhawm rau kuaj kev ua haujlwm ntawm kev siv, lub vev xaib leaky.page tau pib, thiab cov lej piav qhia txog kev ua haujlwm tau muab tso rau ntawm GitHub.

Cov qauv tsim tawm yog tsim los tua cov tshuab nrog Intel Core i7-6500U processors hauv ib puag ncig nrog Linux thiab Chrome 88. Txhawm rau siv qhov kev siv rau lwm qhov chaw, yuav tsum tau hloov kho. Txoj kev siv nyiaj txiag tsis yog tshwj xeeb rau Intel processors - tom qab kev hloov kho kom haum, kev siv tau raug lees paub los ua haujlwm ntawm cov tshuab nrog CPUs los ntawm lwm cov tuam txhab, suav nrog Apple M1 raws li ARM architecture. Tom qab kev hloov kho me me, qhov kev siv kuj tseem tuaj yeem ua haujlwm hauv lwm lub tshuab ua haujlwm thiab hauv lwm qhov browsers raws li Chromium engine.

Nyob rau hauv ib puag ncig raws li tus qauv Chrome 88 thiab Intel Skylake processors, nws tuaj yeem xau cov ntaub ntawv los ntawm cov txheej txheem ua lub luag haujlwm rau kev ua cov ntsiab lus hauv lub vev xaib tam sim no Chrome tab (txheej txheem txheej txheem) ntawm qhov nrawm ntawm 1 kilobyte ib ob. Tsis tas li ntawd, lwm cov qauv tsim tau tsim, piv txwv li, ib qho kev siv uas tso cai, ntawm tus nqi txo kev ruaj ntseg, kom nce tus nqi xau mus rau 8kB / s thaum siv qhov kev ua tau zoo.now() timer nrog qhov tseeb ntawm 5 microseconds (0.005 milliseconds. ). Ib qho version kuj tau npaj ua haujlwm nrog qhov tseeb timer ntawm ib millisecond, uas tuaj yeem siv los npaj nkag mus rau lub cim xeeb ntawm lwm cov txheej txheem ntawm qhov ceev ntawm 60 bytes ib ob.

Cov luam tawm demo code muaj peb ntu. Thawj ntu calibrates lub timer los kwv yees lub sijhawm ua haujlwm ntawm cov haujlwm uas yuav tsum tau ua kom rov qab tau cov ntaub ntawv tseem tshuav hauv lub processor cache raws li qhov tshwm sim ntawm kev ua tiav ntawm CPU cov lus qhia. Qhov thib ob txiav txim siab lub cim xeeb layout siv thaum faib cov JavaScript array.

Qhov thib peb ncaj qha exploits Spectre qhov tsis zoo los txiav txim siab cov ntsiab lus nco ntawm cov txheej txheem tam sim no los ntawm kev tsim cov xwm txheej rau kev ua tiav ntawm qee qhov kev ua haujlwm, qhov tshwm sim uas tau muab pov tseg los ntawm tus txheej txheem tom qab txiav txim siab qhov kev twv ua tsis tiav, tab sis cov cim ntawm kev ua haujlwm. Kev ua tiav tau muab tso rau hauv cov cache dav dav thiab tuaj yeem rov qab los siv txoj hauv kev los txiav txim siab cov ntsiab lus ntawm cov cache los ntawm cov neeg sab nrauv uas txheeb xyuas cov kev hloov pauv hauv lub sijhawm nkag mus rau cached thiab uncached cov ntaub ntawv.

Cov txheej txheem kev siv nyiaj tau los ua kom nws ua tau yam tsis muaj lub sijhawm ua haujlwm siab muaj los ntawm kev ua haujlwm.now() API, thiab tsis muaj kev txhawb nqa rau hom SharedArrayBuffer, uas tso cai rau tsim cov arrays hauv kev sib koom nco. Qhov kev siv nyiaj suav nrog Spectre gadget, uas ua rau muaj kev tswj xyuas qhov kev ua tiav ntawm cov lej, thiab ib sab-channel leak analyzer, uas kuaj pom cov ntaub ntawv cached tau txais thaum lub sijhawm ua tiav.

Lub gadget yog siv los ntawm JavaScript array, nyob rau hauv uas ib qho kev sim ua kom nkag mus rau thaj tsam sab nraud tsis muaj ciam teb, cuam tshuam rau lub xeev ntawm cov ceg twv ua ntej thaiv vim muaj qhov tsis pom qhov loj me ntxiv los ntawm cov compiler (tus processor speculatively ua. kev nkag mus, saib ua ntej, tab sis yob rov qab lub xeev tom qab kuaj). Txhawm rau txheeb xyuas cov ntsiab lus ntawm lub cache nyob rau hauv cov xwm txheej ntawm qhov tsis txaus timer raug, ib txoj hauv kev tau thov kom dag cov Tree-PLRU cache tshem tawm cov tswv yim siv hauv cov txheej txheem thiab tso cai, los ntawm kev nce cov voj voog, kom nce qhov sib txawv ntawm lub sijhawm thaum rov qab los. tus nqi los ntawm cache thiab thaum tsis muaj nqi hauv cache.

Nws tau raug sau tseg tias Google tau tshaj tawm cov qauv ntawm kev siv los ua kom pom qhov ua tau ntawm kev tawm tsam siv Spectre class vulnerabilities thiab txhawb cov neeg tsim tawm lub vev xaib kom siv cov tswv yim uas txo qhov kev pheej hmoo los ntawm kev tawm tsam. Nyob rau tib lub sijhawm, Google ntseeg tias tsis muaj qhov tseem ceeb ntawm kev rov ua haujlwm ntawm tus qauv tsim, nws tsis tuaj yeem tsim kev siv thoob ntiaj teb uas tau npaj tsis yog rau kev ua qauv qhia xwb, tab sis kuj tseem siv dav.

Txhawm rau txo qhov kev pheej hmoo, cov tswv ntawm qhov chaw raug txhawb kom siv cov headers Cross-Origin Opener Policy (COOP), Cross-Origin Embedder Policy (COEP), Cross-Origin Resource Policy (CORP), Fetch Metadata Request, X-Frame- Kev xaiv, X -Cov ntsiab lus-Hom-Kev xaiv thiab SameSite ncuav qab zib. Cov txheej txheem no tsis ncaj qha tiv thaiv kev tawm tsam, tab sis lawv tso cai rau koj cais cov ntaub ntawv ntawm qhov chaw los ntawm kev xau mus rau hauv cov txheej txheem uas tus attacker's JavaScript code tuaj yeem raug tua (qhov xau tshwm sim los ntawm lub cim xeeb ntawm cov txheej txheem tam sim no, uas, ntxiv rau tus neeg tawm tsam code. , kuj tuaj yeem ua cov ntaub ntawv los ntawm lwm qhov chaw qhib hauv tib lub tab). Lub tswv yim tseem ceeb yog cais qhov kev ua tiav ntawm lub vev xaib code hauv cov txheej txheem sib txawv los ntawm tus neeg thib peb tus lej tau txais los ntawm qhov chaw tsis ntseeg, piv txwv li, suav nrog iframe.



Tau qhov twg los: opennet.ru

Ntxiv ib saib