Rilascio di Bubblewrap 0.8, un livello per creare ambienti isolati

È disponibile il rilascio di strumenti per l'organizzazione del lavoro in ambienti isolati Bubblewrap 0.8, solitamente utilizzato per limitare le singole applicazioni di utenti non privilegiati. In pratica Bubblewrap viene utilizzato dal progetto Flatpak come livello per isolare le applicazioni lanciate dai pacchetti. Il codice del progetto è scritto in C ed è distribuito sotto la licenza LGPLv2+.

Per l'isolamento vengono utilizzate le tradizionali tecnologie di virtualizzazione dei container Linux, basate sull'utilizzo di cgroup, namespace, Seccomp e SELinux. Per eseguire operazioni privilegiate per configurare un contenitore, Bubblewrap viene avviato con i diritti di root (un file eseguibile con un flag suid) e quindi reimposta i privilegi dopo l'inizializzazione del contenitore.

L'attivazione degli spazi dei nomi utente nel sistema degli spazi dei nomi, che consente di utilizzare il proprio set separato di identificatori nei contenitori, non è richiesta per il funzionamento, poiché non funziona per impostazione predefinita in molte distribuzioni (Bubblewrap è posizionato come un'implementazione suid limitata di un sottoinsieme di funzionalità degli spazi dei nomi utente: per escludere tutti gli identificatori di utenti e processi dall'ambiente, eccetto quello corrente, vengono utilizzate le modalità CLONE_NEWUSER e CLONE_NEWPID). Per ulteriore protezione, i programmi eseguiti sotto Bubblewrap vengono avviati nella modalità PR_SET_NO_NEW_PRIVS, che impedisce l'acquisizione di nuovi privilegi, ad esempio, se è presente il flag setuid.

L'isolamento a livello di file system viene ottenuto creando per impostazione predefinita un nuovo spazio dei nomi di montaggio, in cui viene creata una partizione root vuota utilizzando tmpfs. Se necessario, le partizioni FS esterne vengono collegate a questa partizione nella modalità “mount —bind” (ad esempio, quando avviata con l'opzione “bwrap —ro-bind /usr /usr”, la partizione /usr viene inoltrata dal sistema principale in modalità di sola lettura). Le funzionalità di rete sono limitate all'accesso all'interfaccia di loopback con isolamento dello stack di rete tramite i flag CLONE_NEWNET e CLONE_NEWUTS.

La differenza fondamentale rispetto al progetto simile Firejail, che utilizza anch'esso il modello di lancio setuid, è che in Bubblewrap il livello di creazione del contenitore include solo le capacità minime necessarie e tutte le funzioni avanzate necessarie per eseguire applicazioni grafiche, interagire con il desktop e filtrare le richieste a Pulseaudio, trasferito sul lato Flatpak ed eseguito dopo che i privilegi sono stati ripristinati. Firejail, d'altro canto, combina tutte le funzioni correlate in un unico file eseguibile, il che rende difficile il controllo e il mantenimento della sicurezza al livello adeguato.

Nella nuova versione:

  • Aggiunta l'opzione "--disable-userns" per disabilitare la creazione del proprio spazio dei nomi utente nidificato nell'ambiente sandbox.
  • Aggiunta l'opzione "--assert-userns-disabled" per verificare che venga utilizzato uno spazio ID utente esistente quando si utilizza l'opzione "--disable-userns".
  • Il contenuto informativo dei messaggi di errore relativi alla disabilitazione delle impostazioni CONFIG_SECCOMP e CONFIG_SECCOMP_FILTER nel kernel è stato aumentato.

Fonte: opennet.ru

Aggiungi un commento