A fost publicată o nouă versiune a instrumentarului pentru organizarea muncii în medii izolate Bubblewrap 0.12, utilizat pentru restricționarea aplicațiilor individuale ale utilizatorilor fără privilegii. În practică, Bubblewrap este folosit de proiectul Flatpak ca un strat pentru izolarea aplicațiilor lansate din pachete. Izolarea se bazează pe tehnologii tradiționale de virtualizare a containerelor din Linux, bazate pe utilizarea cgroups, spații de nume (namespaces), Seccomp și SELinux. Codul proiectului este scris în limbajul C și este distribuit sub licența LGPLv2.1+.
Izolarea la nivelul sistemului de fișiere se realizează prin crearea, în mod implicit, a unui nou spațiu de nume pentru punctele de montare (mount namespace), în care, cu ajutorul tmpfs, se creează un director rădăcină gol. În acest director, dacă este necesar, se atașează partiții ale FS externe în modul «mount —bind» (de exemplu, la pornirea cu opțiunea «bwrap —ro-bind /usr /usr», partiția /usr este transmisă din sistemul principal în modul doar pentru citire). Capacitățile de rețea sunt restricționate la accesul la interfața loopback, izolând stiva de rețea prin flagurile CLONE_NEWNET și CLONE_NEWUTS.
Pentru a exclude toate identificatoarele inutile ale utilizatorilor și proceselor din mediul izolat creat, se pot utiliza modurile CLONE_NEWUSER (user namespace) și CLONE_NEWPID (PID namespace), iar pentru a interzice obținerea de noi privilegii se aplică modul PR_SET_NO_NEW_PRIVS. Privilegiile necesare sunt obținute prin intermediul «user namespace».
În noua versiune:
- Licența pentru cod a fost modificată de la LGPL 2.0+ la LGPL 2.1+.
- A fost oprit suportul pentru compilarea sub formă de fișier executabil care obține privilegii suplimentare prin intermediul flagului suid root. Existența suportului pentru «user namespace» în sistem devine acum obligatorie. Motivul invocat este dificultatea de întreținere a opțiunii cu flagul suid în contextul suportului extins pentru «user namespace» în distribuțiile actuale.
- A fost adăugată opțiunea «—not-a-security-boundary», care, atunci când este activată, face ca unele eșecuri în configurarea mediu-ului de izolare sandbox, cum ar fi remontarea subdirectorului, să nu ducă la o închidere de urgență.
- A fost adăugată opțiunea de construcție «assume_kernel», care dezactivează asigurarea compatibilității cu nuclee Linux mai vechi decât versiunea specificată. De exemplu, specificarea versiunilor 5.6.0+ va duce la excluderea unei implementări alternative a funcționalității «openat2(RESOLVE_IN_ROOT)».
Sursa: opennet.ro
