AMD պրոցեսորների խոցելիություն, որը թույլ է տալիս շրջանցել SEV (Secure Encrypted Virtualization) պաշտպանության մեխանիզմը

Հելմհոլցի Տեղեկատվական անվտանգության կենտրոնի (CISPA) հետազոտողները հրապարակել են նոր CacheWarp հարձակման մեթոդ՝ վտանգելու AMD SEV (Secure Encrypted Virtualization) անվտանգության մեխանիզմը, որն օգտագործվում է վիրտուալացման համակարգերում՝ պաշտպանելու վիրտուալ մեքենաները հիպերվիզորի կամ հյուրընկալող համակարգի ադմինիստրատորի միջամտությունից: Առաջարկվող մեթոդը թույլ է տալիս հիպերվիզորին հասանելիություն ունեցող հարձակվողին գործարկել երրորդ կողմի կոդը և մեծացնել արտոնությունները AMD SEV-ով պաշտպանված վիրտուալ մեքենայի մեջ:

Հարձակումը հիմնված է խոցելիության (CVE-2023-20592) օգտագործման վրա, որն առաջացել է INVD պրոցեսորի հրահանգի կատարման ժամանակ քեշի սխալ աշխատանքի հետևանքով, որի օգնությամբ հնարավոր է հասնել հիշողության և քեշի տվյալների անհամապատասխանության: , և շրջանցելու մեխանիզմներ՝ վիրտուալ մեքենայի հիշողության ամբողջականությունը պահպանելու համար, որոնք իրականացվել են SEV-ES և SEV-SNP ընդլայնումների հիման վրա: Խոցելիությունը ազդում է AMD EPYC պրոցեսորների վրա՝ առաջինից երրորդ սերնդից:

Երրորդ սերնդի AMD EPYC պրոցեսորների համար (Zen 3) խնդիրը լուծվում է երեկ AMD-ի կողմից թողարկված նոյեմբերի միկրոկոդի թարմացմամբ (շտկումը չի հանգեցնում կատարողականի որևէ վատթարացման): AMD EPYC-ի առաջին և երկրորդ սերունդների համար (Zen 1 և Zen 2) պաշտպանությունը չի ապահովվում, քանի որ այս պրոցեսորները չեն աջակցում SEV-SNP ընդլայնումը, որն ապահովում է ամբողջականության վերահսկում վիրտուալ մեքենաների համար: AMD AMD EPYC «Genoa» պրոցեսորների չորրորդ սերունդը, որը հիմնված է «Zen 4» միկրոճարտարապետության վրա, խոցելի չէ:

AMD SEV տեխնոլոգիան օգտագործվում է վիրտուալ մեքենաների մեկուսացման համար ամպային մատակարարների կողմից, ինչպիսիք են Amazon Web Services (AWS), Google Cloud, Microsoft Azure և Oracle Compute Infrastructure (OCI): AMD SEV-ի պաշտպանությունն իրականացվում է վիրտուալ մեքենայի հիշողության ապարատային մակարդակի կոդավորման միջոցով: Բացի այդ, SEV-ES (Կոդավորված վիճակ) ընդլայնումը պաշտպանում է պրոցեսորի ռեգիստրները: Միայն ընթացիկ հյուր համակարգն ունի մուտք դեպի վերծանված տվյալները, և երբ այլ վիրտուալ մեքենաներ և հիպերվիզորը փորձում են մուտք գործել այս հիշողություն, նրանք ստանում են տվյալների կոդավորված հավաքածու:

AMD EPYC պրոցեսորների երրորդ սերունդը ներկայացրեց լրացուցիչ ընդլայնում` SEV-SNP (Secure Nested Paging), որն ապահովում է հիշողության մեջ տեղադրված էջերի աղյուսակների անվտանգ աշխատանքը: Ի լրումն ընդհանուր հիշողության գաղտնագրման և ռեգիստրի մեկուսացման, SEV-SNP-ն իրականացնում է լրացուցիչ միջոցներ՝ պաշտպանելու հիշողության ամբողջականությունը՝ կանխելով հիպերվիզորի կողմից VM-ի փոփոխությունները: Գաղտնագրման բանալիները կառավարվում են չիպի մեջ ներկառուցված առանձին PSP (Platform Security Processor) պրոցեսորի կողքին, որն իրականացվում է ARM ճարտարապետության հիման վրա:

Առաջարկվող հարձակման մեթոդի էությունը INVD հրահանգի օգտագործումն է՝ կեղտոտ էջերի քեշի բլոկները (տողերը) անվավեր ճանաչելու համար՝ առանց քեշում կուտակված տվյալները հիշողության մեջ թափելու (գրել հետ): Այսպիսով, մեթոդը թույլ է տալիս վտարել փոփոխված տվյալները քեշից՝ առանց հիշողության վիճակը փոխելու: Հարձակում իրականացնելու համար առաջարկվում է օգտագործել ծրագրային բացառություններ (անսարք ներարկում)՝ վիրտուալ մեքենայի աշխատանքը երկու տեղով ընդհատելու համար. քեշը և երկրորդ տեղում կանչում է «invd» հրահանգը՝ հիշողության մեջ չարտացոլված գրելու գործողությունները հին վիճակին վերադարձնելու համար:

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

Օրինակ, հետազոտողները ցույց են տվել CacheWarp մեթոդի օգտագործման հնարավորությունը Bellcore-ի հարձակում իրականացնելու համար RSA-CRT ալգորիթմի ներդրման վրա ipp-կրիպտո գրադարանում, ինչը հնարավորություն է տվել վերականգնել անձնական բանալին սխալի փոխարինման միջոցով թվային թվային հաշվում: ստորագրությունը։ Այն նաև ցույց է տալիս, թե ինչպես կարող եք փոխել նստաշրջանի ստուգման պարամետրերը OpenSSH-ի, երբ հեռակա կերպով միանալով հյուր համակարգին, այնուհետև փոխել ստուգման վիճակը, երբ գործարկում եք sudo կոմունալը՝ Ubuntu 20.04-ում արմատային իրավունքներ ձեռք բերելու համար: Exploit-ը փորձարկվել է AMD EPYC 7252, 7313P և 7443 պրոցեսորներով համակարգերի վրա:

Source: opennet.ru

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