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
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
Sursa: opennet.ru