Izlazak Bubblewrap 0.9, sloja za stvaranje izoliranih okruženja

Nakon godine razvoja objavljena je nova verzija alata za organizaciju rada izoliranih okruženja Bubblewrap 0.9, koji se koristi za ograničavanje pojedinačnih aplikacija neprivilegiranih korisnika. U praksi, Bubblewrap se koristi od strane projekta Flatpak kao sloj za izolaciju aplikacija pokretanih iz paketa. Kod projekta napisan je u jeziku C i distribuira se pod LGPLv2+ licencom.

Za izolaciju se koriste tradicionalne Linux tehnologije kontejnerske virtualizacije, temeljeći se na korištenju cgroups, prostora imena (namespaces), Seccomp i SELinux. Za izvršavanje privilegiranih operacija pri postavljanju kontejnera, Bubblewrap se pokreće s pravima root (izvršna datoteka s suid-flagom) nakon čega se privilegije poništavaju nakon završetka inicijalizacije kontejnera.

Aktivacija u sustavu prostora imena идентификаторов korisnika (user namespaces), koja omogućuje korištenje vlastitog zasebnog skupa идентификаторов u kontejnerima, nije potrebna za rad jer prema zadanim postavkama ne funkcionira u mnogim distribucijama (Bubblewrap se pozicionira kao ograničena suid-implementacija podskupa mogućnosti user namespaces — za isključenje svih идентификаторов korisnika i procesa iz okruženja, osim trenutnog, koriste se načini CLONE_NEWUSER i CLONE_NEWPID). Za dodatnu zaštitu programi pokrenuti pod upravljanjem Bubblewrap pokreću se u načinu PR_SET_NO_NEW_PRIVS, koji zabranjuje stjecanje novih privilegija, na primjer, kada postoji setuid zastavica.

Izolacija na razini datotečnog sustava provodi se stvaranjem novog prostora imena točki montiranja (mount namespace) po defaultu, u kojem se pomoću tmpfs stvara prazna korijenska particija. Ova particija se po potrebi povezuje s particijama vanjskih FS-a u načinu „mount —bind“ (na primjer, pokretanjem s opcijom „bwrap —ro-bind /usr /usr“, particija /usr se prosljeđuje iz osnovnog sustava u načinu samo za čitanje). Mrežne mogućnosti su ograničene na pristup loopback sučelju uz izolaciju mrežnog staka putem flagova CLONE_NEWNET i CLONE_NEWUTS.

Ključna razlika od sličnog projekta Firejail, koji također koristi model pokretanja s primjenom setuid, je ta što Bubblewrap sloj za stvaranje kontejnera uključuje samo nužni minimum mogućnosti, dok su sve proširene funkcije potrebne za pokretanje grafičkih aplikacija, interakciju s radnom površinom i filtriranje upita na Pulseaudio, prenesene na stranu Flatpak i izvršavaju se nakon ukidanja privilegija. Firejail, s druge strane, u jednom izvršnom datoteci kombinira sve prateće funkcije, što otežava njegovu reviziju i održavanje sigurnosti na odgovarajućoj razini.

U novom izdanju:

  • Iz paketa sa izvornim tekstovima uklonjeni su datoteke generirane u Autotools. Za izgradnju se sada preporučuje korištenje sustava za izgradnju Meson. Opcionalna podrška za Autotools za sada je sačuvana, ali se planira uklanjanje u budućim izdanjima.
  • Dodana je opcija "—argv0" za postavljanje vrijednosti nultog argumenta komandne linije (argv[0] — ime izvršne datoteke, na primjer "—argv0 /usr/bin/test").
  • Opcija "—symlink" sada djeluje samo kada simbolička veza već postoji i upućuje na željenu ciljnu datoteku.
  • Dokumentirana je opcija „—cap-add“, korištena za postavljanje capability-flaga, kao što je „CAP_DAC_READ_SEARCH.“
  • Povećana je informativnost grešaka prikazanih prilikom neuspjeha montaže.
  • Pojednostavljen je proces izrade unit testova.
  • U primjerima upotrebe obustavljena je podrška za starije verzije Pythona.
  • Poboljšane su operacije alociranja memorije.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster