numri i ri i mjetit , 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 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 , 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ë. .
Ă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ë 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
