Retbleed-ը նոր հարձակում է Intel և AMD պրոցեսորների սպեկուլյատիվ կատարման մեխանիզմի վրա

Ցյուրիխի ETH-ի մի խումբ հետազոտողներ հայտնաբերել են նոր հարձակում CPU-ում անուղղակի անցումների սպեկուլյատիվ կատարման մեխանիզմի վրա, որը հնարավորություն է տալիս տեղեկատվություն կորզել միջուկի հիշողությունից կամ վիրտուալ մեքենաներից հարձակում կազմակերպել հյուրընկալող համակարգի վրա: Խոցելիությունները կրում են Retbleed կոդային անվանումը (CVE-2022-29900, CVE-2022-29901) և իրենց բնույթով մոտ են Specter-v2 հարձակումներին: Տարբերությունը կապված է կամայական կոդի սպեկուլյատիվ կատարման կազմակերպման հետ՝ «ret» (վերադարձի) հրահանգը մշակելիս, որը բեռնում է հասցեն՝ ցատկել կույտից, անուղղակի ցատկի փոխարեն՝ օգտագործելով «jmp» հրահանգը՝ բեռնելով հասցեն. հիշողություն կամ պրոցեսորի ռեգիստր:

Հարձակվողը կարող է պայմաններ ստեղծել անցումային սխալ կանխատեսման համար և կազմակերպել նպատակային, սպեկուլյատիվ անցում դեպի կոդի բլոկի, որը նախատեսված չէ ծրագրի կատարման տրամաբանությամբ: Ի վերջո, պրոցեսորը կորոշի, որ ճյուղի կանխատեսումը արդարացված չէ և կվերադարձնի գործողությունը իր սկզբնական վիճակին, սակայն սպեկուլյատիվ կատարման ընթացքում մշակված տվյալները կհայտնվեն քեշում և միկրոճարտարապետական ​​բուֆերներում: Եթե ​​սխալ կատարված բլոկը մուտք է գործում հիշողություն, ապա դրա սպեկուլյատիվ կատարումը կհանգեցնի նրան, որ հիշողությունից կարդացվող տվյալները կտեղադրվեն ընդհանուր քեշում:

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

Դասական Spectre դասի հարձակումներից պաշտպանվելու համար, որոնք օգտագործում են պայմանական և անուղղակի ցատկման հրահանգներ, օպերացիոն համակարգերի մեծ մասն օգտագործում է «retpoline» տեխնիկան, որը հիմնված է անուղղակի թռիչքի գործողությունները «ret» հրահանգով փոխարինելու վրա, որի համար պրոցեսորներն օգտագործում են առանձին stack վիճակի կանխատեսման միավոր: չօգտագործելով ճյուղի կանխատեսման բլոկ: Երբ retpoline-ը ներկայացվեց 2018-ին, ենթադրվում էր, որ Specter-ի նման հասցեների մանիպուլյացիաները գործնական չէին սպեկուլյատիվ ճյուղավորման համար՝ օգտագործելով «ret» հրահանգը:

Հետազոտողները, ովքեր մշակել են Retbleed հարձակման մեթոդը, ցույց են տվել «ret» հրահանգի միջոցով սպեկուլյատիվ անցում սկսելու համար միկրոճարտարապետական ​​պայմաններ ստեղծելու հնարավորությունը և հրապարակել պատրաստի գործիքներ՝ պարզելու հրահանգների (գաջեթների) հաջորդականությունը, որոնք հարմար են Linux միջուկում խոցելիությունը օգտագործելու համար: որոնցում դրսևորվում են նման պայմաններ.

Հետազոտության ընթացքում պատրաստվել է աշխատանքային շահագործում, որը թույլ է տալիս Intel-ի պրոցեսորներով համակարգերի վրա կամայական տվյալներ կորզել միջուկի հիշողությունից օգտվողի տարածքում ոչ արտոնյալ գործընթացից՝ վայրկյանում 219 բայթ արագությամբ և 98% ճշգրտությամբ: AMD պրոցեսորների վրա շահագործման արդյունավետությունը շատ ավելի բարձր է՝ արտահոսքի արագությունը 3.9 ԿԲ/վրկ: Որպես գործնական օրինակ՝ մենք ցույց ենք տալիս, թե ինչպես կարելի է օգտագործել առաջարկվող շահագործումը որոշելու համար /etc/shadow ֆայլի բովանդակությունը։ Intel պրոցեսորներով համակարգերի վրա արմատական ​​օգտատիրոջ գաղտնաբառի հեշը որոշելու գրոհն իրականացվել է 28 րոպեում, իսկ AMD պրոցեսորներով համակարգերում՝ 6 րոպեում։

Հարձակումը հաստատվել է Intel պրոցեսորների 6-8 սերունդների համար, որոնք թողարկվել են մինչև 3 թվականի երրորդ եռամսյակը (ներառյալ Skylake-ը), և AMD պրոցեսորները՝ հիմնված Zen 2019, Zen 1+ և Zen 1 միկրոճարտարապետությունների վրա, որոնք թողարկվել են մինչև 2 թվականի 2021-րդ եռամսյակը: Պրոցեսորների ավելի նոր մոդելներում, ինչպիսիք են AMD Zen3-ը և Intel Alder Lake-ը, ինչպես նաև ARM պրոցեսորներում, խնդիրն արգելափակված է գոյություն ունեցող պաշտպանական մեխանիզմներով: Օրինակ, IBRS-ի (Անուղղակի մասնաճյուղի սահմանափակված սպեկուլյացիա) հրահանգների օգտագործումն օգնում է պաշտպանվել հարձակումներից:

Լինուքսի միջուկի և Xen հիպերվիզորի համար պատրաստվել են փոփոխությունների մի շարք, որոնք կփակեն խնդիրը հին պրոցեսորների ծրագրային ապահովման մեջ: Linux միջուկի համար առաջարկվող կարկատումը փոխում է 68 ֆայլ, ավելացնում 1783 տող և ջնջում 387 տող։ Ցավոք, պաշտպանությունը հանգեցնում է զգալի վերադիր ծախսերի. AMD և Intel պրոցեսորների վրա կատարված տեքստերում կատարողականի նվազումը գնահատվում է 14%-ից մինչև 39%: Ավելի նախընտրելի է օգտագործել պաշտպանությունը՝ հիմնված IBRS հրահանգների վրա, որոնք հասանելի են Intel պրոցեսորների նոր սերունդներում և աջակցվում են՝ սկսած Linux միջուկից 4.19:

Intel պրոցեսորների վրա հասցեի փոխարինումը սպեկուլյատիվ անուղղակի ցատկումով իրականացվում է մի հատկանիշի շնորհիվ, որն ի հայտ է գալիս, երբ արտահոսք է տեղի ունենում Return Stack Buffer-ի ստորին սահմանի (ներքև) միջով: Երբ նման պայմաններ են առաջանում, «ret» հրահանգը սկսում է կիրառել հասցեների ընտրության տրամաբանությունը, որը նման է սովորական անուղղակի թռիչքների համար օգտագործվող տրամաբանությանը: Լինուքսի միջուկում հայտնաբերվել են հազարից ավելի տեղեր, որոնք պայմաններ են ստեղծում նման հետադարձ հոսք սկսելու համար և հասանելի են համակարգային զանգերի միջոցով։

AMD պրոցեսորների վրա «ret» հրահանգի սպեկուլյատիվ կատարումն իրականացվում է առանց հղման ստեկին հատուկ բուֆերի (Return Address Stack) և ճյուղի կանխատեսման ստորաբաժանումը «ret» հրահանգը դիտարկում է ոչ թե որպես հսկիչ վերադարձ, այլ որպես անուղղակի ճյուղ: , և, համապատասխանաբար, օգտագործում է տվյալները անուղղակի անցումների կանխատեսման համար: Այս պայմաններում, գրեթե ցանկացած «վերադարձ» գործողություն, որը հասանելի է համակարգային զանգի միջոցով, կարող է շահագործվել:

Բացի այդ, մեկ այլ խնդիր է հայտնաբերվել նաև AMD պրոցեսորներում (CVE-2022-23825, Branch Type Confusion)՝ կապված ֆիկտիվ ճյուղերի իրականացման հետ. առանց «ret» հրահանգի: Այս հատկությունը զգալիորեն բարդացնում է պաշտպանության իրականացումը և պահանջում է ճյուղի կանխատեսման բուֆերի ավելի ակտիվ մաքրում: Ակնկալվում է, որ միջուկին ամբողջական պաշտպանություն ավելացնելը կբարձրացնի վերադիր ծախսերը 209%-ով:

Source: opennet.ru

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