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

Dopo un anno di sviluppo è stata pubblicata una nuova versione dello strumento per l'organizzazione del lavoro in ambienti isolati Bubblewrap 0.9, utilizzato per limitare applicazioni di utenti non privilegiati. Nella pratica, Bubblewrap è utilizzato dal progetto Flatpak come strato per l'isolamento delle 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:

  • I file generati in Autotools sono stati rimossi dal pacchetto con i testi sorgente. Per la compilazione ora si consiglia di utilizzare il sistema di build Meson. Il supporto opzionale per Autotools è stato mantenuto, ma nelle versioni future è previsto di rimuoverlo.
  • È stata aggiunta l'opzione «—argv0» per impostare il valore dell'argomento nullo da riga di comando (argv[0] — nome del file eseguibile, ad esempio «—argv0 /usr/bin/test»).
  • L'opzione «—symlink» ora si attiva solo quando il link simbolico esiste già e punta al file di destinazione corretto.
  • Documentata l'opzione «—cap-add», utilizzata per impostare i flag capability, ad esempio, «CAP_DAC_READ_SEARCH».
  • Aumentata l'informatività degli errori visualizzati in caso di fallimento del montaggio.
  • Semplificato il processo di creazione di unit test.
  • Negli esempi di utilizzo è stata interrotta la supporto per le versioni obsolete di Python.
  • Migliorate le operazioni di allocazione della memoria.

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