Մեկ այլ խոցելիություն է հայտնաբերվել AMD պրոցեսորներում, որը թույլ է տալիս Meltdown հարձակումները

Գրացի Տեխնիկական համալսարանի (Ավստրիա) և Հելմհոլցի տեղեկատվական անվտանգության կենտրոնի (CISPA) հետազոտողների թիմը տեղեկատվություն է հրապարակել AMD բոլոր պրոցեսորներում խոցելիության մասին (CVE-2021-26318), որը հնարավոր է դարձնում Meltdown-ի դասի իրականացումը: կողմնակի ալիքի հարձակումներ (ի սկզբանե ենթադրվում էր, որ AMD պրոցեսորները չեն ազդում Meltdown-ի խոցելիության վրա): Գործնական առումով, հարձակումը կարող է օգտագործվել գաղտնի հաղորդակցման ուղիներ ստեղծելու, միջուկում գործունեությունը վերահսկելու կամ միջուկի հիշողության հասցեների մասին տեղեկատվություն ստանալու համար՝ շրջանցելու KASLR պաշտպանությունը միջուկի խոցելիությունը շահագործելու համար:

AMD-ն աննպատակահարմար է համարում խնդրի արգելափակման համար հատուկ միջոցների ձեռնարկումը, քանի որ խոցելիությունը, ինչպես օգոստոսին հայտնաբերված նմանատիպ հարձակումը, քիչ կիրառություն ունի իրական պայմաններում, սահմանափակված է գործընթացի հասցեի տարածքի ներկայիս սահմաններով և պահանջում է որոշակի առկայություն: միջուկում հրահանգների պատրաստի հաջորդականություններ (գործիքներ): Հարձակումը ցուցադրելու համար հետազոտողները բեռնել են իրենց միջուկի մոդուլը արհեստականորեն ավելացված գաջեթով: Իրական պայմաններում հարձակվողները կարող են օգտագործել, օրինակ, eBPF ենթահամակարգում պարբերաբար բացվող խոցելիությունները՝ փոխարինելու անհրաժեշտ հաջորդականությունը:

Այս նոր տեսակի հարձակումներից պաշտպանվելու համար AMD-ն խորհուրդ է տվել օգտագործել անվտանգ կոդավորման մեթոդներ, որոնք օգնում են արգելափակել Meltdown-ի հարձակումները, օրինակ՝ օգտագործել LFENCE հրահանգները: Խնդիրը հայտնաբերած հետազոտողները խորհուրդ են տալիս ակտիվացնել հիշողության էջերի աղյուսակի ավելի խիստ մեկուսացում (KPTI), որը նախկինում օգտագործվում էր միայն Intel պրոցեսորների համար:

Փորձի ընթացքում հետազոտողներին հաջողվել է միջուկից տեղեկատվություն արտահոսել օգտատերերի տարածքում 52 բայթ/վրկ արագությամբ՝ հաշվի առնելով միջուկում գաջեթի առկայությունը, որն իրականացնում է «if (offset < data_len) tmp =» գործողությունը: LUT[տվյալներ[օֆսեթ] * 4096];»: Առաջարկվել են մի քանի մեթոդներ՝ սպեկուլյատիվ կատարման ընթացքում տեղեկատվությունը կողային կապուղիների միջոցով գտնելու համար, որոնք հայտնվում են քեշում: Առաջին մեթոդը հիմնված է «PREFETCH» (PREFETCH) հրահանգի (Prefetch+Time) պրոցեսորի կատարման ժամանակի շեղումների վերլուծության վրա, իսկ երկրորդը՝ «PREFETCH» (Prefetch+Power) կատարելիս էներգիայի սպառման փոփոխությունը փոխելու վրա:

Հիշեցնենք, որ Meltdown-ի դասական խոցելիությունը հիմնված է այն փաստի վրա, որ հրահանգների սպեկուլյատիվ կատարման ժամանակ պրոցեսորը կարող է մուտք գործել մասնավոր տվյալների տարածք և այնուհետև հրաժարվել արդյունքից, քանի որ սահմանված արտոնություններն արգելում են այդպիսի մուտքը օգտվողի գործընթացից: Ծրագրում սպեկուլյատիվորեն կատարված բլոկը հիմնական կոդից առանձնացված է պայմանական ճյուղով, որը իրական պայմաններում միշտ կրակում է, բայց այն պատճառով, որ պայմանական հայտարարությունը օգտագործում է հաշվարկված արժեք, որը պրոցեսորը չգիտի կանխարգելիչ կատարման ժամանակ: կոդը, մասնաճյուղի բոլոր տարբերակներն իրականացվում են սպեկուլյատիվ:

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

Source: opennet.ru

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