cryptsetup-ում խոցելիություն, որը թույլ է տալիս անջատել կոդավորումը LUKS2 միջնորմներում

Cryptsetup փաթեթում հայտնաբերվել է խոցելիություն (CVE-2021-4122), որն օգտագործվում է Linux-ում սկավառակի միջնորմների գաղտնագրման համար, ինչը թույլ է տալիս անջատել գաղտնագրումը LUKS2 (Linux Unified Key Setup) ձևաչափով բաժանումների վրա՝ փոփոխելով մետատվյալները: Խոցելիությունը օգտագործելու համար հարձակվողը պետք է ֆիզիկական հասանելիություն ունենա գաղտնագրված լրատվամիջոցներին, այսինքն. Մեթոդը իմաստ ունի հիմնականում գաղտնագրված արտաքին պահեստավորման սարքերի վրա հարձակվելու համար, ինչպիսիք են ֆլեշ կրիչները, որոնց հարձակվողը մուտք ունի, բայց չգիտի տվյալների վերծանման գաղտնաբառը:

Հարձակումը կիրառելի է միայն LUKS2 ձևաչափի համար և կապված է մետատվյալների մանիպուլյացիայի հետ, որը պատասխանատու է «առցանց վերագաղտնագրման» ընդլայնման ակտիվացման համար, ինչը թույլ է տալիս, եթե անհրաժեշտ է փոխել մուտքի բանալին, սկսել տվյալների վերագաղտնագրման գործընթացը թռիչքի ժամանակ: առանց բաժանման հետ աշխատանքը դադարեցնելու: Քանի որ նոր բանալիով վերծանման և գաղտնագրման գործընթացը շատ ժամանակ է պահանջում, «առցանց վերագաղտնագրումը» հնարավորություն է տալիս չընդհատել աշխատանքը բաժանման հետ և կատարել վերագաղտնագրում հետին պլանում՝ աստիճանաբար վերակոդավորելով տվյալները մի բանալիից մյուսը: . Հնարավոր է նաև ընտրել դատարկ թիրախային բանալի, որը թույլ է տալիս հատվածը վերափոխել վերծանված ձևի։

Հարձակվողը կարող է փոփոխություններ կատարել LUKS2 մետատվյալներում, որոնք նմանակում են ապակոդավորման գործողության ընդհատումը ձախողման հետևանքով և հասնել բաժանման մի մասի վերծանմանը սեփականատիրոջ կողմից փոփոխված դրայվի ակտիվացումից և օգտագործելուց հետո: Այս դեպքում փոփոխված սկավառակը միացրած և ճիշտ գաղտնաբառով ապակողպած օգտատերը չի ստանում որևէ նախազգուշացում ընդհատված վերագաղտնագրման գործողության վերականգնման գործընթացի մասին և կարող է իմանալ այս գործողության ընթացքի մասին միայն «luks Dump»-ի միջոցով: հրաման. Տվյալների քանակը, որը հարձակվողը կարող է վերծանել, կախված է LUKS2 վերնագրի չափից, սակայն լռելյայն չափով (16 ՄԲ) այն կարող է գերազանցել 3 ԳԲ-ը:

Խնդիրն առաջանում է նրանով, որ չնայած վերագաղտնագրումը պահանջում է նոր և հին ստեղների հեշերի հաշվարկ և ստուգում, ապա գաղտնազերծումը սկսելու համար հեշ չի պահանջվում, եթե նոր վիճակը ենթադրում է գաղտնագրման համար բաց տեքստի բանալի բացակայություն: Բացի այդ, LUKS2 մետատվյալները, որոնք սահմանում են կոդավորման ալգորիթմը, պաշտպանված չեն փոփոխություններից, եթե այն ընկնի հարձակվողի ձեռքը: Խոցելիությունը արգելափակելու համար մշակողները LUKS2-ին ավելացրել են լրացուցիչ պաշտպանություն մետատվյալների համար, որի համար այժմ ստուգվում է լրացուցիչ հեշը, որը հաշվարկվում է հայտնի բանալիների և մետատվյալների բովանդակության հիման վրա, այսինքն. հարձակվողն այլևս չի կարող գաղտնի կերպով փոխել մետատվյալները՝ առանց վերծանման գաղտնաբառը իմանալու:

Տիպիկ հարձակման սցենարը պահանջում է, որ հարձակվողը կարողանա մի քանի անգամ ձեռք բերել սկավառակը: Նախ, հարձակվողը, ով չգիտի մուտքի գաղտնաբառը, փոփոխություններ է կատարում մետատվյալների տարածքում՝ գործարկելով տվյալների մի մասի վերծանումը հաջորդ անգամ, երբ սկավառակն ակտիվանա: Այնուհետև սկավառակը վերադարձվում է իր տեղը, և հարձակվողը սպասում է, մինչև օգտագործողը միացնի այն՝ մուտքագրելով գաղտնաբառ: Երբ սարքն ակտիվանում է օգտատիրոջ կողմից, սկսվում է ֆոնային վերագաղտնագրման գործընթաց, որի ընթացքում գաղտնագրված տվյալների մի մասը փոխարինվում է ապակոդավորված տվյալներով։ Ավելին, եթե հարձակվողին հաջողվի նորից ձեռքը դնել սարքի վրա, ապա սկավառակի որոշ տվյալներ կլինեն ապակոդավորված տեսքով:

Խնդիրը հայտնաբերվել է cryptsetup նախագծի սպասարկողի կողմից և շտկվել cryptsetup 2.4.3 և 2.3.7 թարմացումներում: Բաշխումներում խնդիրը շտկելու համար ստեղծվող թարմացումների կարգավիճակը կարելի է հետևել այս էջերում՝ Debian, RHEL, SUSE, Fedora, Ubuntu, Arch: Խոցելիությունն ի հայտ է գալիս միայն cryptsetup 2.2.0-ի թողարկումից հետո, որը աջակցում է «առցանց վերագաղտնագրման» գործողությանը: Որպես պաշտպանության լուծում, կարող է օգտագործվել «--disable-luks2-reencryption» տարբերակով գործարկումը:

Source: opennet.ru

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