Po šesti měsících vývoje uvolnění projektu , v rámci kterého se vyvíjí systém pro izolované provádění grafických, konzolových a serverových aplikací. Použití Firejail minimalizuje riziko kompromitace hlavního systému při spouštění nedůvěryhodných či potenciálně zranitelných programů. Program je napsán v jazyce C, pod licencí GPLv2 a může fungovat v jakékoliv distribuci Linuxu s jádrem starším než 3.0. Hotové balíčky s Firejail v formátu deb (Debian, Ubuntu) a rpm (CentOS, Fedora).
Pro izolaci ve Firejail jmenné prostory (namespaces), AppArmor a filtrování systémových volání (seccomp-bpf) v Linuxu. Po spuštění program a všechny její podřízené procesy používají oddělená zobrazení prostředků jádra, jako jsou síťový zásobník, tabulka procesů a body připojení. Vzájemně závislé aplikace lze kombinovat do jednoho společného sandboxu. V případě potřeby lze Firejail použít i pro spuštění kontejnerů Docker, LXC a OpenVZ.
Na rozdíl od prostředků kontejnerové izolace je firejail maximálně na konfiguraci a nevyžaduje přípravu systémového obrazu — složení kontejneru se vytváří na místě na základě obsahu aktuální FS a odstraňuje se po dokončení provozu aplikace. Jsou poskytovány flexibilní prostředky pro zadávání pravidel přístupu k souborovému systému, lze určovat, k jakým souborům a adresářům je povolen nebo zakázán přístup, připojovat pro data dočasné FS (tmpfs), omezovat přístup k souborům nebo adresářům pouze pro čtení, kombinovat adresáře pomocí bind-mount a overlayfs.
Pro velké množství populárních aplikací, včetně Firefoxu, Chromia, VLC a Transmission, jsou připraveny hotové izolace systémových volání. Pro získání privilegií potřebných pro nastavení izolovaného prostředí se spustitelný soubor firejail instaluje s flagem SUID root (po inicializaci jsou privilegium resetována). Pro spuštění programu v režimu izolace stačí uvést název aplikace jako argument nástroje firejail, například „firejail firefox“ nebo „sudo firejail /etc/init.d/nginx start“.
V novém vydání:
- Do konfiguračního souboru /etc/firejail/firejail.config je nastavení file-copy-limit, které umožňuje omezit velikost souborů, které budou zkopírovány do paměti při používání voleb „—private-*“ (výchozí limit je nastaven na 500 MB).
- Do katalogu /usr/share/doc/firejail byly přidány šablony pro vytváření nových profilů omezení aplikací.
- V profilech je povoleno používání ladicích nástrojů.
- Byla vylepšena filtrace systémových volání pomocí mechanismu seccomp.
- Bylo zajištěno automatické rozpoznání příznaků kompilátoru.
- Volání chroot nyní není prováděno na základě cesty, ale používá body připojení na základě souborového popisovače.
- Adresář /usr/share byl přidán do bílého seznamu různých profilů.
- Do sekce contrib byly přidány nové pomocné skripty gdb-firejail.sh a sort.py.
- Byla posílena ochrana v průběhu provádění privilegovaného kódu (SUID).
- Pro profily byly implementovány nové podmíněné příznaky HAS_X11 a HAS_NET pro kontrolu přítomnosti X-serveru a síťového přístupu.
- Byly přidány profily pro izolované spuštění aplikací (celkový počet profilů vzrostl na 884):
- i2p,
- tor-browser (AUR),
- Zulip,
- rsync,
- signal-cli,
- tcpdump,
- tshark,
- qgis,
- OpenArena,
- godot,
- klatexformula,
- klatexformula_cmdl,
- links,
- xlinks,
- pandoc,
- teams-for-linux,
- gnome-sound-recorder,
- newsbeuter,
- keepassxc-cli,
- keepassxc-proxy,
- rhythmbox-client,
- jerry,
- zeal,
- mpg123,
- conplay,
- mpg123.bin,
- mpg123-alsa,
- mpg123-id3dump,
- out123,
- mpg123-jack,
- mpg123-nas,
- mpg123-openal,
- mpg123-oss,
- mpg123-portaudio,
- mpg123-pulse,
- mpg123-strip,
- pavucontrol-qt,
- gnome-characters,
- gnome-character-map,
- Whalebird,
- tb-starter-wrapper,
- bzcat,
- kiwix-desktop,
- bzcat,
- zstd,
- pzstd,
- zstdcat,
- zstdgrep,
- zstdless,
- zstdmt,
- unzstd,
- ar,
- gnome-latex,
- pngquant,
- kalgebra,
- kalgebramobile,
- amuled,
- kfind,
- profanity,
- audio-recorder,
- cameramonitor,
- ddgtk,
- drawio,
- unf,
- gmpc,
- electron-mail,
- gist,
- gist-paste.
Zdroj: opennet.ru
