Выпуск Bubblewrap 0.4.0, праслойкі для стварэння ізаляваных асяродкаў

даступны новы выпуск інструментара Бурбалка 0.4.0, прызначанага для арганізацыі працы ізаляваных асяродкаў у Linux і які функцыянуе на ўзроўні прыкладанняў непрывілеяваных карыстачоў. На практыцы 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.

Ключавым адрозненнем ад падобнага праекту Пажарная турма, які таксама выкарыстоўвае мадэль запуску з ужываннем setuid, з'яўляецца тое, што ў Bubblewrap праслойка для стварэння кантэйнераў ўключае толькі неабходны мінімум магчымасцяў, а ўсе пашыраныя функцыі, неабходныя для запуску графічных прыкладанняў, узаемадзеяння з працоўным сталом і фільтрацыі зваротаў да Pulseaudio, вынесены на бок Flatpak і выконваюцца ўжо пасля скіду прывілеяў. Firejail жа аб'ядноўвае ў адным выкананым файле ўсе спадарожныя функцыі, што ўскладняе яго аўдыт і падтрыманне бяспекі на належным узроўні.

Новы выпуск адметны рэалізацыяй падтрымкі далучэння існуючых прастор імёнаў ідэнтыфікатараў карыстальнікаў (user namespaces) і працэсаў (pid namespaces). Для кіравання падлучэннем прастор імёнаў дададзены сцягі "-userns", "userns2" і "pidns".
Дадзеная магчымасць не працуе ў рэжыме setuid і патрабуе прымянення асобнага рэжыму, які можа працаваць без атрымання правоў root, але патрабуе актывацыі.
user namespaces у сістэме (па змаўчанні адключаныя ў Debian і RHEL/CentOS) і не выключае магчымасць эксплуатацыі патэнцыйна якія застаюцца уразлівасцяў для вобада абмежаванняў "user namespaces". З новых магчымасцяў Bubblewrap 0.4 таксама адзначаецца магчымасць зборкі з Сі-бібліятэкай musl замест glibc і падтрымка захавання інфармацыі аб прасторах імёнаў у файл са статыстыкай у фармаце JSON.

Крыніца: opennet.ru

Дадаць каментар