Հրահանգների կատարման ժամանակի կախվածությունը ARM և Intel պրոցեսորների տվյալներից

Էրիկ Բիգերսը՝ Adiantum ծածկագրի մշակողներից մեկը և Linux միջուկի fscrypt ենթահամակարգի պահպանողը, առաջարկել է մի շարք patches՝ արգելափակելու անվտանգության խնդիրները, որոնք բխում են Intel պրոցեսորների առանձնահատկությունից, որը չի երաշխավորում տարբեր մշակված տվյալների մշտական ​​կատարման ժամանակ: Խնդիրն ի հայտ է գալիս Intel պրոցեսորներում՝ սկսած Ice Lake ընտանիքից։ Նման խնդիր նկատվում է ARM պրոցեսորներում։

Այս հրահանգներում մշակված տվյալներից հրահանգների կատարման ժամանակի կախվածության առկայությունը կարկատների հեղինակի կողմից դիտվում է որպես պրոցեսորների խոցելիություն, քանի որ նման վարքագիծը չի կարող երաշխավորել համակարգում կատարված գաղտնագրման գործողությունների անվտանգությունը: Կրիպտոգրաֆիկ ալգորիթմների բազմաթիվ իրականացումներ նախատեսված են ապահովելու համար, որ տվյալները չեն ազդում հրահանգների կատարման ժամանակի վրա, և այս վարքագծի խախտումը կարող է հանգեցնել կողմնակի ալիքի գրոհների ստեղծմանը, որոնք վերականգնում են տվյալները՝ հիմնվելով դրա մշակման ժամանակի վերլուծության վրա:

Հնարավոր է, գործարկման ժամանակի տվյալների կախվածությունը կարող է օգտագործվել նաև հարձակումներ գործարկելու համար՝ միջուկի տվյալները օգտագործողի տարածությունից որոշելու համար: Ըստ Էրիկ Բիգերսի, մշտական ​​կատարման ժամանակը լռելյայն չի տրամադրվում նույնիսկ այն հրահանգների համար, որոնք կատարում են հավելում և XOR գործողություններ, ինչպես նաև մասնագիտացված AES-NI հրահանգների համար (թեստերով չհաստատված տեղեկատվությունը, ըստ այլ տվյալների, կա մեկ ուշացում: ցիկլը վեկտորի բազմապատկման և բիթերի հաշվման ժամանակ):

Այս վարքագիծն անջատելու համար Intel-ը և ARM-ն առաջարկել են նոր դրոշակներ՝ PSTATE բիթ DIT (Տվյալների անկախ ժամանակացույց) ARM պրոցեսորների համար և MSR բիթ DOITM (Տվյալների օպերանդի անկախ ժամանակի ռեժիմ) Intel պրոցեսորների համար՝ վերադարձնելով հին վարքը մշտական ​​կատարման ժամանակով: Intel-ը և ARM-ը խորհուրդ են տալիս ակտիվացնել պաշտպանությունը կարևոր կոդի համար, սակայն իրականում կրիտիկական հաշվարկը կարող է տեղի ունենալ միջուկի և օգտագործողի տարածության ցանկացած կետում, ուստի մենք դիտարկում ենք DOITM և DIT ռեժիմները ամբողջ միջուկի համար մշտապես միացնելը:

ARM պրոցեսորների համար Linux 6.2 միջուկի ճյուղն արդեն ընդունել է պատչեր, որոնք փոխում են միջուկի վարքագիծը, սակայն այդ պատչերը համարվում են անբավարար, քանի որ դրանք ծածկում են միայն միջուկի կոդը և չեն փոխում օգտագործողի տարածության վարքը: Intel պրոցեսորների համար պաշտպանության ընդգրկումը դեռ վերանայման փուլում է։ Կարկատակի ազդեցությունը կատարողականի վրա դեռևս չի չափվել, սակայն, ըստ Intel-ի փաստաթղթերի, DOITM ռեժիմը միացնելը նվազեցնում է կատարողականությունը (օրինակ՝ անջատելով որոշ օպտիմալացումներ, օրինակ՝ տվյալների հատուկ նախաբեռնումը), իսկ ապագա պրոցեսորների մոդելներում արդյունավետության նվազումը կարող է մեծանալ։ .

Source: opennet.ru

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