Uscita di Bubblewrap 0.4.0, uno strato per la creazione di ambienti isolati

È disponibile nuovo rilascio dello strumento Bubblewrap 0.4.0, concepito per organizzare il lavoro in ambienti isolati in Linux e funziona a livello di applicazione con utenti non privilegiati. Nella pratica, Bubblewrap è utilizzato dal progetto Flatpak come strato per l'isolamento delle applicazioni eseguite dai pacchetti. Il codice del progetto è scritto in linguaggio C e è distribuito sotto licenza LGPLv2+.

Per l'isolamento vengono utilizzate tecnologie di virtualizzazione dei contenitori tradizionali di Linux, basate sull'uso di cgroups, spazi dei nomi, Seccomp e SELinux. Per eseguire operazioni privilegiate di configurazione del contenitore, Bubblewrap viene avviato con i diritti di root (file eseguibile con flag suid) e successivamente i privilegi vengono revocati al termine dell'inizializzazione del contenitore.

L'attivazione nel sistema degli spazi dei nomi degli identificatori utente (user namespaces), che consentono di utilizzare nei container un insieme separato di identificatori, non è necessaria per il funzionamento, poiché per impostazione predefinita non funziona in molte distribuzioni (Bubblewrap si posiziona come una realizzazione suid limitata di un sottoinsieme delle funzionalità degli spazi dei nomi utente — per escludere tutti gli identificatori di utenti e processi dall'ambiente, tranne quello attuale, vengono utilizzati i flag CLONE_NEWUSER e CLONE_NEWPID). Per una protezione aggiuntiva, i programmi eseguiti sotto il controllo di
Bubblewrap vengono avviati in modalità PR_SET_NO_NEW_PRIVS, che vieta l'acquisizione di nuovi privilegi, ad esempio, in presenza di un flag setuid.

L'isolamento a livello di filesystem avviene creando, per impostazione predefinita, un nuovo spazio dei nomi per i punti di montaggio (mount namespace), nel quale, tramite tmpfs, viene creatta una partizione radice vuota. In questa partizione, se necessario, vengono montate le partizioni del file system esterno in modalità "mount —bind" (ad esempio, avviando con l'opzione "bwrap —ro-bind /usr /usr", la partizione /usr viene trasmessa dal sistema principale in modalità di sola lettura). Le capacità di rete vengono limitate all'accesso all'interfaccia loopback con isolamento dello stack di rete tramite i flag CLONE_NEWNET e CLONE_NEWUTS.

La principale differenza rispetto a progetti simili Firejail, che utilizza anch'esso un modello di esecuzione con setuid, presenta il vantaggio che in Bubblewrap lo strato per la creazione di container include solo il minimo indispensabile di funzionalità, mentre tutte le funzionalità avanzate necessarie per eseguire applicazioni grafiche, interagire con il desktop e filtrare le chiamate a Pulseaudio, sono esternalizzate a Flatpak e vengono eseguite solo dopo il ripristino delle autorizzazioni. Firejail, invece, unisce in un unico file eseguibile tutte le funzionalità accessorie, il che complica l'audit e il mantenimento della sicurezza a un livello adeguato..

Il nuovo rilascio è notevole per l'implementazione del supporto all'aggregazione degli spazi dei nomi esistenti per identificatori utente (user namespaces) e processi (pid namespaces). Sono stati aggiunti flag per gestire il collegamento degli spazi dei nomi: «—userns», «—userns2» e «—pidns».
Questa funzionalità non funziona in modalità setuid e richiede l'applicazione di una modalità separata, che può operare senza i diritti di root, ma richiede l'attivazione
degli user namespaces nel sistema (per impostazione predefinita disattivati in Debian e RHEL/CentOS) e non esclude la possibilità sfruttamento potenzialmente di restare vulnerabilità per il limite delle "user namespaces". Tra le nuove funzionalità di Bubblewrap 0.4 si evidenzia anche la possibilità di compilare con la libreria C musl invece di glibc e il supporto per il salvataggio delle informazioni sui namespace in un file di statistica in formato JSON.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster