Даступны выпуск інструментара для арганізацыі працы ізаляваных асяродкаў Bubblewrap 0.8, як правіла выкарыстоўваны для абмежавання асобных прыкладанняў непрывілеяваных карыстачоў. На практыцы Bubblewrap прымяняецца праектам Flatpak у якасці праслойкі для ізаляцыі запускаюцца з пакетаў прыкладанняў. Код праекту напісаны на мове Сі і распаўсюджваецца пад ліцэнзіяй LGPLv2+.
Для ізаляцыі выкарыстоўваюцца традыцыйныя для Linux тэхналогіі кантэйнернай віртуалізацыі, заснаваныя на выкарыстанні cgroups, прастор імёнаў (namespaces), Seccomp і SELinux. Для выканання прывілеяваных аперацый па наладзе кантэйнера Bubblewrap запускаецца з правамі root (выкананы файл c suid-сцягам) з наступным скідам прывілеяў пасля завяршэння ініцыялізацыі кантэйнера.
Актывацыя ў сістэме прастор імёнаў ідэнтыфікатараў карыстача (user namespaces), якія дазваляюць выкарыстоўваць у кантэйнерах уласны асобны набор ідэнтыфікатараў, для працы не патрабуецца, бо па змаўчанні не працуе ў шматлікіх дыстрыбутывах (Bubblewrap пазіцыянуецца як абмежаваная suid-рэалізацыя падмноства магчымасцяў user name усіх ідэнтыфікатараў карыстачоў і працэсаў з асяроддзя, акрамя бягучага, выкарыстоўваюцца рэжымы CLONE_NEWUSER і CLONE_NEWPID). Для дадатковай абароны выкананыя пад кіраваннем Bubblewrap праграмы запускаюцца ў рэжыме PR_SET_NO_NEW_PRIVS, які забараняе атрыманне новых прывілеяў, напрыклад, пры наяўнасці сцяга setuid.
Ізаляцыя на ўзроўні файлавай сістэмы вырабляецца праз стварэнне па змаўчанні новай прасторы імёнаў кропак мантавання (mount namespace), у якім пры дапамозе tmpfs ствараецца пустая каранёвая частка. У дадзены раздзел пры неабходнасці прымацоўваюцца часткі знешняй ФС у рэжыме "mount -bind" (напрыклад, пры запуску c опцыяй "bwrap -ro-bind /usr /usr" раздзел /usr пракідваецца з асноўнай сістэмы ў рэжыме толькі для чытання). Сеткавыя магчымасці абмяжоўваюцца доступам да loopback-інтэрфейсу з ізаляцыяй сеткавага стэка праз сцягі CLONE_NEWNET і CLONE_NEWUTS.
Ключавым адрозненнем ад падобнага праекту Firejail, які таксама выкарыстоўвае мадэль запуску з ужываннем setuid, з'яўляецца тое, што ў Bubblewrap праслойка для стварэння кантэйнераў уключае толькі неабходны мінімум магчымасцяў, а ўсе пашыраныя функцыі, неабходныя для запуску графічных прыкладанняў, узаемадзеянні з працоўным сталом і фільтраванні зваротаў да Pulseaudio, вынесены на бок Flatpak і выконваюцца ўжо пасля скіду прывілеяў. Firejail жа аб'ядноўвае ў адным выкананым файле ўсе спадарожныя функцыі, што ўскладняе яго аўдыт і падтрыманне бяспекі на належным узроўні.
У новым выпуску:
- Дададзена опцыя «—disable-userns» якая адключае стварэнне ў sandbox-акружэнні сваёй укладзенай прасторы ідэнтыфікатараў карыстачоў (user namespace).
- Дададзена опцыя "-assert-userns-disabled" для праверкі, што пры выкарыстанні опцыі "-disable-userns" задзейнічана існуючая прастора ідэнтыфікатараў карыстальнікаў.
- Падвышаная інфарматыўнасць паведамленняў аб памылках, звязаных з адключэннем у ядры налад CONFIG_SECCOMP і CONFIG_SECCOMP_FILTER.
Крыніца: opennet.ru