Bubblewrap er et verktøy hva virker å organisere sandkassearbeid på Linux og løp på applikasjonsnivå for ikke-privilegerte brukere. I praksis brukes Bubblewrap av Flatpak-prosjektet som et mellomlag for å isolere applikasjoner lansert fra programvarepakker.
For isolasjon bruker Linux virtualiseringsteknologier av tradisjonelle containere basert på bruk av cgroups, namespaces, Seccomp og SELinux. For å utføre privilegerte operasjoner for å konfigurere en container, startes Bubblewrap med root-privilegier (en kjørbar fil med et suid-flagg), etterfulgt av en tilbakestilling av privilegier etter at beholderen er initialisert.
Det er ikke nødvendig å aktivere brukernavnområder på systemet, slik at du kan bruke ditt eget sett med ID-er i containere, ettersom det som standard ikke fungerer på mange distribusjoner.
Om Bubblewrap
Bubblewrap er posisjonert som en begrenset suida-implementering fra delsettet av brukernavnfunksjonene for å ekskludere alle bruker- og prosess-ID-er fra miljøet unntatt den nåværende, bruk modusene CLONE_NEWUSER og CLONE_NEWPID.
For ytterligere beskyttelse, programmer som kjører i Bubblewrap starter i modus PR_SET_NO_NEW_PRIVS, som forbyder nye privilegier, for eksempel med setuid-flagget.
Isolering på filsystemnivå gjøres ved å opprette, som standard, et nytt monteringsnavnområde, der en tom rotpartisjon opprettes ved hjelp av tmpfs.
Om nødvendig er de eksterne FS-seksjonene knyttet til denne delen i «monter –bind»(Starter for eksempel med alternativet«bwrap –ro-bind / usr / usr', Seksjonen / usr videresendes fra verten i skrivebeskyttet modus).
Nettverksfunksjoner er begrenset til tilgang til loopback-grensesnittet invertert med nettverksstabelisolering via indikatorer CLONE_NEWNET og CLONE_NEWUTS.
Hovedforskjellen med det lignende Firejail-prosjektet, som også bruker setuid launcher, er det i Bubblewrap, beholderlaget inneholder bare de minste nødvendige funksjonene og alle de avanserte funksjonene som kreves for å starte grafiske applikasjoner, samhandle med skrivebordet og filtrere anrop til Pulseaudio, blir brakt til siden av Flatpak og kjørt etter at rettighetene er tilbakestilt.
Firejail, derimot, kombinerer alle relaterte funksjoner i en kjørbar fil, komplisere revisjonen og holde sikkerheten på riktig nivå.
Bubblewrap fungerer i utgangspunktet ved hjelp av opprette et tomt navneområde på et midlertidig filsystem som vil bli ødelagt etter at sandkassebehandlingen er fullført.
Ved å bruke brytere kan brukeren bygge det ønskede filsystemmiljøet i monteringsnavnet ved å montere de ønskede katalogene på lenken fra vertssystemet.
Bobleplast 0.4.0
Bubblewrap er for øyeblikket i sin versjon 0.4.0 som nylig ble utgitt. Prosjektkoden er skrevet i C og distribuert under LGPLv2 + lisensen.
Den nye versjonen er kjent for implementering av støtte for å bli med i navneområdene og prosessene eksisterende brukere (pid navnerom).
Flaggene "–userns", "–userns2" og "–pidns" er lagt til for å kontrollere tilkoblingen av navneområder.
Denne funksjonen fungerer ikke i setuid-modus og krever en egen modus som kan fungere uten root-rettigheter, men krever at brukernavneområder er aktivert på systemet (deaktivert som standard på Debian og RHEL / CentOS) og ekskluderer ikke muligheten for å utnytte potensielt gjenværende sårbarheter til kanten av "brukernavnområdebegrensninger".
Av de nye funksjonene i Bubblewrap 0.4, muligheten for å bygge med musl C-biblioteket i stedet for glibc blir også observert, og støtte for lagring av navneområdet informasjon i en statistikkfil i JSON-format.
Bubblewrap-koden, samt dokumentasjonen om den, kan konsulteres på Github, lenken er dette.