Uscita di Bubblewrap 0.8, un layer per la creazione di ambienti isolati

È disponibile il rilascio del toolkit per l'organizzazione del lavoro in ambienti isolati Bubblewrap 0.8, generalmente utilizzato per limitare applicazioni specifiche degli utenti non privilegiati. Nella pratica, Bubblewrap è utilizzato dal progetto Flatpak come strato per isolare le applicazioni avviate dai pacchetti. Il codice del progetto è scritto in linguaggio C e distribuito con 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, che consentono di utilizzare set di identificatori separati nei contenitori, non è necessaria per il funzionamento, poiché per impostazione predefinita non funziona in molte distribuzioni (Bubblewrap è posizionato come un'implementazione suid limitata di un sottoinsieme delle funzionalità degli spazi dei nomi utente — per escludere tutti gli identificatori di utenti e processi dall'ambiente, ad eccezione di quello corrente, vengono utilizzati i modi CLONE_NEWUSER e CLONE_NEWPID). Per una protezione aggiuntiva, i programmi eseguiti da 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 al progetto simile Firejail, che utilizza anche un modello di avvio con setuid, è che in Bubblewrap lo strato per la creazione dei contenitori include solo il minimo necessario di funzionalità, mentre tutte le funzioni avanzate, necessarie per l'avvio delle applicazioni grafiche, l'interazione con il desktop e il filtraggio delle chiamate a Pulseaudio, sono spostate su Flatpak e vengono eseguite già dopo il ripristino dei privilegi. Firejail, invece, unisce in un unico file eseguibile tutte le funzioni ausiliarie, rendendo più difficile il suo audit e mantenimento della sicurezza a un livello adeguato.

Nel nuovo rilascio:

  • È stata aggiunta l'opzione «—disable-userns» che disabilita la creazione di uno spazio di identificazione degli utenti (user namespace) nel contesto sandbox.
  • È stata aggiunta l'opzione «—assert-userns-disabled» per verificare che, quando si usa l'opzione «—disable-userns», venga attivato uno spazio di identificazione degli utenti esistente.
  • È stata aumentata l'informatività dei messaggi di errore legati alla disabilitazione delle impostazioni CONFIG_SECCOMP e CONFIG_SECCOMP_FILTER nel kernel.

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