Bubblewrap 0.4.0 թողարկումը, ազատ կացարանների ստեղծման շերտը

Հասանելի է նոր թողարկում գործիքների հավաքածուի Bubblewrap 0.4.0, նախատեսված է Linux-ում մեկուսացված միջավայրերի աշխատանքն կազմակերպելու համար և աշխատում է ոչ իրավասու օգտվողների համար կիրառվող մակարդակում։ Իրականում Bubblewrap-ը օգտագործվում է Flatpak նախագծի կողմից որպես շերտ՝ փաթեթներից գործարկվող ծրագրերի մեկուսացման համար։ Ծրագրի կոդը գրել է C լեզվով և բաշխվում է ելույթ շնորհիվ LGPLv2+ լիցենզիայի։

Մեկուսացման համար օգտագործվում են ավանդական Linux-յան կոնտեյներային վիրտուալացման տեխնոլոգիաները, հիմնված cgroups-ի, անվանումների տարածքների (namespaces), Seccomp-ի և SELinux-ի օգտագործման վրա։ Կոնտեյները պարամետրավորելու համար Bubblewrap-ը запускается root իրավունքներով (executable file with suid flag) և՝ իրավունքները կրճատվում են կոնտեյների իի մեջբերումից հետո։

Օգտագործող անվանումների տարածքների (user namespaces) ակտիվացումը համակարգում, որը թույլ է տալիս կոնտեյներներում օգտագործել առանձին ինքնատիպ իրողություն, աշխատանքի համար չի պահանջվում, քանի որ默认情况下 չի աշխատում բազմաթիվ դիստրիբյուտորներում (Bubblewrap-ը կազմված է որպես սահմանափակ suid իրականացման ենթաբառի user namespaces հնարավորությունների — օգտագործելով CLONE_NEWUSER և CLONE_NEWPID ռեժիմներ բոլոր օգտվողների և գործընթացների անվանումները առանձնացնելու համար։ Ավելորդ համապարփակության համար, Bubblewrap-ի կառավարած ծրագրերը запускаются PR_SET_NO_NEW_PRIVS ռեժիմում, որն արգելափակում է նոր իրավունքների ստացումը, օրինակ՝ setuid դրանով ներկա լինելու դեպքում։
Ֆայլային համակարգերի մակարդակում մեկուսացումը իրականացվում է ներարկելով նոր կետերի ձեւաչափի տարածքները (mount namespace), որտեղ tmpfs օգտագործելով ստեղծվում է դատարկ արմատային բաժին։ Այս բաժնում հնարավորության դեպքում միացվում են արտաքին FS բաժինները «mount —bind» ռեժիմով (օրինակ ՝ c «bwrap —ro-bind /usr /usr» օպցիաիսկ բաժինը /usr փոխանցվում է հիմնական համակարգից միայն անվճար մեկուսացվող ռեժիմով)։ Մանրամասները սահմանափակվում են loopback-հանդիպակների հասանելիությամբ՝ ցանցի ջոկատը մեկուսացնելով CLONE_NEWNET և CLONE_NEWUTS դրոշների միջոցով։

Ակնհայտ տարբերություն, որը նման ծրագրից

Firejail , որը նույնպես օգտագործում է setuid կիրառման մոդելի միջոցով, այն է, որ Bubblewrap-ում կոնտեյներների ստեղծման շերտը ներառում է միայն անհրաժեշտ նվազագույն հնարավորությունները, իսկ գրաֆիկական ծրագրերի գործարկման, աշխատակազմի հետ փոխգործակցության և Pulseaudio-ի գրանցման ֆիլտրացման համար անհրաժեշտ բոլոր ընդարձակ ֆունկցիաները տեղափոխվում են Flatpak-ի կողմը և իրականացվում են արդեն իրավունքը նվազեցնելուց հետո։ Firejail-ն էլ համախմբում է բոլոր հարակից հնարավորությունները մեկ գործարկող ֆայլում, ինչը բարդացնում է դրա աուդիտն ու անվտանգության պահպանումըարժանի մակարդակում должном уровне.

Նոր թողարկումը առանձնանում է օգտագործողի Identifiers (user namespaces) և գործընթացների (pid namespaces) առկա տարածքների միացման աջակցությամբ: Տարածքների միացումը կառավարելու համար ավելացվել են «—userns», «—userns2» և «—pidns» դրոշները:
Այս հնարավորությունը չի աշխատում setuid ռեժիմում և պահանջում է առանձին ռեժիմի կիրառություն, որը կարող է աշխատել առանց root իրավունքների ստացման, սակայն անհրաժեշտ է ակտիվացում:
օգտվողի namespaces համակարգում (նորմալ դեպքում անջատված է Debian և RHEL/CentOS-ում) և չի исключает հնարավորությունը: շահագործման հնարավորաբար մնացած վարձում օգտագործողի namespaces սահմանափակումների համար: Նոր Bubblewrap 0.4 հնարավորություններից ցանկանում ենք նշել նաև, որ այն կարող է կառուցվել musl C գրադարանից glibc-ի փոխարեն և աջակցում է namespaces-ի մասին տեղեկությունների պահպանմանը JSON ձևաչափի վիճակագրական ֆայլում:

Ընտանիք: opennet.ru

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster