Bubblewrap, uno strumento per creare applicazioni in ambienti isolati

Bubblewrap è uno strumento cosa funziona per organizzare il lavoro sandbox su Linux e corri a livello di applicazione degli utenti non privilegiati. In pratica Bubblewrap viene utilizzato dal progetto Flatpak come strato intermedio per isolare le applicazioni lanciate dai pacchetti software.

Per l'isolamento, Linux utilizza le tecnologie di virtualizzazione dei contenitori tradizionali basati sull'uso di cgroups, namespace, Seccomp e SELinux. Per eseguire operazioni privilegiate per configurare un contenitore, Bubblewrap viene avviato con privilegi di root (un file eseguibile con un flag suid), seguito da un ripristino dei privilegi dopo che il contenitore è stato inizializzato.

Non è necessario abilitare gli spazi dei nomi utente sul sistema, consentendo di utilizzare il proprio set di ID nei contenitori, poiché per impostazione predefinita non funziona su molte distribuzioni.

A proposito di Bubblewrap

Bubblewrap è posizionato come un'implementazione suida limitata dal sottoinsieme delle funzioni degli spazi dei nomi utente per escludere tutti gli ID utente e di processo dall'ambiente tranne quello corrente, utilizzare le modalità CLONE_NEWUSER e CLONE_NEWPID.

Per una protezione aggiuntiva, i programmi in esecuzione in Bubblewrap vengono avviati in modalità PR_SET_NO_NEW_PRIVS, che proibisce nuovi privilegi, ad esempio, con il flag setuid.

L'isolamento a livello di file system viene eseguito creando un nuovo spazio dei nomi di montaggio per impostazione predefinita, in cui viene creata una partizione root vuota utilizzando tmpfs.

Se necessario, le sezioni FS esterne sono allegate a questa sezione in «montare –bind»(Ad esempio, iniziando con l'opzione«bwrap –ro-bind / usr / usr', La sezione / usr viene inoltrata dall'host in modalità di sola lettura).

Le capacità di rete sono limitate all'accesso all'interfaccia di loopback invertito con isolamento dello stack di rete tramite indicatori CLONE_NEWNET e CLONE_NEWUTS.

La differenza fondamentale con il progetto Firejail simile, che utilizza anche il setuid launcher, è quello in Bubblewrap, il livello contenitore include solo le caratteristiche minime necessarie e tutte le funzioni avanzate necessarie per lanciare applicazioni grafiche, interagire con il desktop e filtrare le chiamate a Pulseaudio, vengono portate insieme a Flatpak ed eseguite dopo il ripristino dei privilegi.

Firejail, d'altra parte, combina tutte le funzioni correlate in un file eseguibile, complicando la verifica e mantenendo la sicurezza al livello appropriato.

Il Bubblewrap fondamentalmente funziona da creando uno spazio dei nomi di montaggio vuoto su un file system temporaneo che verrà distrutto al termine dell'elaborazione sandbox.

Utilizzando le opzioni, l'utente può creare l'ambiente del filesystem desiderato all'interno dello spazio dei nomi di montaggio montando sul collegamento delle directory desiderate dal sistema host.

pluriball 0.4.0

Attualmente Bubblewrap è nella sua versione 0.4.0 che è stato recentemente rilasciato. Il codice del progetto è scritto in C e distribuito sotto la licenza LGPLv2 +.

La nuova versione è notevole per l'implementazione del supporto per l'unione di spazi dei nomi e processi utenti esistenti (spazi dei nomi pid).

I flag "–userns", "–userns2" e "–pidns" sono stati aggiunti per controllare la connessione degli spazi dei nomi.

Questa funzionalità non funziona in modalità setuid e richiede una modalità separata che può funzionare senza privilegi di root, ma richiede che gli spazi dei nomi utente siano abilitati sul sistema (disabilitati di default su Debian e RHEL / CentOS) e non esclude la possibilità di sfruttarli potenzialmente restanti vulnerabilità al limite delle restrizioni "spazi dei nomi utente".

Tra le nuove funzionalità di Bubblewrap 0.4, si osserva anche la possibilità di costruire con la libreria musl C invece di glibc, e supporto per il salvataggio delle informazioni sullo spazio dei nomi in un file di statistiche in formato JSON.

Il codice Bubblewrap, così come la documentazione a riguardo, è consultabile su Github, il collegamento è questo.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.