Lëshimi i Bubblewrap 0.6, një shtresë për krijimin e mjediseve të izoluara

Ekziston një lëshim i mjeteve për organizimin e punës së mjediseve të izoluara Bubblewrap 0.6, i cili zakonisht përdoret për të kufizuar aplikacionet individuale të përdoruesve të paprivilegjuar. Në praktikë, Bubblewrap përdoret nga projekti Flatpak si një shtresë për të izoluar aplikacionet e nisura nga paketat. Kodi i projektit është shkruar në C dhe shpërndahet nën licencën LGPLv2+.

Për izolim, përdoren teknologjitë tradicionale të virtualizimit të kontejnerëve Linux, bazuar në përdorimin e cgroups, hapësirave të emrave, Seccomp dhe SELinux. Për të kryer operacione të privilegjuara për të konfiguruar një kontejner, Bubblewrap niset me të drejtat rrënjësore (një skedar i ekzekutueshëm me një flamur suid) dhe më pas rivendos privilegjet pasi kontejneri të inicializohet.

Aktivizimi i hapësirave të emrave të përdoruesve në sistemin e hapësirës së emrave, i cili ju lejon të përdorni grupin tuaj të veçantë të identifikuesve në kontejnerë, nuk kërkohet për funksionim, pasi nuk funksionon si parazgjedhje në shumë shpërndarje (Bubblewrap pozicionohet si një zbatim suid i kufizuar i një nëngrupi i aftësive të hapësirave të emrave të përdoruesve - për të përjashtuar të gjithë identifikuesit e përdoruesve dhe të procesit nga mjedisi, përveç atij aktual, përdoren mënyrat CLONE_NEWUSER dhe CLONE_NEWPID). Për mbrojtje shtesë, programet e ekzekutuara nën Bubblewrap nisen në modalitetin PR_SET_NO_NEW_PRIVS, i cili ndalon marrjen e privilegjeve të reja, për shembull, nëse është i pranishëm flamuri setuid.

Izolimi në nivelin e sistemit të skedarëve realizohet duke krijuar si parazgjedhje një hapësirë ​​të re të montimit, në të cilën krijohet një ndarje rrënjë bosh duke përdorur tmpfs. Nëse është e nevojshme, ndarjet e jashtme FS i bashkëngjiten kësaj ndarje në modalitetin "mount —bind" (për shembull, kur lëshohet me opsionin "bwrap —ro-bind /usr /usr", ndarja /usr përcillet nga sistemi kryesor në modalitetin vetëm për lexim). Aftësitë e rrjetit janë të kufizuara në aksesin në ndërfaqen loopback me izolimin e stivës së rrjetit nëpërmjet flamujve CLONE_NEWNET dhe CLONE_NEWUTS.

Dallimi kryesor nga projekti i ngjashëm Firejail, i cili gjithashtu përdor modelin e nisjes setuid, është se në Bubblewrap shtresa e krijimit të kontejnerit përfshin vetëm aftësitë e nevojshme minimale dhe të gjitha funksionet e avancuara të nevojshme për ekzekutimin e aplikacioneve grafike, ndërveprimin me desktopin dhe kërkesat për filtrim. në Pulseaudio, transferohet në anën Flatpak dhe ekzekutohet pasi të jenë rivendosur privilegjet. Firejail, nga ana tjetër, kombinon të gjitha funksionet e lidhura në një skedar të ekzekutueshëm, gjë që e bën të vështirë auditimin dhe ruajtjen e sigurisë në nivelin e duhur.

Në publikimin e ri:

  • Добавлена поддержка сборочной системы Meson. Поддержка сборки при помощи Autotools пока сохранена, но будет удалена в одном из следующих выпусков.
  • Реализована опция «—add-seccomp» для добавления более чем одной программы seccomp. Добавлено предупреждение о том, что при повторном указании опции «—seccomp» будет применён только последний параметр.
  • Ветка master в git-репозитории переименована в main.
  • Добавлена частичная поддержка спецификации REUSE, унифицирующей процесс указания сведений о лицензиях и авторских правах. Во многие файлы с кодом добавлены заголовки SPDX-License-Identifier. Следование рекомендациям REUSE позволяет упростить автоматическое определение какая лицензия применяется к каким из частей кода приложения.
  • Добавлена проверка значения счётчика аргументов командной строки (argc) и реализован экстренный выход в случае если счётчик равен нулю. Изменение позволяет блокировать проблемы с безопасностью, вызванные некорректной обработкой передаваемых аргументов командной строки, такие как CVE-2021-4034 в Polkit.

Burimi: opennet.ru

Shto një koment