Bubblewrap je alat šta radi organizirati rad u zaštićenom okruženju na Linuxu i trči na nivou aplikacije neprivilegovanih korisnika. U praksi, Bubblewrap projekt Flatpak koristi kao srednji sloj za izolaciju aplikacija pokrenutih iz softverskih paketa.
Za izolaciju, Linux koristi tehnologije virtualizacije tradicionalnih kontejnera zasnovanih na upotrebi cgroups, prostora prostora, Seccomp i SELinux. Za izvođenje privilegiranih operacija za konfiguriranje spremnika, Bubblewrap se pokreće s root privilegijama (izvršnom datotekom sa suid zastavicom), nakon čega slijedi poništavanje privilegija nakon inicijalizacije spremnika.
Nema potrebe da omogućite korisničke prostore imena na sistemu, omogućavajući vam upotrebu vlastitog skupa ID-ova u spremnicima, jer po defaultu ne radi na mnogim distribucijama.
O Bubblewrapu
Bubblewrap je pozicioniran kao ograničena implementacija suida iz podskupa funkcija korisničkog prostora imena za izuzeće svih korisničkih i procesnih ID-ova iz okoline, osim trenutnog, koristite načine CLONE_NEWUSER i CLONE_NEWPID.
Za dodatnu zaštitu, programi koji se izvode u Bubblewrapu pokreću se u načinu PR_SET_NO_NEW_PRIVS, koja zabranjuje nove privilegije, na primjer, sa zastavicom setuid.
Izolacija na nivou sistema datoteka vrši se stvaranjem, prema zadanim postavkama, novog prostora imena montiranja, u kojem se pomoću tmpfs kreira prazna korijenska particija.
Ako je potrebno, vanjski FS odjeljci su u prilogu ovog odjeljka u «mount-bind»(Na primjer, počevši od opcije«bwrap –ro-bind / usr / usr', Odjeljak / usr se prosljeđuje s hosta u načinu samo za čitanje).
Mrežne mogućnosti su ograničene na pristup povratnom sučelju obrnuto izolacijom mrežnog steka putem indikatora CLONE_NEWNET i CLONE_NEWUTS.
Ključna razlika sa sličnim projektom Firejail, koji takođe koristi setuid pokretač, je da je u Bubblewrapu, sloj spremnika uključuje samo minimalno potrebne karakteristike i sve napredne funkcije potrebne za pokretanje grafičkih aplikacija, interakciju sa radnom površinom i filtriranje poziva Pulseaudio, dovode se na stranu Flatpak-a i izvode nakon resetiranja privilegija.
S druge strane, Firejail kombinira sve povezane funkcije u jednu izvršnu datoteku, usložnjavajući vašu reviziju i održavajući sigurnost na odgovarajućem nivou.
Bubblewrap u osnovi djeluje pomoću stvaranje praznog prostora imena montiranja na privremenom sistemu datoteka koji će biti uništeni nakon završetka obrade pješčanika.
Korištenjem prekidača, korisnik može izgraditi željeno okruženje sistema datoteka u prostoru imena montiranja montiranjem željenih direktorija na vezu iz host sistema.
Oblaganje mjehurića 0.4.0
Bubblewrap je trenutno u svojoj verziji 0.4.0 koji je nedavno objavljen. Kôd projekta napisan je na C jeziku i distribuiran pod LGPLv2 + licencom.
Nova verzija je značajan po implementaciji podrške za pridruživanje imenskim prostorima i procesima postojeći korisnici (pid imenski prostori).
Oznake "–userns", "–userns2" i "–pidns" dodane su za kontrolu veze prostora imena.
Ova značajka ne radi u setuid načinu rada i zahtijeva zaseban način rada koji može raditi bez privilegija root-a, ali zahtijeva da se na sistemu omoguće korisnički prostori imena (onemogućeno po defaultu na Debianu i RHEL / CentOS-u) i ne isključuje mogućnost za iskorištavanje potencijalno preostalih ranjivosti na ivicu ograničenja "korisničkog prostora imena".
Od novih karakteristika Bubblewrap 0.4, također se uočava mogućnost gradnje s musl C bibliotekom umjesto glibc, i podrška za spremanje podataka o prostoru imena u statističku datoteku u JSON formatu.
Bubblewrap kod, kao i dokumentaciju o njemu, možete pogledati na Github-u, veza je ovo.