Polkit-ում խոցելիություն, որը թույլ է տալիս մեծացնել ձեր արտոնությունները համակարգում

Polkit բաղադրիչում հայտնաբերվել է խոցելիություն (CVE-2021-3560), որն օգտագործվում է բաշխումների մեջ՝ թույլ տալու համար անարտոնյալ օգտատերերին կատարել գործողություններ, որոնք պահանջում են մուտքի բարձր իրավունքներ (օրինակ՝ USB կրիչի տեղադրում), ինչը թույլ է տալիս տեղային օգտագործողին. ձեռք բերել արմատային իրավունքներ համակարգում: Խոցելիությունը շտկված է Polkit 0.119 տարբերակում։

Խնդիրն առկա է 0.113 թողարկումից ի վեր, սակայն շատ բաշխումներ, այդ թվում՝ RHEL, Ubuntu, Debian և SUSE, ազդակիր ֆունկցիոնալությունը վերադարձրել են փաթեթների մեջ՝ հիմնված ավելի հին Polkit թողարկումների վրա (փաթեթների շտկումներն արդեն հասանելի են բաշխումներում):

Խնդիրն արտահայտվում է polkit_system_bus_name_get_creds_sync() ֆունկցիայի մեջ, որը ստանում է արտոնությունների բարձրացում պահանջող գործընթացի նույնացուցիչները (uid և pid): Գործընթացը նույնականացվում է Polkit-ի կողմից՝ նշանակելով եզակի անուն DBus-ում, որն այնուհետև օգտագործվում է արտոնությունները ստուգելու համար: Եթե ​​գործընթացն անջատվում է dbus-daemon-ից polkit_system_bus_name_get_creds_sync մշակիչի մեկնարկից անմիջապես առաջ, մշակողը եզակի անվան փոխարեն ստանում է սխալի կոդը:

Խոցելիությունը պայմանավորված է նրանով, որ վերադարձված սխալի կոդը պատշաճ կերպով չի մշակվում, և polkit_system_bus_name_get_creds_sync() ֆունկցիան FALSE-ի փոխարեն վերադարձնում է TRUE, չնայած որ չի կարողանում գործընթացը համապատասխանեցնել uid/pid-ին և հաստատել գործընթացի համար պահանջվող արտոնությունները: Կոդը, որից կանչվել է polkit_system_bus_name_get_creds_sync() ֆունկցիան, ենթադրում է, որ ստուգումը հաջող է եղել, և արտոնությունները մեծացնելու հարցումը եկել է արմատից, այլ ոչ թե արտոնյալ օգտվողից, ինչը հնարավորություն է տալիս կատարել արտոնյալ գործողություններ՝ առանց հավելյալ նույնականացման և հավատարմագրերի ստուգման:

Source: opennet.ru

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