AMD-ը հաստատել է AMD Zen 3 պրոցեսորների հնարավոր խոցելիությունը Spectre-STL հարձակման նկատմամբ

AMD-ը հրապարակել է զեկույց, որը վերլուծում է Zen 3 սերիայի պրոցեսորներում ներդրված PSF (Predictive Store Forwarding) օպտիմալացման տեխնոլոգիայի անվտանգությունը: Ուսումնասիրությունը տեսականորեն հաստատեց Spectre-STL (Spectre-v4) հարձակման մեթոդի կիրառելիությունը, որը բացահայտվել էր 2018 թվականի մայիսին, PSF տեխնոլոգիա, սակայն գործնականում դեռևս չի հայտնաբերվել որևէ կոդերի ձևանմուշ, որը կարող է հանգեցնել հարձակման, և ընդհանուր վտանգը գնահատվում է որպես աննշան:

Հիշենք, որ Specter-v4 (Speculative Store Bypass) գրոհը հիմնված է տվյալների վերականգնման վրա, որոնք տեղավորվել են պրոցեսորի քեշում՝ անուղղակի հասցեավորման միջոցով փոխարինող գրելու և կարդալու գործողությունների մշակման ժամանակ գործողությունների սպեկուլյատիվ կատարման արդյունքը չեղարկելուց հետո: Երբ կարդալու գործողությունը հաջորդում է գրելու գործողությանը (օրինակ՝ mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), ընթերցման հասցեի օֆսեթը կարող է արդեն հայտնի լինել՝ կապված նմանատիպ գործողությունների կատարման հետ (կարդալու գործողությունները՝ կատարվում է շատ ավելի հաճախ, և ընթերցումները կարող են կատարվել քեշից) և պրոցեսորը կարող է ենթադրաբար կատարել ընթերցումներ նախքան գրելը, առանց սպասելու գրության անուղղակի փոխհատուցման հաշվարկին:

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

AMD Zen 3 պրոցեսորներին ավելացված PSF-ն օպտիմիզացնում է STLF-ը (Store-To-Load-Forwarding), որը կատարում է կարդալու գործողություններ սպեկուլյատիվ՝ կանխատեսելով կարդալու և գրելու գործողությունների փոխհարաբերությունները: Դասական STLF-ն օգտագործելիս պրոցեսորը կատարում է «բեռնման» գործողություն նախորդ «խանութ» հրամանից ուղղակիորեն փոխանցված տվյալների վրա՝ չսպասելով, որ արդյունքն իրականում գրվի հիշողության մեջ, բայց համոզվելով, որ «բեռնման» մեջ օգտագործվող հասցեները: և «պահպանել» հրամանները համընկնում են: PSF-ի օպտիմիզացիան հասցեների ստուգումը դարձնում է սպեկուլյատիվ և կատարում է «բեռնվածություն» գործողություն՝ նախքան հասցեի տեղեկատվությունը հաշվարկելը, եթե նախկինում իրականացվել է մեկ հասցեով շահարկող խանութ/բեռնված զույգ: Եթե ​​կանխատեսումը ձախողվի, վիճակը հետ է գլորվում, բայց տվյալները մնում են քեշում:

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

AMD-ն տրամադրել է մի շարք մեթոդներ PSF-ն ամբողջությամբ կամ ընտրովի անջատելու համար, սակայն հաշվի առնելով հավելվածների մեծ մասի համար աննշան ռիսկը, խորհուրդ է տվել, որ այս օպտիմալացումը լռելյայն չանջատվի: Անվստահելի կոդ կատարողներին մեկուսացնող գործընթացները ընտրողաբար պաշտպանելու համար առաջարկվում է անջատել PSF-ը՝ սահմանելով «SSBD» և «PSFD» MSR բիթերը, ներառյալ առանձին շղթաների համար: Լինուքսի միջուկի համար պատչեր են պատրաստվել «psfd» և «nopsfd» հրամանի տողերի ընտրանքների ներդրմամբ, որոնք վերահսկում են, թե ինչպես է PSF-ն միացվում և անջատվում:

Source: opennet.ru

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