Linux միջուկի VFS-ում խոցելիություն, որը թույլ է տալիս մեծացնել ձեր արտոնությունները

Linux-ի միջուկի կողմից տրամադրված Filesystem Context API-ում հայտնաբերվել է խոցելիություն (CVE-2022-0185), որը թույլ է տալիս տեղական օգտագործողին ստանալ արմատային արտոնություններ համակարգի վրա: Խնդիրը հայտնաբերած հետազոտողը հրապարակել է շահագործման ցուցադրում, որը թույլ է տալիս կատարել կոդը որպես root Ubuntu 20.04-ի լռելյայն կազմաձևով: Exploit կոդը նախատեսվում է տեղադրել GitHub-ում մեկ շաբաթվա ընթացքում այն ​​բանից հետո, երբ բաշխումները թողարկեն թարմացում, որը շտկում է խոցելիությունը:

Խոցելիությունը գոյություն ունի legacy_parse_param() ֆունկցիայի մեջ VFS-ում և առաջանում է ֆայլային համակարգերի վրա տրված պարամետրերի առավելագույն չափի պատշաճ ստուգման ձախողման պատճառով, որոնք չեն աջակցում Filesystem Context API-ին: Չափազանց մեծ պարամետրի փոխանցումը կարող է առաջացնել ամբողջ թվային փոփոխականի արտահոսք, որն օգտագործվում է գրվող տվյալների չափը հաշվարկելու համար. կոդը ունի բուֆերային հոսքի ստուգում «if (len > PAGE_SIZE - 2 - չափը)», որը չի նշանակում: աշխատեք, եթե չափի արժեքը 4094-ից մեծ է. ամբողջ թվի ներհոսքի համար ներքևի սահմանով (ամբողջ թվերի ներհոսք, երբ 4096 - 2 - 4095-ը անստորագիր ինտ-ին ձուլում եք, արդյունքը 2147483648 է):

Այս սխալը թույլ է տալիս հատուկ նախագծված ֆայլային համակարգի պատկեր մուտք գործելիս առաջացնել բուֆերային արտահոսք և վերագրանցել միջուկի տվյալները՝ հետևելով հատկացված հիշողության տարածքին: Խոցելիությունը օգտագործելու համար դուք պետք է ունենաք CAP_SYS_ADMIN իրավունքներ, այսինքն. ադմինիստրատորի լիազորությունները. Խնդիրն այն է, որ արտոնություն չունեցող օգտվողը կարող է նման թույլտվություններ ստանալ մեկուսացված կոնտեյներով, եթե համակարգը միացված է օգտատերերի անունների տարածքների աջակցությունը: Օրինակ, Ubuntu-ում և Fedora-ում օգտատերերի անունների տարածքները լռելյայն միացված են, բայց Debian-ում և RHEL-ում միացված չեն (եթե կոնտեյների մեկուսացման հարթակներ չեն օգտագործվում):

Խնդիրն առաջացել է Linux միջուկից 5.1-ից և շտկվել է երեկվա 5.16.2, 5.15.16, 5.10.93, 5.4.173 թարմացումներում: Փաթեթի թարմացումները, որոնք շտկում են խոցելիությունը, արդեն թողարկվել են RHEL-ի, Debian-ի, Fedora-ի և Ubuntu-ի համար: Ուղղումը դեռ հասանելի չէ Arch Linux-ում, Gentoo-ում, SUSE-ում և openSUSE-ում: Որպես անվտանգության լուծում այն ​​համակարգերի համար, որոնք չեն օգտագործում կոնտեյների մեկուսացում, դուք կարող եք sysctl «user.max_user_namespaces» արժեքը սահմանել 0. echo «user.max_user_namespaces=0» > /etc/sysctl.d/userns.conf # sysctl -p /etc/ sysctl.d/userns.conf

Source: opennet.ru

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