Lansarea Bubblewrap 0.4.0, un strat pentru crearea de medii izolate

Disponibil noua versiune a setului de instrumente Folie cu bule 0.4.0, conceput pentru a organiza munca în medii izolate în Linux și care operează la nivelul aplicației utilizatorilor neprivilegiati. În practică, Bubblewrap este folosit de proiectul Flatpak ca strat pentru a izola aplicațiile lansate din pachete. Codul proiectului este scris în C și distribuit de licențiat conform LGPLv2+.

Pentru izolare, se folosesc tehnologii tradiționale de virtualizare a containerelor Linux, bazate pe utilizarea cgroups, namespaces, Seccomp și SELinux. Pentru a efectua operațiuni privilegiate pentru a configura un container, Bubblewrap este lansat cu drepturi de rădăcină (un fișier executabil cu un steag suid) și apoi resetează privilegiile după inițializarea containerului.

Activarea spațiilor de nume de utilizator în sistemul de spații de nume, care vă permite să utilizați propriul set separat de identificatori în containere, nu este necesară pentru funcționare, deoarece nu funcționează implicit în multe distribuții (Bubblewrap este poziționat ca o implementare limitată a unui subsetul de capacități de spații de nume de utilizator - pentru a exclude toți identificatorii de utilizator și de proces din mediu, cu excepția celui actual, se folosesc modurile CLONE_NEWUSER și CLONE_NEWPID). Pentru protecție suplimentară, executabil sub control
Programele Bubblewrap sunt lansate în modul PR_SET_NO_NEW_PRIVS, care interzice obținerea de noi privilegii, de exemplu, dacă este prezent indicatorul setuid.

Izolarea la nivel de sistem de fișiere este realizată prin crearea unui nou spațiu de nume de montare în mod implicit, în care o partiție rădăcină goală este creată folosind tmpfs. Dacă este necesar, partițiile externe FS sunt atașate acestei partiții în modul „mount —bind” (de exemplu, când sunt lansate cu opțiunea „bwrap —ro-bind /usr /usr”, partiția /usr este redirecționată de la sistemul principal în modul numai citire). Capacitățile rețelei sunt limitate la accesul la interfața de loopback cu izolarea stivei de rețea prin semnalizatoarele CLONE_NEWNET și CLONE_NEWUTS.

Diferența cheie față de un proiect similar închisoare de foc, care folosește și un model de lansare setuid, este că în Bubblewrap stratul de creare a containerului include doar capacitățile minime necesare, iar toate funcțiile avansate necesare rulării aplicațiilor grafice, interacțiunii cu desktopul și filtrarea apelurilor către Pulseaudio sunt externalizate Flatpak și sunt executate după ce privilegiile au fost resetate. Firejail, pe de altă parte, combină toate funcțiile conexe într-un singur fișier executabil, ceea ce face dificilă auditarea și menținerea securității pe nivel adecvat.

Noua versiune se remarcă prin implementarea suportului pentru alăturarea spațiilor de nume de utilizatori existente și a spațiilor de nume de procesare pid. Pentru a controla conexiunea spațiilor de nume, au fost adăugate steaguri „--userns”, „--userns2” și „-pidns”.
Această caracteristică nu funcționează în modul setuid și necesită utilizarea unui mod separat care poate funcționa fără a obține drepturi de root, dar necesită activare
spații de nume de utilizator pe sistem (dezactivate implicit pe Debian și RHEL/CentOS) și nu exclude posibilitatea exploatare potenţial rămas vulnerabilități pentru restricțiile „spații de nume de utilizator”. Noile caracteristici ale Bubblewrap 0.4 includ, de asemenea, capacitatea de a construi cu biblioteca musl C în loc de glibc și suport pentru salvarea informațiilor despre spațiul de nume într-un fișier cu statistici în format JSON.

Sursa: opennet.ru

Adauga un comentariu