Izdanje Bubblewrap 0.6, slojevi za stvaranje okruženja u sandboxu

Dostupno je izdanje alata za organiziranje rada izoliranih okruženja Bubblewrap 0.6, koji se obično koristi za ograničavanje pojedinačnih aplikacija nepovlaštenih korisnika. U praksi, projekt Flatpak koristi Bubblewrap kao sloj za izolaciju aplikacija pokrenutih iz paketa. Kôd projekta napisan je u C-u i distribuira se pod licencom LGPLv2+.

Za izolaciju se koriste tradicionalne tehnologije virtualizacije Linux spremnika, temeljene na korištenju cgroups, namespaces, Seccomp i SELinux. Za izvođenje privilegiranih operacija za konfiguriranje spremnika, Bubblewrap se pokreće s root pravima (izvršna datoteka s oznakom suid), a zatim poništava privilegije nakon što se spremnik inicijalizira.

Aktivacija korisničkih prostora imena u sustavu prostora imena, koji vam omogućuje korištenje vlastitog zasebnog skupa identifikatora u spremnicima, nije potrebna za rad, budući da ne radi prema zadanim postavkama u mnogim distribucijama (Bubblewrap je pozicioniran kao ograničena suid implementacija podskup mogućnosti korisničkih imenskih prostora - za isključivanje svih identifikatora korisnika i procesa iz okruženja, osim trenutnog, koriste se načini rada 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 razini datotečnog sustava postiže se stvaranjem novog namespacea montiranja prema zadanim postavkama, u kojem se prazna korijenska particija stvara pomoću tmpfs. Ako je potrebno, vanjske FS particije se pridružuju ovoj particiji u načinu rada "mount —bind" (na primjer, kada se pokrene s opcijom "bwrap —ro-bind /usr /usr", /usr particija se prosljeđuje iz glavnog sustava u načinu rada samo za čitanje). Mrežne mogućnosti ograničene su na pristup sučelju povratne petlje s izolacijom mrežnog stoga putem oznaka CLONE_NEWNET i CLONE_NEWUTS.

Ključna razlika u odnosu na sličan Firejail projekt, koji također koristi model pokretanja setuid, je da u Bubblewrapu sloj za stvaranje spremnika uključuje samo potrebne minimalne mogućnosti i sve napredne funkcije potrebne za pokretanje grafičkih aplikacija, interakciju s radnom površinom i filtriranje zahtjeva u Pulseaudio, prebačen na stranu Flatpaka i izvršen nakon poništavanja privilegija. Firejail, s druge strane, kombinira sve povezane funkcije u jednoj izvršnoj datoteci, što otežava reviziju i održavanje sigurnosti na odgovarajućoj razini.

U novom izdanju:

  • Dodana podrška za Meson sustav sklapanja. Podrška za izgradnju s Autotools za sada je zadržana, ali će biti uklonjena u budućem izdanju.
  • Implementirana opcija "--add-seccomp" za dodavanje više od jednog programa seccomp. Dodano je upozorenje da će se, ako ponovno navedete opciju "--seccomp", primijeniti samo posljednji parametar.
  • Glavna grana u repozitoriju git preimenovana je u main.
  • Dodana je djelomična podrška za specifikaciju REUSE, koja objedinjuje postupak određivanja informacija o licenci i autorskim pravima. Mnoge kodne datoteke imaju dodana zaglavlja SPDX-License-Identifier. Slijeđenje smjernica REUSE olakšava automatsko određivanje koja se licenca odnosi na koje dijelove koda aplikacije.
  • Dodana provjera vrijednosti brojača argumenata naredbenog retka (argc) i implementiran izlaz u nuždi ako je brojač nula. Promjena pomaže u blokiranju sigurnosnih problema uzrokovanih netočnim rukovanjem proslijeđenim argumentima naredbenog retka, kao što je CVE-2021-4034 u Polkitu.

Izvor: opennet.ru

Dodajte komentar