Lëshimi i Bubblewrap 0.6, një shtresë për krijimin e mjediseve të izoluara

Ekziston një lëshim i mjeteve për organizimin e punës së mjediseve të izoluara Bubblewrap 0.6, i cili zakonisht përdoret për të kufizuar aplikacionet individuale të përdoruesve të paprivilegjuar. Në praktikë, Bubblewrap përdoret nga projekti Flatpak si një shtresë për të izoluar aplikacionet e nisura nga paketat. Kodi i projektit është shkruar në C dhe shpërndahet nën licencën LGPLv2+.

Për izolim, përdoren teknologjitë tradicionale të virtualizimit të kontejnerëve Linux, bazuar në përdorimin e cgroups, hapësirave të emrave, Seccomp dhe SELinux. Për të kryer operacione të privilegjuara për të konfiguruar një kontejner, Bubblewrap niset me të drejtat rrënjësore (një skedar i ekzekutueshëm me një flamur suid) dhe më pas rivendos privilegjet pasi kontejneri të inicializohet.

Aktivizimi i hapësirave të emrave të përdoruesve në sistemin e hapësirës së emrave, i cili ju lejon të përdorni grupin tuaj të veçantë të identifikuesve në kontejnerë, nuk kërkohet për funksionim, pasi nuk funksionon si parazgjedhje në shumë shpërndarje (Bubblewrap pozicionohet si një zbatim suid i kufizuar i një nëngrupi i aftësive të hapësirave të emrave të përdoruesve - për të përjashtuar të gjithë identifikuesit e përdoruesve dhe të procesit nga mjedisi, përveç atij aktual, përdoren mënyrat CLONE_NEWUSER dhe CLONE_NEWPID). Për mbrojtje shtesë, programet e ekzekutuara nën Bubblewrap nisen në modalitetin PR_SET_NO_NEW_PRIVS, i cili ndalon marrjen e privilegjeve të reja, për shembull, nëse është i pranishëm flamuri setuid.

Izolimi në nivelin e sistemit të skedarëve realizohet duke krijuar si parazgjedhje një hapësirë ​​të re të montimit, në të cilën krijohet një ndarje rrënjë bosh duke përdorur tmpfs. Nëse është e nevojshme, ndarjet e jashtme FS i bashkëngjiten kësaj ndarje në modalitetin "mount —bind" (për shembull, kur lëshohet me opsionin "bwrap —ro-bind /usr /usr", ndarja /usr përcillet nga sistemi kryesor në modalitetin vetëm për lexim). Aftësitë e rrjetit janë të kufizuara në aksesin në ndërfaqen loopback me izolimin e stivës së rrjetit nëpërmjet flamujve CLONE_NEWNET dhe CLONE_NEWUTS.

Dallimi kryesor nga projekti i ngjashëm Firejail, i cili gjithashtu përdor modelin e nisjes setuid, është se në Bubblewrap shtresa e krijimit të kontejnerit përfshin vetëm aftësitë e nevojshme minimale dhe të gjitha funksionet e avancuara të nevojshme për ekzekutimin e aplikacioneve grafike, ndërveprimin me desktopin dhe kërkesat për filtrim. në Pulseaudio, transferohet në anën Flatpak dhe ekzekutohet pasi të jenë rivendosur privilegjet. Firejail, nga ana tjetër, kombinon të gjitha funksionet e lidhura në një skedar të ekzekutueshëm, gjë që e bën të vështirë auditimin dhe ruajtjen e sigurisë në nivelin e duhur.

Në publikimin e ri:

  • Mbështetje e shtuar për sistemin e montimit Meson. Mbështetja për ndërtimin me Autotools është ruajtur për momentin, por do të hiqet në një version të ardhshëm.
  • Zbatuar opsionin "--add-seccomp" për të shtuar më shumë se një program seccomp. U shtua një paralajmërim se nëse specifikoni përsëri opsionin "--seccomp", do të zbatohet vetëm parametri i fundit.
  • Dega kryesore në magazinë git është riemërtuar në main.
  • U shtua mbështetje e pjesshme për specifikimin REUSE, i cili unifikon procesin e specifikimit të informacionit të licencës dhe të drejtës së autorit. Shumë skedarë kodesh kanë të shtuar titujt SPDX-License-Identifier. Ndjekja e udhëzimeve të REUSE e bën më të lehtë përcaktimin automatik të licencës për cilat pjesë të kodit të aplikacionit.
  • U shtua duke kontrolluar vlerën e numëruesit të argumentit të linjës së komandës (argc) dhe u zbatua një dalje emergjente nëse numëruesi është zero. Ndryshimi ndihmon në bllokimin e çështjeve të sigurisë të shkaktuara nga trajtimi i gabuar i argumenteve të kaluara të linjës së komandës, si CVE-2021-4034 në Polkit.

Burimi: opennet.ru

Shto një koment