După un an de dezvoltare, a fost publicată o nouă versiune a setului de instrumente pentru organizarea muncii în medii izolate, Bubblewrap 0.9, folosită pentru a restricționa aplicațiile individuale ale 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 este distribuit sub licența LGPLv2+.
Materialele tradiționale sunt folosite pentru izolație Linux tehnologii de virtualizare a containerelor bazate pe utilizarea cgroup-urilor, namespace-urilor, Seccomp și SELinuxPentru a efectua operațiuni de configurare a containerelor privilegiate, Bubblewrap rulează cu privilegii de root (fișierul executabil are steagul suid activat) și apoi renunță la privilegii după finalizarea inițializării 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ă, programele executate sub Bubblewrap sunt lansate în modul PR_SET_NO_NEW_PRIVS, care interzice achiziția de noi privilegii, de exemplu, dacă este prezent steag-ul 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 proiectul similar Firejail, care folosește și modelul de lansare setuid, este că în Bubblewrap stratul de creare a containerului include doar capacitățile minime necesare și toate funcțiile avansate necesare pentru rularea aplicațiilor grafice, interacțiunea cu desktopul și filtrarea cererilor. la Pulseaudio, transferat în partea Flatpak și executat după ce privilegiile au fost resetate. Firejail, pe de altă parte, combină toate funcțiile aferente într-un singur fișier executabil, ceea ce face dificilă auditarea și menținerea securității la nivelul corespunzător.
În noua versiune:
- Fișierele generate în Autotools au fost eliminate din pachetul sursă. Sistemul de construcție Meson este acum recomandat pentru asamblare. Suportul opțional pentru Autotools rămâne deocamdată, dar este planificat să fie eliminat în versiunile viitoare.
- S-a adăugat opțiunea „--argv0” pentru a seta valoarea argumentului zero al liniei de comandă (argv[0] este numele fișierului executabil, de exemplu „-argv0 /usr/bin/test”).
- Opțiunea „--symlink” se declanșează acum doar când există deja o legătură simbolică și indică fișierul țintă dorit.
- Opțiunea „--cap-add” este documentată și este utilizată pentru a seta semnalizatoare de capacitate, de exemplu, „CAP_DAC_READ_SEARCH”.
- Conținutul de informații crescut al erorilor afișate atunci când o montură eșuează.
- Procesul de creare a testelor unitare a fost simplificat.
- Cazurile de utilizare nu mai acceptă versiuni mai vechi de Python.
- Operațiuni îmbunătățite de alocare a memoriei.
Sursa: opennet.ru
