Intel պրոցեսորների խոցելիությունը, որը հանգեցնում է տվյալների արտահոսքի երրորդ կողմի ալիքների միջոցով

Չինական և ամերիկյան համալսարանների մի խումբ հետազոտողներ հայտնաբերել են նոր խոցելիություն Intel պրոցեսորներում, որը հանգեցնում է սպեկուլյատիվ գործողությունների արդյունքների մասին տեղեկատվության արտահոսքի երրորդ կողմի ալիքների միջոցով, որոնք կարող են օգտագործվել, օրինակ, թաքնված կապի ալիք կազմակերպելու համար: գործընթացների միջև կամ հայտնաբերել արտահոսքերը Meltdown-ի հարձակումների ժամանակ:

Խոցելիության էությունն այն է, որ EFLAGS պրոցեսորային ռեգիստրում փոփոխությունը, որը տեղի է ունեցել հրահանգների սպեկուլյատիվ կատարման արդյունքում, ազդում է JCC հրահանգների հետագա կատարման ժամանակի վրա (ցատկել, երբ սահմանված պայմանները բավարարվում են): Սպեկուլյատիվ գործողությունները չեն ավարտվել, և արդյունքը անտեսվում է, սակայն EFLAGS-ի անտեսված փոփոխությունը կարող է որոշվել՝ վերլուծելով ՀՎԿ հրահանգների կատարման ժամանակը: Սպեկուլյատիվ կերպով իրականացված ցատկումից առաջ համեմատական ​​գործողությունները, եթե համեմատությունը հաջող է, հանգեցնում է փոքր ուշացման, որը կարող է չափվել և օգտագործվել որպես բովանդակությանը համապատասխանելու հատկանիշ:

Intel պրոցեսորների խոցելիությունը, որը հանգեցնում է տվյալների արտահոսքի երրորդ կողմի ալիքների միջոցով

Ի տարբերություն երրորդ կողմի ալիքների միջոցով այլ նմանատիպ հարձակումների, նոր մեթոդը չի վերլուծում քեշավորված և ոչ քեշավորված տվյալների մուտքի ժամանակի փոփոխությունը և չի պահանջում EFLAGS ռեգիստրի սկզբնական վիճակի վերակայման փուլը, ինչը դժվարացնում է հայտնաբերել և արգելափակել հարձակումը. Որպես ցուցադրություն՝ հետազոտողները իրականացրել են Meltdown-ի հարձակման տարբերակը՝ դրանում կիրառելով նոր մեթոդ՝ սպեկուլյատիվ գործողության արդյունքի մասին տեղեկություններ ստանալու համար։ Meltdown հարձակման ժամանակ տեղեկատվության արտահոսքի կազմակերպման մեթոդի գործարկումը հաջողությամբ ցուցադրվել է Intel Core i7-6700 և i7-7700 պրոցեսորներով համակարգերում Ubuntu 22.04 և Linux 5.15 միջուկով միջավայրում: Intel i9-10980XE պրոցեսոր ունեցող համակարգի վրա հարձակումը հաջողվեց միայն մասամբ:

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

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

Source: opennet.ru

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