Chrome-ում Spectre-ի խոցելիության շահագործման նոր տեխնիկա

Ամերիկյան, ավստրալական և իսրայելական համալսարանների մի խումբ հետազոտողներ առաջարկել են կողային ալիքի հարձակման նոր տեխնիկա՝ Chromium շարժիչի վրա հիմնված բրաուզերների Specter դասի խոցելիությունները օգտագործելու համար: Spook.js ծածկագրված հարձակումը թույլ է տալիս շրջանցել կայքի մեկուսացման մեխանիզմը՝ գործարկելով JavaScript կոդը և կարդալ ընթացիկ գործընթացի ողջ հասցեային տարածքի բովանդակությունը, այսինքն. մուտք գործել տվյալներ այլ ներդիրներում աշխատող, բայց նույն գործընթացում մշակված էջերից:

Քանի որ Chrome-ն աշխատում է տարբեր կայքեր տարբեր գործընթացներում, գործնական հարձակումներ իրականացնելու հնարավորությունը սահմանափակվում է ծառայություններով, որոնք թույլ են տալիս տարբեր օգտատերերի հոսթինգ անել իրենց էջերը: Մեթոդը թույլ է տալիս այն էջից, որտեղ հարձակվողը հնարավորություն ունի տեղադրել իր JavaScript կոդը, որոշել օգտատիրոջ կողմից բացված այլ էջերի առկայությունը նույն կայքից և դրանցից հանել գաղտնի տեղեկատվություն, օրինակ՝ հավատարմագրերը կամ փոխարինված բանկային տվյալները: վեբ ձևաթղթերում դաշտերի ավտոմատ լրացման համակարգով: Որպես ցուցադրություն, ցուցադրվում է, թե ինչպես կարող եք հարձակվել ուրիշի բլոգի վրա Tumblr ծառայության վրա, եթե դրա սեփականատերը բացում է հարձակվողների բլոգը, որը տեղակայված է նույն ծառայության վրա մեկ այլ ներդիրում:

Մեթոդի օգտագործման մեկ այլ տարբերակ է հարձակումը բրաուզերի հավելումների վրա, որը թույլ է տալիս հարձակվողի կողմից վերահսկվող հավելում տեղադրելիս տվյալներ հանել այլ հավելումներից: Որպես օրինակ՝ մենք ցույց ենք տալիս, թե ինչպես տեղադրելով վնասակար հավելում դուք կարող եք գաղտնի տեղեկատվություն հանել LastPass գաղտնաբառերի կառավարիչից:

Հետազոտողները հրապարակել են շահագործման նախատիպը, որն աշխատում է Chrome 89-ում CPUIntel i7-6700K և i7-7600U համակարգերով: Exploit-ի ստեղծման ժամանակ Google-ի կողմից նախկինում հրապարակված JavaScript կոդի նախատիպերն օգտագործվել են Specter դասի գրոհներ իրականացնելու համար։ Նշվում է, որ հետազոտողները կարողացել են աշխատանքային էքսպլոիթներ պատրաստել Intel և Apple M1 պրոցեսորների վրա հիմնված համակարգերի համար, որոնք հնարավորություն են տալիս հիշողության ընթերցումը կազմակերպել վայրկյանում 500 բայթ արագությամբ և 96% ճշգրտությամբ: Ենթադրվում է, որ մեթոդը կիրառելի է նաև AMD պրոցեսորների համար, սակայն հնարավոր չի եղել լիարժեք ֆունկցիոնալ էքսփլոյտ պատրաստել։

Հարձակումը կիրառելի է Chromium շարժիչի վրա հիմնված ցանկացած բրաուզերի վրա, ներառյալ Google Chrome-ը, Microsoft Edge-ը և Brave-ը: Հետազոտողները նաև կարծում են, որ մեթոդը կարող է հարմարեցվել Firefox-ի հետ աշխատելու համար, սակայն քանի որ Firefox շարժիչը շատ է տարբերվում Chrome-ից, նման շահագործման ստեղծման աշխատանքները թողնված են ապագայի համար։

Բրաուզերի վրա հիմնված հարձակումներից պաշտպանվելու համար, որոնք կապված են հրահանգների սպեկուլյատիվ կատարման հետ, Chrome-ն իրականացնում է հասցեների տարածության սեգմենտավորում. ավազարկղի մեկուսացումը թույլ է տալիս JavaScript-ին աշխատել միայն 32-բիթանոց ցուցիչների հետ և կիսում է կառավարիչների հիշողությունը 4 ԳԲ-ի առանձին կույտերով: Գործընթացի ողջ հասցեի տարածք մուտք ապահովելու և 32-բիթանոց սահմանափակումը շրջանցելու համար հետազոտողները օգտագործել են «Type Confusion» կոչվող տեխնիկան, որը JavaScript շարժիչին ստիպում է սխալ տիպի օբյեկտ մշակել, ինչը հնարավորություն է տալիս ձևավորել 64 բիթանոց: ցուցիչ՝ հիմնված երկու 32-բիթանոց արժեքների համակցության վրա:

Հարձակման էությունն այն է, որ JavaScript շարժիչում հատուկ նախագծված վնասակար օբյեկտ մշակելիս ստեղծվում են պայմաններ, որոնք հանգեցնում են զանգվածին մուտք գործող հրահանգների սպեկուլյատիվ կատարմանը: Օբյեկտն ընտրվում է այնպես, որ հարձակվողի կողմից կառավարվող դաշտերը տեղադրվեն այն տարածքում, որտեղ օգտագործվում է 64-բիթանոց ցուցիչը։ Քանի որ վնասակար օբյեկտի տեսակը չի համընկնում մշակվող զանգվածի տեսակի հետ, նորմալ պայմաններում նման գործողությունները Chrome-ում արգելափակվում են զանգվածներ մուտք գործելու համար օգտագործվող կոդը ապաօպտիմիզացնելու մեխանիզմով: Այս խնդիրը լուծելու համար Type Confusion հարձակման կոդը տեղադրվում է պայմանական «եթե» բլոկում, որը նորմալ պայմաններում չի ակտիվանում, բայց գործարկվում է սպեկուլյատիվ ռեժիմով, եթե պրոցեսորը սխալ է կանխատեսում հետագա ճյուղավորումը։

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

Source: opennet.ru

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