Апублікавана новая версія інструментара для арганізацыі працы ізаляваных акружэнняў Bubblewrap 0.12, які выкарыстоўваецца для абмежавання асобных прыкладанняў непрывілеяваных карыстальнікаў. На практыцы Bubblewrap прымяняецца праектам Flatpak у якасці праслойкі для ізаляцыі запускаюцца з пакетаў прыкладанняў. Для ізаляцыі выкарыстоўваюцца традыцыйныя для Linux тэхналогіі кантэйнернай віртуалізацыі, заснаваныя на выкарыстанні cgroups, прастор імёнаў (namespaces), Seccomp і SELinux. Код праекту напісаны на мове Сі і распаўсюджваецца пад ліцэнзіяй LGPLv2.1+.
Ізаляцыя на ўзроўні файлавай сістэмы вырабляецца праз стварэнне па змаўчанні новай прасторы імёнаў кропак мантавання (mount namespace), у якім пры дапамозе tmpfs ствараецца пустая каранёвая частка. У дадзены раздзел пры неабходнасці прымацоўваюцца часткі знешняй ФС у рэжыме "mount -bind" (напрыклад, пры запуску c опцыяй "bwrap -ro-bind /usr /usr" раздзел /usr пракідваецца з асноўнай сістэмы ў рэжыме толькі для чытання). Сеткавыя магчымасці абмяжоўваюцца доступам да loopback-інтэрфейсу з ізаляцыяй сеткавага стэка праз сцягі CLONE_NEWNET і CLONE_NEWUTS.
Для выключэння ўсіх лішніх ідэнтыфікатараў карыстачоў і працэсаў з стваранага ізаляванага асяроддзя могуць выкарыстоўвацца рэжымы CLONE_NEWUSER (user namespace) і CLONE_NEWPID (PID namespace), а для забароны атрымання новых прывілеяў ужываецца рэжым PR_SET_NO_NEW_PRIVS. Для атрымання неабходных прывілеяў выкарыстоўваецца "user namespace".
У новым выпуску:
- Ліцэнзія на код зменена з LGPL 2.0 + на LGPL 2.1 +.
- Спынена падтрымка зборкі ў форме выкананага файла, атрымоўвальнага дадатковыя прывілеі пры дапамозе сцяга suid root. Наяўнасць у сістэме падтрымкі "user namespace" зараз абавязкова. У якасці прычыны называецца працаёмкасць суправаджэння варыянту са сцягам suid на фоне паўсюднай падтрымкі "user namespace" у дыстрыбутывах.
- Дададзена опцыя "-not-a-security-boundary", пры выстаўленні якой некаторыя збоі пры наладзе ізаляванага sandbox-акружэння, такія як перамантаванне падраздзела, не прыводзяць да аварыйнага завяршэння.
- Дададзена зборачная опцыя «assume_kernel», якая адключае забеспячэнне зваротнай сумяшчальнасці з ядрамі. Linux, больш старымі, чым названая версія. Напрыклад, указанне версій 5.6.0+ прывядзе да выключэння альтэрнатыўнай рэалізацыі функцыянальнасці "openat2(RESOLVE_IN_ROOT)".
Крыніца: opennet.ru
