En ny version af værktøjet til organisering af arbejdet med isolerede miljøer, Bubblewrap 0.12, er offentliggjort. Bubblewrap anvendes af Flatpak-projektet som et lag til isolation af applikationer, der køres fra pakker for at begrænse adgang for uprivilegerede brugere. Isolationen bruger traditionelle Linux-teknologier til containervirtualisering baseret på brugen af cgroups, namespaces, Seccomp og SELinux. Projektets kode er skrevet på C og distribueres under LGPLv2.1+-licensen.
Isolation på filsystemniveau foregår gennem oprettelsen af et nyt mount namespace som standard, hvor et tomt rodpartition oprettes ved hjælp af tmpfs. Eksterne filsystempartitioner kan tilsluttes denne partition efter behov i 'mount --bind'-tilstand (for eksempel ved opstart med muligheden 'bwrap --ro-bind /usr /usr', hvor /usr partitionen fra hovedsystemet videregives i skrivebeskyttet tilstand). Netværksmuligheder begrænses til adgang til loopback-interface med isolering af netværksstakken via flags CLONE_NEWNET og CLONE_NEWUTS.
For at udelukke alle unødvendige bruger- og proces-id'er fra det oprettede isolerede miljø kan modes CLONE_NEWUSER (brugernamespacing) og CLONE_NEWPID (PID namespacing) anvendes, og for at forhindre opnåelse af nye privilegier anvendes PR_SET_NO_NEW_PRIVS-modus. De nødvendige privilegier opnås ved hjælp af 'user namespace'.
I den nye version:
- Licensen for koden er ændret fra LGPL 2.0+ til LGPL 2.1+.
- Støtten til opbygning i form af en eksekverbar fil, der opnår ekstra privilegier ved hjælp af suid root-flaget, er ophævet. Det er nu nødvendigt, at systemet understøtter 'user namespace'. Årsagen nævnes som den betydelige arbejdsbyrde ved vedligeholdelsen af suid-flag-varianten, i lyset af den brede støtte til 'user namespace' i distributioner.
- En mulighed for '-not-a-security-boundary' er tilføjet, hvor ved aktivering nødvendige konfigurationsfejl i det isolerede sandbox-miljø, såsom remounting af undermapper, ikke fører til en nedbrud.
- Den samlede indstillingsmulighed "assume_kernel" er blevet tilføjet, som deaktiverer backward-kompatibilitet med Linux-kerner, der er ældre end den angivne version. For eksempel vil angivelse af versioner 5.6.0+ medføre undtagelse af en alternativ implementering af funktionen "openat2(RESOLVE_IN_ROOT)".
Kilde: opennet.ru
