Doli i instrumenteve për organizimin e punës së ambienteve të izoluar Bubblewrap 0.6, i përdorur zakonisht për të kufizuar aplikacionet e përdoruesve të pa privilegjuar. Në praktikë, Bubblewrap përdoret nga projekti Flatpak si një shtresë për izolimin e aplikacioneve që fillojnë 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 user namespaces, qĂ« lejojnĂ« pĂ«rdorimin e njĂ« grupi tĂ« veçantĂ« identifikuesish brenda kontejnerĂ«ve, nuk kĂ«rkohet pĂ«r funksionimin, pasi si parazgjedhje kjo veçori nuk punon nĂ« shumĂ« shpĂ«rndarje (Bubblewrap pozicionohet si njĂ« implementim i kufizuar suid i njĂ« nĂ«nkompleti tĂ« mundĂ«sive tĂ« user namespaces â pĂ«r tĂ« pĂ«rjashtuar nga mjedisi tĂ« gjithĂ« identifikuesit e pĂ«rdoruesve dhe proceseve, pĂ«rveç atij aktual, pĂ«rdoren mĂ«nyrat CLONE_NEWUSER dhe CLONE_NEWPID). PĂ«r mbrojtje shtesĂ«, programet e ekzekutuara nĂ«n kontrollin e Bubblewrap nisen nĂ« regjimin PR_SET_NO_NEW_PRIVS, i cili ndalon marrjen e privilegjeve tĂ« reja, pĂ«r shembull nĂ« prani tĂ« flamurit 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 setuid, është se te Bubblewrap shtresa për krijimin e kontejnerëve përfshin vetëm minimumin e nevojshëm të funksioneve, ndërsa të gjitha veçoritë e avancuara të nevojshme për nisjen e aplikacioneve grafike, ndërveprimin me desktop-in dhe filtrimin e thirrjeve ndaj Pulseaudio janë zhvendosur te Flatpak dhe ekzekutohen vetëm pasi privilegjet të jenë hequr. Ndërsa Firejail bashkon në një skedar të vetëm të ekzekutueshëm të gjitha funksionet shoqëruese, gjë që e bën më të vështirë auditimin dhe ruajtjen e sigurisë në nivelin e duhur.
NĂ« versionin e ri:
- Shtuar mbështetje për sistemin e ndërtimit Meson. Mbështetje për ndërtimin me Autotools është ruajtur ende, por do të hiqet në një nga lirimet e ardhshme.
- Implementuar opsioni "âadd-seccomp" pĂ«r tĂ« shtuar mĂ« shumĂ« se njĂ« program seccomp. Shtuar njĂ« paralajmĂ«rim se, nĂ«se opsioni "âseccomp" pĂ«rsĂ«ritet, do tĂ« aplikohet vetĂ«m parametri i fundit.
- Dega master në git-repositorin është rinovuar në main.
- Shtuar mbështetje të pjesshme për specifikimin REUSE, që unifikon procesin e përcaktimit të informacionit rreth licencave dhe të drejtave të autorit. Në shumë skedarë me kod janë shtuar titujt SPDX-License-Identifier. Të ndjekurit e rekomandimeve REUSE lejon thjeshtimin e identifikimit automatik të licencës që aplikohet për komponentët e ndryshëm të kodit të aplikacionit.
- Shtuar kontrolli i vlerës së numrit të argumenteve të linjës së komandës (argc) dhe realizuar dalja urgjente në rast se numri është zero. Ky ndryshim lejon bllokimin e problemeve të sigurisë të shkaktuara nga përpunimi i gabuar i argumenteve të kaluar në linjën e komandës, siç është CVE-2021-4034 në Polkit.
Burimi: opennet.ru
