Lëshimi i Bubblewrap 0.4.0, midis për krijimin e mjediseve të izoluara

I disponueshëm numri i ri i mjetit Bubblewrap 0.4.0, i destinuar për organizimin e punës së mjediseve të izoluara në Linux dhe që funksionon në nivelin e aplikacioneve të përdoruesve të paburgosur. Në praktikë, Bubblewrap përdoret nga projekti Flatpak si një ndërfaqe për izolimin e aplikacioneve që ekzekutohen nga paketat. Kodi i projektit është shkruar në gjuhën C dhe shpërndahet nën licencën LGPLv2+.

Për izolimin përdoren teknologjitë tradicionale të virtualizimit të kontejnerëve në Linux, të bazuara në përdorimin e cgroups, hapësirave të emrave (namespaces), Seccomp dhe SELinux. Për të kryer operacione me privilegje për konfigurimin e kontejnerit, Bubblewrap ekzekutohet me të drejta root (skedari ekzekutiv me shenjën suid), duke i hequr më pas privilegjet pas përfundimit të inicializimit të kontejnerit.

Aktivizimi në sistem i hapësirave të emrave të identifikuesve të përdoruesve (user namespaces), që lejojnë përdorimin në kontejnerë të një grupi të veçantë identifikuesish, nuk kërkon ndonjë punë, pasi në mënyrë të parazgjedhur nuk funksionon në shumë distribucione (Bubblewrap pozicionohet si një implementim i kufizuar suid i një grupi të mundësive të user namespaces — për të përjashtuar të gjitha identitetet e përdoruesve dhe proceseve nga mjedisi, përdoreshin modet CLONE_NEWUSER dhe CLONE_NEWPID). Për mbrojtje shtesë, programet që ekzekutohen nën menaxhimin e
Bubblewrap ekzekutohen në modin PR_SET_NO_NEW_PRIVS, që ndalon marrjen e privilegjeve të reja, për shembull, kur ka një flamur setuid.

Izolimi në nivelin e sistemit të skedarëve bëhet përmes krijimit të një hapësire të re të emrave të pikave të montimit (mount namespace) me parazgjedhje, në të cilën krijohet një pjesë e zbrazët e rrënjës duke përdorur tmpfs. Në këtë pjesë, sipas nevojës, lidhen pjesë të FS-së së jashtme në modalitetin „mount —bind“ (për shembull, kur ekzekutohet me opsionin „bwrap —ro-bind /usr /usr“, pjesa /usr kalon nga sistemi kryesor në modalitetin vetëm për lexim). Mundësitë rrjetërore kufizohen në qasjen në ndërfaqen loopback me izolimin e skakereve të rrjetit përmes flamujve CLONE_NEWNET dhe CLONE_NEWUTS.

Dallimi kryesor nga projekti i ngjashëm Firejail, i cili gjithashtu përdor modelin e nisjes me aplikimin e setuid, është se në Bubblewrap, shtresa për krijimin e kontejnerëve përfshin vetëm minimumin e nevojshëm të aftësive, ndërsa të gjitha funksionet e avancuara, të nevojshme për të nisur aplikacione grafike, për të ndërvepruar me desktopin dhe për të filtruar kërkesat në Pulseaudio, janë të transferuara në anën e Flatpak dhe ekzekutohen pas heqjes së privilegjeve. Firejail, nga ana tjetër, bashkon në një skedar ekzekutiv të gjitha funksionet përkatëse, gjë që e komplikon auditimin e tij dhe ruajtjen e sigurisë. në nivelin e duhur.

Çlirimi i ri është i dallueshëm për realizimin e mbështetjes për bashkimin e hapësirave ekzistuese të identifikuesve të përdoruesve (user namespaces) dhe proceseve (pid namespaces). Për menaxhimin e lidhjes së hapësirave të emrave janë shtuar flagjet «—userns», «—userns2» dhe «—pidns».
Kjo mundësi nuk funksionon në modalitetin setuid dhe kërkon aplikimin e një modaliteti të veçantë, i cili mund të funksionojë pa marrë të drejtat root, por kërkon aktivizim
hapësirat e përdoruesve në sistem (nga default janë të çaktivizuara në Debian dhe RHEL/CentOS) dhe nuk përjashton mundësinë shfrytëzimin e mundshme e mbetur dobësive për përjashtimin e kufijve «user namespaces». Nga funksionalitetet e reja të Bubblewrap 0.4 gjithashtu përmendet mundësia e ndërtimit me bibliotekën C musl në vend të glibc dhe mbështetje për ruajtjen e informacionit rreth hapësirave të emrave në një skedar me statistika në formatin JSON.

Burimi: opennet.ru

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster