Խոցելիություն AMD պրոցեսորների սպեկուլյատիվ կատարման մեխանիզմում

Grsecurity նախագիծը հրապարակել է AMD պրոցեսորներում նոր խոցելիության (CVE-2021-26341) հարձակման մեթոդի մանրամասները և ցուցադրումը, որը կապված է անվերապահ ֆորվարդային գործողություններից հետո հրահանգների սպեկուլյատիվ կատարման հետ: Եթե ​​հարձակումը հաջող է, խոցելիությունը թույլ է տալիս որոշել կամայական հիշողության տարածքների բովանդակությունը: Օրինակ, հետազոտողները պատրաստել են շահագործում, որը թույլ է տալիս նրանց որոշել հասցեի դասավորությունը և շրջանցել KASLR (միջուկի հիշողության պատահականացում) պաշտպանության մեխանիզմը՝ ePBF միջուկի ենթահամակարգում ոչ արտոնյալ կոդ գործարկելով: Չի կարելի բացառել հարձակման այլ սցենարներ, որոնք կարող են հանգեցնել միջուկի հիշողության բովանդակության արտահոսքի:

Խոցելիությունը թույլ է տալիս ստեղծել պայմաններ, որոնց դեպքում պրոցեսորը կանխարգելիչ կատարման ժամանակ սպեկուլյատիվ կերպով մշակում է հրահանգը հիշողության մեջ ցատկման հրահանգին անմիջապես հաջորդող (SLS, Straight Line Speculation): Ավելին, նման օպտիմալացումն աշխատում է ոչ միայն պայմանական թռիչքի օպերատորների, այլ նաև ուղղակի անվերապահ թռիչք ենթադրող հրահանգների համար, ինչպիսիք են JMP, RET և CALL: Հետևելով անվերապահ ցատկման հրահանգներին, կարող են տեղադրվել կամայական տվյալներ, որոնք նախատեսված չեն կատարման համար: Որոշելուց հետո, որ ճյուղը չի ներառում հաջորդ հրահանգի կատարումը, պրոցեսորը պարզապես հետ է գլորում վիճակը և անտեսում է սպեկուլյատիվ կատարումը, սակայն հրահանգի կատարման հետքը մնում է ընդհանուր քեշում և հասանելի է վերլուծության համար՝ օգտագործելով կողային ալիքի որոնման տեխնիկան:

Ինչպես Specter-v1 խոցելիության շահագործման դեպքում, հարձակումը պահանջում է միջուկում հրահանգների որոշակի հաջորդականությունների (գործիքների) առկայություն, որոնք հանգեցնում են սպեկուլյատիվ կատարման: Այս դեպքում խոցելիության արգելափակումը հանգում է կոդում նման գաջեթների նույնականացմանը և դրանցում լրացուցիչ հրահանգների ավելացմանը, որոնք արգելափակում են սպեկուլյատիվ կատարումը: Սպեկուլյատիվ կատարման պայմաններ կարող են ստեղծվել նաև eBPF վիրտուալ մեքենայում աշխատող ոչ արտոնյալ ծրագրերի կողմից: eBPF-ի միջոցով գաջեթներ կառուցելու հնարավորությունը արգելափակելու համար խորհուրդ է տրվում անջատել համակարգում eBPF-ի ոչ արտոնյալ մուտքը («sysctl -w kernel.unprivileged_bpf_disabled=1»):

Խոցելիությունը ազդում է Zen1 և Zen2 միկրոճարտարապետության վրա հիմնված պրոցեսորների վրա, ներառյալ AMD EPYC և AMD Ryzen Threadripper պրոցեսորների առաջին և երկրորդ սերունդները, ինչպես նաև AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon Threa: PRO և APU սերիաների պրոցեսորներ A. Հրահանգների սպեկուլյատիվ կատարումն արգելափակելու համար խորհուրդ է տրվում ճյուղային գործողություններից հետո զանգահարել INT3 կամ LFENCE հրահանգներ (RET, JMP, CALL):

Source: opennet.ru

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