Google ilionyesha utumiaji wa athari za Specter kupitia utekelezaji wa JavaScript kwenye kivinjari

Google imechapisha prototypes kadhaa zinazoonyesha uwezekano wa kutumia udhaifu wa darasa la Specter wakati wa kutekeleza msimbo wa JavaScript kwenye kivinjari, kwa kukwepa mbinu za ulinzi zilizoongezwa hapo awali. Matumizi yanaweza kutumika kupata ufikiaji wa kumbukumbu ya mchakato wa kuchakata maudhui ya wavuti kwenye kichupo cha sasa. Ili kujaribu utendakazi wa unyonyaji, tovuti ya leaky.page ilizinduliwa, na msimbo unaoelezea mantiki ya kazi uliwekwa kwenye GitHub.

Mfano unaopendekezwa umeundwa kushambulia mifumo iliyo na vichakataji vya Intel Core i7-6500U katika mazingira yenye Linux na Chrome 88. Ili kutumia matumizi kwa mazingira mengine, marekebisho yanahitajika. Njia ya unyonyaji sio maalum kwa wasindikaji wa Intel - baada ya urekebishaji unaofaa, unyonyaji ulithibitishwa kufanya kazi kwenye mifumo iliyo na CPU kutoka kwa watengenezaji wengine, pamoja na Apple M1 kulingana na usanifu wa ARM. Baada ya marekebisho madogo, matumizi pia yanaweza kutekelezeka katika mifumo mingine ya uendeshaji na katika vivinjari vingine kulingana na injini ya Chromium.

Katika mazingira kulingana na vichakataji vya kawaida vya Chrome 88 na Intel Skylake, iliwezekana kuvuja data kutoka kwa mchakato unaohusika na kuchakata maudhui ya wavuti katika kichupo cha sasa cha Chrome (mchakato wa kionyeshi) kwa kasi ya kilobaiti 1 kwa sekunde. Zaidi ya hayo, prototypes mbadala zimetengenezwa, kwa mfano, matumizi ambayo inaruhusu, kwa gharama ya kupunguza uthabiti, kuongeza kiwango cha uvujaji hadi 8kB/s unapotumia kipima saa cha performance.now() kwa usahihi wa sekunde 5 (milliseconds 0.005). ) Toleo pia lilitayarishwa ambalo lilifanya kazi kwa usahihi wa kipima muda cha millisecond moja, ambayo inaweza kutumika kupanga ufikiaji wa kumbukumbu ya mchakato mwingine kwa kasi ya karibu byte 60 kwa sekunde.

Msimbo wa onyesho uliochapishwa una sehemu tatu. Sehemu ya kwanza husawazisha kipima muda ili kukadiria muda wa utekelezaji wa shughuli zinazohitajika ili kurejesha data iliyosalia kwenye akiba ya kichakataji kutokana na utekelezaji wa kubahatisha wa maagizo ya CPU. Sehemu ya pili huamua mpangilio wa kumbukumbu unaotumiwa wakati wa kugawa safu ya JavaScript.

Sehemu ya tatu hutumia moja kwa moja hatari ya Specter kuamua yaliyomo kwenye kumbukumbu ya mchakato wa sasa kama matokeo ya kuunda hali ya utekelezaji wa kubahatisha wa shughuli fulani, matokeo ambayo hutupwa na processor baada ya kuamua utabiri ambao haujafanikiwa, lakini athari za utekelezaji huwekwa kwenye akiba ya jumla na inaweza kurejeshwa kwa kutumia mbinu za kubainisha yaliyomo kwenye akiba na idhaa za wahusika wengine ambao huchanganua mabadiliko katika muda wa ufikiaji wa data iliyoakibishwa na ambayo haijahifadhiwa.

Mbinu inayopendekezwa ya unyonyaji hufanya iwezekane kufanya bila vipima muda vya usahihi wa juu vinavyopatikana kupitia performance.now() API, na bila usaidizi wa aina ya SharedArrayBuffer, ambayo inaruhusu kuunda safu katika kumbukumbu iliyoshirikiwa. Matumizi hayo ni pamoja na kifaa cha Specter, ambacho husababisha utekelezaji wa kubahatisha wa kanuni, na kichanganuzi cha uvujaji wa kituo, ambacho hutambua data iliyohifadhiwa iliyopatikana wakati wa utekelezaji wa kubahatisha.

Kifaa hiki kinatekelezwa kwa kutumia safu ya JavaScript ambapo jaribio hufanywa kufikia eneo nje ya mipaka ya bafa, na kuathiri hali ya kizuizi cha utabiri wa tawi kwa sababu ya uwepo wa hundi ya saizi ya bafa iliyoongezwa na mkusanyaji (kichakataji, kuangalia mbele, hufanya ufikiaji kwa kubahatisha, lakini inarudisha hali nyuma baada ya kuangalia). Ili kuchanganua yaliyomo kwenye akiba chini ya hali ya kutotosha kwa usahihi wa kipima saa, mbinu imependekezwa ambayo inadanganya mkakati wa kufukuza akiba ya Tree-PLRU inayotumiwa katika vichakataji na inaruhusu, kwa kuongeza idadi ya mizunguko, kuongeza kwa kiasi kikubwa tofauti ya wakati wakati wa kurudi. thamani kutoka kwa kache na wakati hakuna thamani katika kache.

Inabainika kuwa Google ilichapisha mfano wa unyonyaji ili kuonyesha uwezekano wa mashambulizi kwa kutumia udhaifu wa darasa la Specter na kuwahimiza wasanidi wa wavuti kutumia mbinu zinazopunguza hatari kutokana na mashambulizi kama hayo. Wakati huo huo, Google inaamini kwamba bila kurekebisha tena mfano uliopendekezwa, haiwezekani kuunda ushujaa wa ulimwengu wote ambao uko tayari sio tu kwa maandamano, bali pia kwa matumizi mengi.

Ili kupunguza hatari, wamiliki wa tovuti wanahimizwa kutumia vichwa vilivyotekelezwa hivi majuzi Sera ya Kufungua Asili ya Asili (COOP), Sera ya Kupachika Asili-Asili (COEP), Sera ya Nyenzo-msingi (CORP), Ombi la Kuleta Metadata, X-Frame- Chaguzi, X -Content-Type-Chaguzi na SameSite Cookie. Taratibu hizi hazilindi moja kwa moja dhidi ya shambulio, lakini hukuruhusu kutenganisha data ya tovuti kutoka kwa kuvuja kwa michakato ambayo msimbo wa JavaScript wa mshambuliaji unaweza kutekelezwa (uvujaji hutokea kutoka kwa kumbukumbu ya mchakato wa sasa, ambao, pamoja na msimbo wa mshambuliaji. , inaweza pia kuchakata data kutoka kwa tovuti nyingine iliyofunguliwa kwenye kichupo hicho). Wazo kuu ni kutenganisha utekelezaji wa msimbo wa tovuti katika michakato tofauti kutoka kwa msimbo wa tatu uliopokelewa kutoka kwa vyanzo visivyoaminika, kwa mfano, vilivyojumuishwa kupitia iframe.



Chanzo: opennet.ru

Kuongeza maoni