Rilascio di Bubblewrap 0.6, uno strato per la creazione di ambienti isolati

È disponibile il rilascio dell'insieme di strumenti per la creazione di ambienti isolati Bubblewrap 0.6, solitamente utilizzato per limitare singole applicazioni di utenti non privilegiati. In pratica, Bubblewrap è impiegato dal progetto Flatpak come strato per l'isolamento delle applicazioni eseguite dai pacchetti. Il codice del progetto è scritto in linguaggio C e distribuito sotto la licenza LGPLv2+.

Per l'isolamento vengono utilizzate le tecnologie tradizionali per la virtualizzazione dei contenitori su Linux, basate sull'uso di cgroups, spazi dei nomi (namespaces), Seccomp e SELinux. Per eseguire operazioni privilegiate nella configurazione del contenitore, Bubblewrap viene avviato con diritti di root (file eseguibile con flag suid) per poi ripristinare i privilegi dopo la conclusione dell'inizializzazione del contenitore.

L'attivazione del sistema degli spazi dei nomi degli identificatori utente (user namespaces), che consente di utilizzare in contenitori un insieme separato di identificatori, non è necessaria 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 degli utenti—per escludere tutti gli identificatori degli utenti e dei processi dall'ambiente, eccetto quello corrente, si utilizzano le modalità CLONE_NEWUSER e CLONE_NEWPID). Per una protezione aggiuntiva, i programmi eseguiti sotto Bubblewrap vengono avviati in modalità PR_SET_NO_NEW_PRIVS, che vieta l'acquisizione di nuovi privilegi, ad esempio, in presenza del flag setuid.

L'isolamento a livello di file system avviene creando un nuovo spazio di nomi per i punti di montaggio (mount namespace) per impostazione predefinita, in cui viene creato un filesystem root vuoto tramite tmpfs. In questa partizione, se necessario, vengono montate le partizioni della FS esterna in modalità 'mount —bind' (ad esempio, all'avvio 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 sono limitate all'accesso all'interfaccia loopback, con isolamento dello stack di rete attuato tramite i flag CLONE_NEWNET e CLONE_NEWUTS.

La principale differenza rispetto a progetti simili come Firejail, che utilizza anch'esso un modello di avvio con setuid, è che in Bubblewrap il livello per la creazione dei container include solo il minimo necessario di capacità, mentre tutte le funzioni avanzate necessarie per l'avvio di applicazioni grafiche, l'interazione con il desktop e il filtraggio delle richieste a Pulseaudio sono gestite da Flatpak e vengono eseguite dopo il ripristino dei privilegi. Firejail, invece, combina tutte le funzioni ausiliarie in un unico file eseguibile, rendendo più complesso il suo audit e il mantenimento della sicurezza a un livello adeguato.

Nel nuovo rilascio:

  • Aggiunta la supporto per il sistema di build Meson. La supporto per la build tramite Autotools è ancora disponibile, ma sarà rimossa in una delle prossime versioni.
  • Implementata l'opzione «—add-seccomp» per aggiungere più di un programma seccomp. Aggiunto un avviso che indica che se l'opzione «—seccomp» è specificata più volte, verrà applicato solo l'ultimo parametro.
  • Il ramo master nel repository git è stato rinominato in main.
  • Aggiunto il supporto parziale per la specifica REUSE, che unifica il processo di indicazione delle informazioni sulle licenze e sui diritti d'autore. Sono stati aggiunti intestazioni SPDX-License-Identifier a molti file di codice. Seguire le raccomandazioni REUSE semplifica l'identificazione automatica delle licenze applicabili alle parti del codice dell'applicazione.
  • Aggiunta una verifica del valore del contatore degli argomenti della riga di comando (argc) e implementato un'uscita d'emergenza nel caso in cui il contatore sia zero. Questa modifica consente di bloccare problemi di sicurezza causati da una gestione errata degli argomenti della riga di comando, come CVE-2021-4034 in Polkit.

Fonte: opennet.ru

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