Nakon godinu dana razvoja, objavljena je nova verzija Bubblewrap 0.9 alata za organizaciju rada izolovanih okruženja, koja se koristi za ograničavanje pojedinačnih aplikacija neprivilegovanih korisnika. U praksi, Bubblewrap projekt Flatpak koristi kao sloj za izolaciju aplikacija pokrenutih iz paketa. Kod projekta je napisan u C i distribuira se pod licencom LGPLv2+.
Za izolaciju se koriste tradicionalni materijali. Linux Tehnologije virtualizacije kontejnera zasnovane na korištenju cgrupa, imenskih prostora, Seccompa i SE-aLinuxDa bi izvršio operacije konfiguracije privilegovanog kontejnera, Bubblewrap se pokreće s root privilegijama (izvršna datoteka ima omogućenu suid zastavicu), a zatim odbacuje privilegije nakon što je inicijalizacija kontejnera završena.
Aktivacija korisničkih imenskih prostora u sistemu imenskog prostora, koji vam omogućava da koristite vlastiti zasebni skup identifikatora u kontejnerima, nije potrebna za rad, jer ne radi po defaultu u mnogim distribucijama (Bubblewrap je pozicioniran kao ograničena suid implementacija podskup mogućnosti korisničkog prostora imena - da se iz okoline izuzmu svi identifikatori korisnika i procesa, osim trenutnog, koriste se načini CLONE_NEWUSER i CLONE_NEWPID). Za dodatnu zaštitu, programi koji se izvršavaju pod Bubblewrap pokreću se u PR_SET_NO_NEW_PRIVS modu, koji zabranjuje stjecanje novih privilegija, na primjer, ako je prisutna zastavica setuid.
Izolacija na nivou sistema datoteka se postiže kreiranjem novog prostora imena za montiranje prema zadanim postavkama, u kojem se kreira prazna root particija pomoću tmpfs-a. Ako je potrebno, eksterne FS particije su pripojene ovoj particiji u "mount —bind" modu (na primjer, kada se pokrene sa opcijom "bwrap —ro-bind /usr /usr", /usr particija se prosljeđuje iz glavnog sistema u režimu samo za čitanje). Mrežne mogućnosti su ograničene na pristup sučelju povratne petlje sa izolacijom mrežnog steka preko CLONE_NEWNET i CLONE_NEWUTS zastavica.
Ključna razlika od sličnog Firejail projekta, koji također koristi setuid model pokretanja, je u tome što u Bubblewrap sloj kreiranja kontejnera uključuje samo neophodne minimalne mogućnosti i sve napredne funkcije potrebne za pokretanje grafičkih aplikacija, interakciju sa desktopom i filtriranje zahtjeva na Pulseaudio, prebačen na Flatpak stranu i izvršen nakon što su privilegije resetirane. Firejail, s druge strane, kombinuje sve povezane funkcije u jednoj izvršnoj datoteci, što otežava reviziju i održavanje sigurnosti na odgovarajućem nivou.
U novom izdanju:
- Fajlovi generirani u Autotools su uklonjeni iz izvornog paketa. Meson build sistem se sada preporučuje za montažu. Opciona podrška za Autotools ostaje za sada, ali je planirano da bude uklonjena u budućim izdanjima.
- Dodata je opcija “--argv0” za postavljanje vrijednosti nultog argumenta komandne linije (argv[0] je ime izvršne datoteke, na primjer “-argv0 /usr/bin/test”).
- Opcija "--symlink" sada se pokreće samo kada simbolična veza već postoji i ukazuje na željeni ciljni fajl.
- Opcija “--cap-add” je dokumentirana i koristi se za postavljanje oznaka mogućnosti, na primjer, “CAP_DAC_READ_SEARCH”.
- Povećani sadržaj informacija o greškama koje se prikazuju kada montiranje ne uspije.
- Proces kreiranja jediničnih testova je pojednostavljen.
- Slučajevi upotrebe više ne podržavaju starije verzije Pythona.
- Poboljšane operacije dodjele memorije.
izvor: opennet.ru
