Google-ը ցուցադրել է Spectre-ի խոցելիության շահագործումը զննարկիչում JavaScript-ի կատարման միջոցով

Google-ը հրապարակել է մի քանի exploit նախատիպեր, որոնք ցույց են տալիս Spectre դասի խոցելիությունները բրաուզերում JavaScript կոդը գործարկելու հնարավորությունը՝ շրջանցելով նախկինում ավելացված պաշտպանության մեթոդները։ Exploits-ը կարող է օգտագործվել ընթացիկ ներդիրում գտնվող վեբ բովանդակության մշակման գործընթացի հիշողությունից օգտվելու համար: Exploit-ի աշխատանքը ստուգելու համար գործարկվեց leaky.page կայքը, իսկ աշխատանքի տրամաբանությունը նկարագրող կոդը տեղադրվեց GitHub-ում։

Առաջարկվող նախատիպը նախատեսված է Intel Core i7-6500U պրոցեսորներով համակարգերի վրա հարձակվելու համար Linux-ի և Chrome 88-ի հետ միջավայրում: Այլ միջավայրերի համար շահագործումն օգտագործելու համար անհրաժեշտ են փոփոխություններ: Շահագործման մեթոդը հատուկ չէ Intel պրոցեսորներին. համապատասխան ադապտացիայից հետո հաստատվել է, որ շահագործումը կարող է աշխատել այլ արտադրողների պրոցեսորներով համակարգերի վրա, ներառյալ Apple M1-ը, որը հիմնված է ARM ճարտարապետության վրա: Աննշան ճշգրտումներից հետո շահագործումը հնարավոր է նաև այլ օպերացիոն համակարգերում և Chromium շարժիչի վրա հիմնված այլ բրաուզերներում:

Ստանդարտ Chrome 88 և Intel Skylake պրոցեսորների վրա հիմնված միջավայրում հնարավոր եղավ տվյալների արտահոսք վեբ բովանդակության մշակման համար պատասխանատու գործընթացից ընթացիկ Chrome ներդիրում (արտադրող գործընթաց) վայրկյանում 1 կիլոբայթ արագությամբ: Բացի այդ, մշակվել են այլընտրանքային նախատիպեր, օրինակ՝ շահագործում, որը թույլ է տալիս կայունությունը նվազեցնելու գնով բարձրացնել արտահոսքի արագությունը մինչև 8 կԲ/վ՝ 5 միկրովրկ (0.005 միլիվայրկյան) ժմչփի օգտագործման ժամանակ: ). Նաև պատրաստվեց տարբերակ, որն աշխատում էր ժմչփի մեկ միլիվայրկյան ճշգրտությամբ, որը կարող էր օգտագործվել մեկ այլ գործընթացի հիշողության հասանելիությունը վայրկյանում մոտ 60 բայթ արագությամբ կազմակերպելու համար։

Հրապարակված ցուցադրական կոդը բաղկացած է երեք մասից. Առաջին մասը չափորոշում է ժմչփը՝ գնահատելու այն գործողությունների կատարման ժամանակը, որոնք անհրաժեշտ են պրոցեսորի քեշում մնացած տվյալները CPU-ի հրահանգների սպեկուլյատիվ կատարման արդյունքում վերականգնելու համար: Երկրորդ մասը որոշում է հիշողության դասավորությունը, որն օգտագործվում է JavaScript զանգվածը հատկացնելիս:

Երրորդ մասը ուղղակիորեն օգտագործում է Spectre-ի խոցելիությունը ընթացիկ գործընթացի հիշողության պարունակությունը որոշելու համար՝ որոշակի գործողությունների սպեկուլյատիվ կատարման համար պայմաններ ստեղծելու արդյունքում, որոնց արդյունքը անհաջող կանխատեսումը որոշելուց հետո անտեսվում է պրոցեսորի կողմից, բայց դրա հետքերը։ կատարումը պահվում է ընդհանուր քեշում և կարող է վերականգնվել՝ օգտագործելով երրորդ կողմի ալիքների կողմից քեշի բովանդակությունը որոշելու մեթոդներ, որոնք վերլուծում են քեշի և չքեշված տվյալների մուտքի ժամանակի փոփոխությունները:

Առաջարկվող շահագործման տեխնիկան հնարավորություն է տալիս անել առանց բարձր ճշգրտության ժամանակաչափերի, որոնք հասանելի են performance.now() API-ի միջոցով, և առանց SharedArrayBuffer տեսակի աջակցության, որը թույլ է տալիս զանգվածներ ստեղծել ընդհանուր հիշողության մեջ: Շահագործումը ներառում է Spectre գաջեթը, որն առաջացնում է կոդի վերահսկվող սպեկուլյատիվ կատարում, և կողմնակի ալիքի արտահոսքի անալիզատոր, որը հայտնաբերում է սպեկուլյատիվ կատարման ընթացքում ստացված քեշավորված տվյալները:

Գաջեթն իրականացվում է JavaScript զանգվածի միջոցով, որտեղ փորձ է արվում մուտք գործել բուֆերի սահմաններից դուրս գտնվող տարածք՝ ազդելով ճյուղի կանխատեսման բլոկի վիճակի վրա՝ կոմպիլյատորի կողմից ավելացված բուֆերի չափի ստուգման առկայության պատճառով (պրոցեսոր, առաջ նայելով, սպեկուլյատիվ կերպով կատարում է մուտքը, բայց ստուգելուց հետո վիճակը հետ է գլորում): Քեշի բովանդակությունը վերլուծելու համար ժամանակաչափի անբավարար ճշգրտության պայմաններում առաջարկվել է մեթոդ, որը խաբում է Tree-PLRU քեշի վտարման ռազմավարությունը, որն օգտագործվում է պրոցեսորներում և թույլ է տալիս, ավելացնելով ցիկլերի քանակը, զգալիորեն մեծացնել ժամանակի տարբերությունը վերադառնալիս: արժեք քեշից և երբ քեշում արժեք չկա:

Նշվում է, որ Google-ը հրապարակել է շահագործման նախատիպը, որպեսզի ցույց տա Spectre դասի խոցելիության միջոցով հարձակումների իրագործելիությունը և խրախուսելու վեբ մշակողներին օգտագործել այնպիսի մեթոդներ, որոնք նվազագույնի են հասցնում նման հարձակումների ռիսկերը: Միևնույն ժամանակ, Google-ը կարծում է, որ առանց առաջարկվող նախատիպի էական վերամշակման անհնար է ստեղծել ունիվերսալ շահագործումներ, որոնք պատրաստ են ոչ միայն ցուցադրման, այլև լայն կիրառման։

Ռիսկը նվազեցնելու համար կայքի սեփականատերերին խորհուրդ է տրվում օգտագործել վերջերս ներդրված վերնագրերը Cross-Origin Opener Policy (COOP), Cross-Origin Embedder Policy (COEP), Cross-Origin Resource Policy (CORP), Fetch Metadata Request, X-Frame-: Ընտրանքներ, X -Content-Type-Options և SameSite Cookie: Այս մեխանիզմները ուղղակիորեն չեն պաշտպանում հարձակումներից, սակայն թույլ են տալիս մեկուսացնել կայքի տվյալները արտահոսքից այն գործընթացներում, որոնցում կարող է գործարկվել հարձակվողի JavaScript կոդը (արտահոսքը տեղի է ունենում ընթացիկ գործընթացի հիշողությունից, որը, բացի հարձակվողի կոդը , կարող է նաև մշակել տվյալ նույն ներդիրում բացված մեկ այլ կայքից): Հիմնական գաղափարը տարբեր գործընթացներում կայքի կոդի կատարումն առանձնացնելն է երրորդ կողմի կոդից, որը ստացվել է անվստահելի աղբյուրներից, օրինակ՝ ներառված iframe-ի միջոցով:



Source: opennet.ru

Добавить комментарий