Bubblewrap, un instrument pentru crearea de aplicații în medii izolate

Bubblewrap este un instrument ce funcționează pentru a organiza lucrul cu sandbox pe Linux și fugi la nivelul aplicației utilizatorilor neprivilegiați. În practică, Bubblewrap este utilizat de proiectul Flatpak ca strat intermediar pentru a izola aplicațiile lansate din pachetele software.

Pentru izolare, Linux folosește tehnologii de virtualizare de containere tradiționale bazate pe utilizarea cgroups, namespaces, Seccomp și SELinux. Pentru a efectua operațiuni privilegiate pentru a configura un container, Bubblewrap este pornit cu privilegii de rădăcină (un fișier executabil cu un steag suid), urmat de o resetare a privilegiilor după ce containerul este inițializat.

Nu este necesar să activați spațiile de nume ale utilizatorilor în sistem, permițându-vă să utilizați propriul set de id-uri în containere, deoarece implicit nu funcționează pe multe distribuții.

Despre Bubblewrap

Bubblewrap este poziționat ca o implementare suida limitată din subsetul funcțiilor spațiilor de nume ale utilizatorilor pentru a exclude toate ID-urile utilizatorilor și proceselor din mediu, cu excepția celui curent, utilizați modurile CLONE_NEWUSER și CLONE_NEWPID.

Pentru protecție suplimentară, programele care rulează în Bubblewrap pornesc în modul PR_SET_NO_NEW_PRIVS, care interzice noi privilegii, de exemplu, cu steagul setuid.

Izolarea la nivelul sistemului de fișiere se face prin crearea implicită a unui nou spațiu de nume de montare, în care se creează o partiție rădăcină goală folosind tmpfs.

Dacă este necesar, secțiunile FS externe sunt atașate la această secțiune în «monta –lega»(De exemplu, începând cu opțiunea«bwrap –ro-bind / usr / usr', Secțiunea / usr este redirecționată de la gazdă în modul numai citire).

Capacitățile de rețea sunt limitate la accesul la interfața loopback inversat cu izolarea stivei de rețea prin indicatori CLONE_NEWNET și CLONE_NEWUTS.

Diferența cheie cu proiectul similar Firejail, care folosește și lansatorul setuid, este cel din Bubblewrap, stratul containerului include doar caracteristicile minime necesare și toate funcțiile avansate necesare pentru lansarea aplicațiilor grafice, interacțiunea cu desktopul și filtrarea apelurilor către Pulseaudio, sunt aduse în partea Flatpak și rulate după resetarea privilegiilor.

Firejail, pe de altă parte, combină toate funcțiile conexe într-un singur fișier executabil, complicându-vă auditul și menținând securitatea la nivelul adecvat.

Bubblewrap funcționează practic prin intermediul crearea unui spațiu de nume de montare gol pe un sistem de fișiere temporar care va fi distrus după finalizarea procesării sandbox-ului.

Utilizând comutatoare, utilizatorul poate construi mediul sistemului de fișiere dorit în spațiul de nume de montare prin montarea pe link-ul directorilor dorite din sistemul gazdă.

Bubblewrap 0.4.0

În prezent Bubblewrap este în versiunea sa 0.4.0 care a fost lansat recent. Codul proiectului este scris în C și distribuit sub licența LGPLv2 +.

Noua versiune se remarcă prin implementarea suportului pentru alăturarea spațiilor de nume și a proceselor utilizatorii existenți (spații de nume pid).

Steagurile „–userns”, „–userns2” și „–pidns” au fost adăugate pentru a controla conexiunea spațiilor de nume.

Această caracteristică nu funcționează în modul setuid și necesită un mod separat care poate funcționa fără privilegii root, dar necesită activarea spațiilor de nume ale utilizatorului pe sistem (dezactivate implicit pe Debian și RHEL / CentOS) și nu exclude posibilitatea de a exploata potențial vulnerabilități rămase la limita restricțiilor „spațiului de nume de utilizator”.

Dintre noile caracteristici ale Bubblewrap 0.4, se observă și posibilitatea de a construi cu biblioteca C musl în loc de glibc, și suport pentru salvarea informațiilor spațiului de nume într-un fișier de statistici în format JSON.

Codul Bubblewrap, precum și documentația despre acesta, pot fi consultate pe Github, link-ul este acesta.


Conținutul articolului respectă principiile noastre de etică editorială. Pentru a raporta o eroare, faceți clic pe aici.

Fii primul care comenteaza

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.