Lansarea Bubblewrap 0.8, un strat pentru crearea de medii izolate

Este disponibilă versiunea 0.8 a instrumentului Bubblewrap pentru crearea de medii izolate, utilizat în mod obișnuit pentru restricționarea aplicațiilor individuale ale utilizatorilor fără privilegii. În practică, Bubblewrap este folosit de proiectul Flatpak ca un strat de izolare pentru aplicațiile lansate din pachete. Codul proiectului este scris în limbajul C și este distribuit sub licența LGPLv2+.

Pentru izolare se folosesc tehnologii tradiționale de virtualizare a containerelor în Linux, bazate pe utilizarea cgroups, spațiilor de nume (namespaces), Seccomp și SELinux. Pentru a efectua operațiuni privilegiate de configurare a containerului, Bubblewrap este lansat cu drepturi root (fișierul executabil are flag-ul suid) cu resetarea privilegiilor după finalizarea inițializării containerului.

Activarea sistemului de spații de nume pentru identificatorul utilizatorului (user namespaces), care permit utilizarea unui set propriu de identificatori în containere, nu este necesară pentru funcționare, deoarece în mod implicit nu funcționează în multe distribuții (Bubblewrap este poziționat ca o implementare suid limitată a unui subset de funcționalități user namespaces — pentru a exclude toți identificatorii utilizatorilor și proceselor din mediu, cu excepția celui curent, se utilizează modurile CLONE_NEWUSER și CLONE_NEWPID). Pentru o protecție suplimentară, programele rulabile sub Bubblewrap sunt lansate în modul PR_SET_NO_NEW_PRIVS, care interzice obținerea de noi privilegii, de exemplu, în prezența flag-ului setuid.

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.

Diferența cheie față de proiectul similar Firejail, care folosește de asemenea un model de lansare cu utilizarea setuid, este că în Bubblewrap stratul pentru crearea containerelor include doar minimul necesar de funcționalități, iar toate funcțiile extinse necesare pentru a lansa aplicații grafice, interacțiunea cu desktopul și filtrarea apelurilor către Pulseaudio, sunt externalizate către Flatpak și executate deja după resetarea privilegiilor. Firejail, pe de altă parte, combină toate funcțiile asociate într-un singur fișier executabil, ceea ce complică auditul său și menținerea securității la un nivel adecvat.

În noua versiune:

  • A fost adăugată opțiunea „—disable-userns” care dezactivează crearea unui spațiu în cadrul sandbox-ului pentru identificatorii utilizatorilor (user namespace).
  • A fost adăugată opțiunea „—assert-userns-disabled” pentru a verifica că, atunci când se utilizează opțiunea „—disable-userns”, este activat un spațiu existent pentru identificatorii utilizatorilor.
  • A fost îmbunătățită informativitatea mesajelor de eroare legate de dezactivarea setărilor CONFIG_SECCOMP și CONFIG_SECCOMP_FILTER în nucleu.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster