Izdaja Bubblewrap 0.6, sloja za ustvarjanje izoliranih okolij

Na voljo je izdaja orodij za organizacijo dela izoliranih okolij Bubblewrap 0.6, ki se običajno uporabljajo za omejevanje posameznih aplikacij neprivilegiranih uporabnikov. V praksi projekt Flatpak uporablja Bubblewrap kot plast za izolacijo aplikacij, zagnanih iz paketov. Koda projekta je napisana v C in se distribuira pod licenco LGPLv2+.

Za izolacijo se uporabljajo tradicionalne tehnologije virtualizacije vsebnikov Linux, ki temeljijo na uporabi cgroups, namespaces, Seccomp in SELinux. Za izvajanje privilegiranih operacij za konfiguracijo vsebnika se Bubblewrap zažene s korenskimi pravicami (izvršljiva datoteka z zastavico suid) in nato ponastavi privilegije, ko je vsebnik inicializiran.

Aktivacija uporabniških imenskih prostorov v sistemu imenskih prostorov, ki vam omogoča uporabo lastnega ločenega nabora identifikatorjev v vsebnikih, ni potrebna za delovanje, saj v mnogih distribucijah ne deluje privzeto (Bubblewrap je postavljen kot omejena suid implementacija podnabor zmožnosti uporabniških imenskih prostorov - za izključitev vseh identifikatorjev uporabnikov in procesov iz okolja, razen trenutnega, se uporabljata načina CLONE_NEWUSER in CLONE_NEWPID). Za dodatno zaščito se programi, ki se izvajajo pod Bubblewrap, zaženejo v načinu PR_SET_NO_NEW_PRIVS, ki prepoveduje pridobitev novih privilegijev, na primer, če je prisotna zastavica setuid.

Izolacija na ravni datotečnega sistema je dosežena z ustvarjanjem novega imenskega prostora namestitve privzeto, v katerem je prazna korenska particija ustvarjena z uporabo tmpfs. Po potrebi so zunanje particije FS pritrjene na to particijo v načinu »mount —bind« (na primer, ko se zažene z možnostjo »bwrap —ro-bind /usr /usr«, se particija /usr posreduje iz glavnega sistema v načinu samo za branje). Omrežne zmogljivosti so omejene na dostop do vmesnika povratne zanke z izolacijo omrežnega sklada prek zastavic CLONE_NEWNET in CLONE_NEWUTS.

Ključna razlika od podobnega projekta Firejail, ki prav tako uporablja model zagona setuid, je, da v Bubblewrap sloj za ustvarjanje vsebnika vključuje samo potrebne minimalne zmogljivosti in vse napredne funkcije, potrebne za izvajanje grafičnih aplikacij, interakcijo z namizjem in filtriranje zahtev v Pulseaudio, prenese na stran Flatpak in izvede po ponastavitvi privilegijev. Firejail pa združuje vse povezane funkcije v eni izvedljivi datoteki, kar otežuje revizijo in vzdrževanje varnosti na ustrezni ravni.

V novi izdaji:

  • Dodana podpora za montažni sistem Meson. Podpora za gradnjo s programom Autotools je za zdaj ohranjena, vendar bo odstranjena v prihodnji izdaji.
  • Implementirana možnost "--add-seccomp" za dodajanje več kot enega programa seccomp. Dodano opozorilo, da če znova podate možnost "--seccomp", bo uporabljen samo zadnji parameter.
  • Glavna veja v repozitoriju git je bila preimenovana v glavno.
  • Dodana delna podpora za specifikacijo REUSE, ki poenoti postopek podajanja informacij o licenci in avtorskih pravicah. Veliko kodnih datotek ima dodane glave SPDX-License-Identifier. Če sledite smernicam REUSE, je lažje samodejno določiti, katera licenca velja za katere dele kode aplikacije.
  • Dodano preverjanje vrednosti števca argumentov ukazne vrstice (argc) in implementiran izhod v sili, če je števec enak nič. Sprememba pomaga blokirati varnostne težave, ki jih povzroči nepravilno ravnanje s posredovanimi argumenti ukazne vrstice, kot je CVE-2021-4034 v Polkitu.

Vir: opennet.ru

Dodaj komentar