È stato pubblicato il rilascio del progetto Firejail 0.9.78, che sviluppa un sistema per l'esecuzione isolata di applicazioni grafiche, da console e server, consentendo di ridurre al minimo il rischio di compromissione del sistema principale durante l'esecuzione di programmi potenzialmente non affidabili o vulnerabili. Il programma è scritto in linguaggio C, distribuito sotto la licenza GPLv2 e può funzionare su qualsiasi distribuzione Linux con un kernel superiore alla versione 3.0. I pacchetti pronti di Firejail sono disponibili nei formati deb (Debian, Ubuntu) e rpm (CentOS, Fedora).
Per l'isolamento in Firejail vengono utilizzati gli spazi dei nomi (namespaces), AppArmor e la filtrazione delle chiamate di sistema (seccomp-bpf) in Linux. Dopo l'avvio, il programma e tutti i suoi processi figli utilizzano visioni separate delle risorse del kernel, come lo stack di rete, la tabella dei processi e i punti di montaggio. Le applicazioni interdipendenti possono essere unite in un unico sandbox comune. Se desiderato, Firejail può essere utilizzato anche per eseguire contenitori Docker, LXC e OpenVZ.
A differenza degli strumenti di isolamento dei container, Firejail è estremamente semplice da configurare e non richiede la preparazione di un'immagine di sistema: il contenuto del container è creato al volo sulla base della FS attuale e viene eliminato dopo il termine dell'applicazione. Vengono forniti strumenti flessibili per la definizione delle regole di accesso al file system, permettendo di specificare a quali file e directory è consentito o vietato l'accesso, collegare dati a FS temporanee (tmpfs), limitare l'accesso a file o directory in sola lettura e combinare directory tramite bind-mount e overlayfs.
Per un ampio numero di applicazioni popolari, tra cui Firefox, Chromium, VLC e Transmission, sono stati preparati profili di isolamento delle chiamate di sistema. Per ottenere i privilegi necessari per configurare l'ambiente isolato, il file eseguibile di firejail viene installato con l'opzione SUID root (i privilegi vengono azzerati dopo l'inizializzazione). Per eseguire un programma in modalità isolamento, è sufficiente specificare il nome dell'applicazione come argomento dell'utilità firejail, ad esempio, "firejail firefox" o "sudo firejail /etc/init.d/nginx start".
Nel nuovo rilascio:
- Nel file di configurazione firejail.config sono state aggiunte le opzioni arg-max-count, arg-max-len, env-max-count e env-max-len per modificare i limiti sul numero e le dimensioni delle opzioni della riga di comando e delle variabili d'ambiente. Per impostazione predefinita, il numero di argomenti è limitato a 128, il numero di variabili d'ambiente a 256 e la dimensione di ciascun argomento è PATH_MAX da limits.h (in Linux 40196) + 32.
- Aggiunta l'opzione «—xephyr-extra-params» per specificare ulteriori opzioni a Xephyr (utilizzato per creare ambienti sandbox X11 con il proprio server X, eseguito in una finestra) nella riga di comando senza modificare firejail.config.
- L'utility bwrap (bubblewrap) installata nell'ambiente sandbox è stata sostituita da un layer fbwrap, che esegue programmi senza isolamento per risolvere problemi con l'avvio di Firefox, Thunderbird, GIMP a causa della chiamata glycin 2.0.0 da gdk-pixbuf2 utilizzando bwrap. Per l'uso di bwrap invece del layer, è stata aggiunta l'opzione «—allow-bwrap».
- Aggiornate le tabelle delle chiamate di sistema per seccomp. Aggiunte nuove chiamate di sistema, come epoll_pwait2 e futex_wait.
- Rimossa l'opzione di compilazione «—disable-globalcfg», cessata la supporto per overlayfs («—overlay») e la modalità IDS (Intrusion Detection System, «—ids»).
- Aggiunti i profili di isolamento per l'editor di testo ne (editor di testo), il browser Trivalent e i motori di gioco OpenRA, quakespasm, gzdoom, lzdoom, uzdoom.
- Aggiornati i profili per thunderbird, wine, qutebrowser, firefox, godot, wusc, mullvad-browser, blink, steam, ssh, brave e hashcat.
Fonte: opennet.ru
