Vydanie Bubblewrap 0.4.0, vrstvy na vytváranie izolovaných prostredí

K dispozícii nové vydanie súboru nástrojov Bubblewrap 0.4.0, navrhnutý tak, aby organizoval prácu izolovaných prostredí v systéme Linux a fungoval na aplikačnej úrovni neprivilegovaných používateľov. V praxi Bubblewrap používa projekt Flatpak ako vrstvu na izoláciu aplikácií spúšťaných z balíkov. Kód projektu je napísaný v jazyku C a distribuovaný licencované pod LGPLv2+.

Na izoláciu sa používajú tradičné technológie virtualizácie kontajnerov Linuxu, založené na použití cgroups, namespaces, Seccomp a SELinux. Ak chcete vykonať privilegované operácie na konfiguráciu kontajnera, spustí sa Bubblewrap s právami root (spustiteľný súbor s príznakom suid) a po inicializácii kontajnera obnoví privilégiá.

Aktivácia užívateľských menných priestorov v systéme menných priestorov, ktorá vám umožňuje používať vlastnú samostatnú sadu identifikátorov v kontajneroch, nie je potrebná na prevádzku, pretože v mnohých distribúciách štandardne nefunguje (Bubblewrap je umiestnený ako obmedzená suid implementácia podmnožina možností užívateľských menných priestorov - na vylúčenie všetkých identifikátorov užívateľov a procesov z prostredia, okrem aktuálneho, sa používajú režimy CLONE_NEWUSER a CLONE_NEWPID). Pre dodatočnú ochranu, spustiteľné pod kontrolou
Bubblewrap programy sa spúšťajú v režime PR_SET_NO_NEW_PRIVS, ktorý zakazuje získavanie nových privilégií, napríklad ak je prítomný príznak setuid.

Izolácia na úrovni súborového systému sa dosiahne štandardne vytvorením nového priestoru názvov pripojenia, v ktorom sa pomocou tmpfs vytvorí prázdny koreňový oddiel. V prípade potreby sú externé oddiely FS pripojené k tomuto oddielu v režime „mount —bind“ (napríklad pri spustení s voľbou „bwrap —ro-bind /usr /usr“ sa oddiel /usr prepošle z hlavného systému v režime iba na čítanie). Možnosti siete sú obmedzené na prístup k rozhraniu spätnej slučky s izoláciou sieťového zásobníka prostredníctvom príznakov CLONE_NEWNET a CLONE_NEWUTS.

Hlavný rozdiel od podobného projektu Požiarne väzenie, ktorý tiež používa model spúšťania setuid, spočíva v tom, že v Bubblewrap vrstva na vytváranie kontajnerov obsahuje iba nevyhnutné minimálne možnosti a všetky pokročilé funkcie potrebné na spúšťanie grafických aplikácií, interakciu s desktopom a filtrovanie volaní Pulseaudio sú outsourcované Flatpak a sú vykonávané po resetovaní privilégií. Firejail, na druhej strane, kombinuje všetky súvisiace funkcie v jednom spustiteľnom súbore, čo sťažuje audit a udržiavanie zabezpečenia na na správnej úrovni.

Nové vydanie je pozoruhodné implementáciou podpory pre spájanie existujúcich užívateľských menných priestorov a procesných pid názvov. Na kontrolu pripojenia menných priestorov boli pridané príznaky „--userns“, „--userns2“ a „-pidns“.
Táto funkcia nefunguje v režime setuid a vyžaduje použitie samostatného režimu, ktorý môže fungovať bez získania práv root, ale vyžaduje aktiváciu
užívateľské menné priestory v systéme (štandardne zakázané v Debiane a RHEL/CentOS) a nevylučuje možnosť prevádzkové potenciálne zostávajúce zraniteľnosti pre okraj obmedzení „priestorov mien používateľov“. Medzi nové funkcie Bubblewrap 0.4 patrí aj možnosť budovania s knižnicou musl C namiesto glibc a podpora ukladania informácií o mennom priestore do súboru so štatistikami vo formáte JSON.

Zdroj: opennet.ru

Pridať komentár