Տեղական արմատային խոցելիություններ Snap փաթեթի կառավարման գործիքակազմում

Qualys-ը հայտնաբերել է երկու խոցելիություն (CVE-2021-44731, CVE-2021-44730) snap-confine կոմունալում, որոնք ապահովված են SUID արմատային դրոշակով և կանչվել են snapd գործընթացի միջոցով՝ ստեղծելու գործադիր միջավայր ինքնակառավարման մեջ ներկայացված հավելվածների համար: snap ձևաչափով: Խոցելիությունը թույլ է տալիս տեղական ոչ արտոնյալ օգտատիրոջը համակարգում արմատային արտոնություններով կոդը գործարկել: Խնդիրները լուծվում են Ubuntu 21.10, 20.04 և 18.04 snapd փաթեթի այսօրվա թարմացմամբ:

Առաջին խոցելիությունը (CVE-2021-44730) թույլ է տալիս հարձակում գործել կոշտ կապի մանիպուլյացիայի միջոցով, սակայն պահանջում է անջատել համակարգի կոշտ կապի պաշտպանությունը (sysctl fs.protected_hardlinks-ը դնելով 0-ի): Խնդիրն առաջացել է snap-update-ns և snap-discard-ns օգնական ծրագրերի գործարկվող ֆայլերի գտնվելու վայրի սխալ ստուգման պատճառով, որոնք գործում են որպես root: Այս ֆայլերի ուղին հաշվարկվել է sc_open_snapd_tool() ֆունկցիայի վրա՝ հիմնվելով /proc/self/exe-ի իր սեփական ճանապարհի վրա, որը թույլ է տալիս ստեղծել կոշտ հղում՝ snap-confine ձեր գրացուցակում և տեղադրել snap-ի ձեր սեփական տարբերակները: update-ns և snap- utilities այս գրացուցակում discard-ns: Կոշտ հղման միջոցով գործարկվելուց հետո, արմատային իրավունքներով snap-confine-ը կգործարկի snap-update-ns և snap-discard-ns ֆայլերը ընթացիկ գրացուցակից, որոնք փոխարինվում են հարձակվողի կողմից:

Երկրորդ խոցելիությունը առաջանում է ռասայական վիճակից և կարող է օգտագործվել Ubuntu Desktop-ի լռելյայն կազմաձևում: Որպեսզի շահագործումը հաջողությամբ աշխատի Ubuntu Server-ում, տեղադրման ժամանակ դուք պետք է ընտրեք փաթեթներից մեկը «Featured Server Snaps» բաժնից: Race պայմանն ակնհայտ է setup_private_mount() ֆունկցիայում, որը կանչվել է snap փաթեթի համար մոնտաժային կետի անվանատարածքի պատրաստման ժամանակ: Այս ֆունկցիան ստեղծում է ժամանակավոր գրացուցակ «/tmp/snap.$SNAP_NAME/tmp» կամ օգտագործում է գոյություն ունեցողը՝ տեղեկատուները snap փաթեթի մեջ կապելու համար:

Քանի որ ժամանակավոր գրացուցակի անվանումը կանխատեսելի է, հարձակվողը կարող է դրա բովանդակությունը փոխարինել խորհրդանշական հղումով՝ սեփականատիրոջը ստուգելուց հետո, բայց նախքան մոնտաժային համակարգի զանգը կանչելը: Օրինակ, դուք կարող եք ստեղծել «/tmp/snap.lxd/tmp» symlink /tmp/snap.lxd գրացուցակում, որը մատնանշում է կամայական գրացուցակը, և զանգը դեպի mount() կհետևի symlink-ին և տեղադրելու գրացուցակը snap անվանատարածք. Նմանապես, դուք կարող եք տեղադրել ձեր բովանդակությունը /var/lib-ում և, փոխարինելով /var/lib/snapd/mount/snap.snap-store.user-fstab, կազմակերպել ձեր /etc գրացուցակի մոնտաժումը անվանատարածքում: snap փաթեթը՝ ձեր գրադարանի բեռնումը արմատային իրավունքներով կազմակերպելու համար՝ փոխարինելով /etc/ld.so.preload:

Նշվում է, որ Exploit-ի ստեղծումը պարզվեց, որ ոչ տրիվիալ խնդիր է, քանի որ snap-confine ծրագիրը գրված է Go-ում՝ օգտագործելով անվտանգ ծրագրավորման տեխնիկա, ունի պաշտպանություն՝ հիմնված AppArmor պրոֆիլների վրա, զտում է համակարգի կանչերը՝ հիմնված seccomp մեխանիզմի վրա և օգտագործում: մեկուսացման համար լեռան անվանական տարածքը: Այնուամենայնիվ, հետազոտողները կարողացան պատրաստել աշխատանքային շահագործում համակարգի վրա արմատային իրավունքներ ձեռք բերելու համար: Exploit կոդը կհրապարակվի մի քանի շաբաթից, երբ օգտվողները տեղադրեն տրամադրված թարմացումները:

Source: opennet.ru

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