CPU քեշի արդյունահանման հարձակումը, որն իրականացվել է վեբ բրաուզերում առանց JavaScript-ի

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

Քեշի բովանդակությունը վերլուծելու համար բոլոր հարձակումները օգտագործում են Prime+Probe մեթոդը, որը ներառում է քեշը լրացնել ստանդարտ արժեքների հավաքածուով և հայտնաբերել փոփոխությունները՝ չափելով դրանց մուտքի ժամանակը, երբ դրանք լիցքավորվեն: Բրաուզերներում առկա անվտանգության մեխանիզմները շրջանցելու համար, որոնք խանգարում են ժամանակի ճշգրիտ չափմանը, երկու տարբերակով բողոքարկվում է հարձակվողի կողմից վերահսկվող DNS կամ WebSocket սերվեր, որը պահում է ստացված հարցումների ժամանակի գրանցամատյանը: Մեկ մարմնավորման դեպքում ֆիքսված DNS արձագանքման ժամանակը օգտագործվում է որպես ժամանակի հղում:

Արտաքին DNS կամ WebSocket սերվերների միջոցով կատարված չափումները, օգտագործելով մեքենայական ուսուցման վրա հիմնված դասակարգման համակարգը, բավարար էին առավելագույն օպտիմալ սցենարով (միջին 98-80%) մինչև 90% ճշգրտությամբ արժեքներ կանխատեսելու համար: Հարձակման մեթոդները փորձարկվել են տարբեր ապարատային հարթակներում (Intel, AMD Ryzen, Apple M1, Samsung Exynos) և ապացուցվել են, որ դրանք ունիվերսալ են:

CPU քեշի արդյունահանման հարձակումը, որն իրականացվել է վեբ բրաուզերում առանց JavaScript-ի

DNS Racing հարձակման առաջին տարբերակը օգտագործում է Prime+Probe մեթոդի դասական իրականացումը JavaScript զանգվածների միջոցով: Տարբերությունները հանգում են արտաքին DNS-ի վրա հիմնված ժմչփի և մեկ սխալ մշակողի օգտագործմանը, որը գործարկվում է, երբ փորձ է արվում պատկեր բեռնել գոյություն չունեցող տիրույթից: Արտաքին ժամանակաչափը թույլ է տալիս Prime+Probe հարձակումը բրաուզերների վրա, որոնք սահմանափակում կամ ամբողջությամբ անջատում են JavaScript ժամանակաչափերի հասանելիությունը:

Նույն Ethernet ցանցում տեղակայված DNS սերվերի համար ժմչփի ճշգրտությունը գնահատվում է մոտավորապես 2 ms, ինչը բավական է կողմնակի ալիքի հարձակում իրականացնելու համար (համեմատության համար նշենք, որ Tor Browser-ում ստանդարտ JavaScript ժամանակաչափի ճշգրտությունը կազմում է. կրճատվել է մինչև 100 ms): Հարձակման համար DNS սերվերի նկատմամբ հսկողություն չի պահանջվում, քանի որ գործողության կատարման ժամանակը ընտրված է այնպես, որ DNS-ից արձագանքման ժամանակը ծառայի որպես ստուգման ավելի վաղ ավարտի նշան (կախված նրանից, թե արդյոք մեկ սխալ մշակողը գործարկվել է. վաղ թե ուշ եզրակացություն է արվում քեշի հետ ստուգման գործողության արագության մասին):

Երկրորդ հարձակման մեթոդը՝ «String and Sock»-ը, նպատակ ունի շրջանցել անվտանգության տեխնիկան, որը սահմանափակում է զանգվածների ցածր մակարդակի օգտագործումը JavaScript-ում: Զանգվածների փոխարեն String and Sock-ը օգտագործում է գործողություններ շատ մեծ տողերի վրա, որոնց չափն ընտրված է այնպես, որ փոփոխականը ծածկի ՍՊԸ-ի ամբողջ քեշը (Last level cache): Հաջորդը, օգտագործելով indexOf() ֆունկցիան, տողի մեջ որոնվում է մի փոքր ենթատող, որն ի սկզբանե բացակայում է աղբյուրի տողում, այսինքն. որոնման գործողության արդյունքում կրկնվում է ամբողջ տողի վրա: Քանի որ տողի չափը համապատասխանում է ՍՊԸ-ի քեշի չափին, սկանավորումը թույլ է տալիս կատարել քեշի ստուգման գործողություն՝ առանց զանգվածները շահարկելու: Ուշացումները չափելու համար DNS-ի փոխարեն զանգ է կատարվում հարձակվողի կողմից վերահսկվող WebSocket սերվերին. որոնման գործողությունն ավարտելուց առաջ և հետո հարցումներ են ուղարկվում տողում, որի հիման վրա սերվերը հաշվարկում է քեշը վերլուծելու համար օգտագործվող ուշացումը: բովանդակությունը։

«CSS PP0» հարձակման երրորդ տարբերակը իրականացվում է HTML-ի և CSS-ի միջոցով և կարող է աշխատել JavaScript անջատված բրաուզերներում: Մեթոդը նման է «String and Sock»-ին, բայց կապված չէ JavaScript-ի հետ։ Հարձակման ժամանակ ստեղծվում է CSS ընտրիչների մի շարք, որոնք որոնում են դիմակով: Նախնական մեծ տողը, որը լրացնում է քեշը, սահմանվում է՝ ստեղծելով div թեգ՝ շատ մեծ դասի անունով: Ներսում կա մի շարք այլ div-ներ իրենց նույնացուցիչներով: Այս nested div-ներից յուրաքանչյուրն ունի իր ոճը ընտրիչով, որը որոնում է ենթատող: Էջը ցուցադրելիս զննարկիչը նախ փորձում է մշակել ներքին div-ները, ինչը հանգեցնում է մեծ շարքի որոնման գործողությունների: Որոնումն իրականացվում է կանխամտածված բացակայող դիմակի միջոցով և հանգեցնում է ամբողջ տողի կրկնմանը, որից հետո գործարկվում է «ոչ» պայմանը և փորձ է արվում բեռնել ֆոնային պատկերը, որը հղում է կատարում պատահական տիրույթներին. #pp:not([class*=’xjtoxg’]) #s0 {background-image: url(«https://qdlvibmr.helldomain.oy.ne.ro»);} #pp:not([class*=’gzstxf’]) #s1 {background-image: url(«https://licfsdju.helldomain.oy.ne.ro»);} … X X ...

Ենթադոմեյնները սպասարկվում են հարձակվողի DNS սերվերի կողմից, որը կարող է չափել հարցումների ստացման հետաձգումները: DNS սերվերը թողարկում է NXDOMAIN բոլոր հարցումների համար և պահում է հարցումների ճշգրիտ ժամանակի գրանցամատյանը: Մի շարք div-ների մշակման արդյունքում հարձակվողի DNS սերվերը ստանում է մի շարք հարցումներ, որոնց միջև ուշացումները փոխկապակցված են քեշի բովանդակության ստուգման արդյունքի հետ:

CPU քեշի արդյունահանման հարձակումը, որն իրականացվել է վեբ բրաուզերում առանց JavaScript-ի


Source: opennet.ru

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