Bubblewrap 0.4.0 релизи, кумкоргон чөйрөлөрдү түзүү үчүн катмарлар

Жеткиликтүү инструменттердин жаңы чыгарылышы Bubble wrap 0.4.0, Linux'та обочолонгон чөйрөлөрдүн ишин уюштуруу жана артыкчылыксыз колдонуучулардын колдонмо деңгээлинде иштөө үчүн иштелип чыккан. Иш жүзүндө, Bubblewrap Flatpak долбоору тарабынан пакеттерден ишке киргизилген тиркемелерди изоляциялоо үчүн катмар катары колдонулат. Долбоордун коду Си тилинде жазылган жана жайылуу LGPLv2+ астында лицензияланган.

Изоляциялоо үчүн класстарды, аттар мейкиндиктерин (ат мейкиндиктерин), Seccomp жана SELinux колдонууга негизделген салттуу Linux контейнердик виртуалдаштыруу технологиялары колдонулат. Артыкчылыктуу контейнерди орнотуу операцияларын аткаруу үчүн, Bubblewrap тамыр катары иштетилет (suid желекчеси менен аткарылуучу файл) менен контейнер инициализациялангандан кийин артыкчылыктар баштапкы абалга келтирилет.

Контейнерлерге идентификаторлордун өзүнчө топтомун колдонууга мүмкүндүк берген аттар мейкиндигинде колдонуучу мейкиндиктерин активдештирүү жумуш үчүн талап кылынбайт, анткени ал көп бөлүштүрүүдө демейки боюнча иштебейт (Bubblewrap колдонуучу аттары мейкиндиктеринин мүмкүнчүлүктөрү - учурдагыдан башка бардык колдонуучу жана процесс ID'лерин чөйрөдөн чыгаруу үчүн CLONE_NEWUSER жана CLONE_NEWPID режимдерин колдонуңуз). Кошумча коргоо үчүн, аткарылуучу файлдар иштеп жатат
Bubblewrap программалары PR_SET_NO_NEW_PRIVS режиминде иштейт, бул жаңы артыкчылыктарга ээ болууга жол бербейт, мисалы, setuid желеги бар болсо.

Файл тутумунун деңгээлинде обочолонуу демейки боюнча жаңы монтаждык аттар мейкиндигин түзүү аркылуу ишке ашырылат, мында tmpfs жардамы менен бош тамыр бөлүмү түзүлөт. Зарыл болсо, тышкы FS бөлүмдөрү бул бөлүмгө “mount --bind” режиминде тиркелет (мисалы, сиз аны “bwrap --ro-bind /usr /usr” опциясы менен баштаганда, /usr бөлүмү окуу үчүн гана режимде негизги системадан жөнөтүлөт). Тармак CLONE_NEWNET жана CLONE_NEWUTS желектери аркылуу тармактык стек изоляциясы менен кайра цикл интерфейсине жетүү менен чектелген.

Окшош долбоордон негизги айырмасы өрт түрмөсү, ал ошондой эле setuid ишке киргизүү моделин колдонот, бул Bubblewrap ичинде контейнерлештирүү катмары минималдуу функцияларды гана камтыйт жана графикалык тиркемелерди ишке киргизүү, иш тактасы менен иштешүү жана Pulseaudio чалууларын чыпкалоо үчүн зарыл болгон бардык өркүндөтүлгөн мүмкүнчүлүктөр тарап Flatpak жана артыкчылыктар калыбына келтирилгенден кийин аткарылат. Firejail, экинчи жагынан, бардык тиешелүү функцияларды бир аткарылуучу файлга бириктирет, бул анын аудитин жана коопсуздугун камсыздоону кыйындатат. туура деңгээл.

Жаңы релиз колдонуучу идентификаторунун учурдагы мейкиндиктерин (колдонуучунун аттар мейкиндиктери) жана процесстерин (pid аттар мейкиндиктери) тиркөө үчүн колдоону ишке ашыруу менен айырмаланат. Ат мейкиндигине байланышты көзөмөлдөө үчүн "--userns", "--userns2" жана "--pidns" желектери кошулду.
Бул функция setuid режиминде иштебейт жана өзүнчө режимди колдонууну талап кылат, ал тамыр укуктарын албай эле иштей алат, бирок активдештирүү талап кылынат
тутумдагы колдонуучу аттар мейкиндиктери (Debian жана RHEL/CentOSда демейки боюнча өчүрүлгөн) жана бул мүмкүнчүлүктү жокко чыгарбайт иштеп жаткан потенциалдуу калган алсыздыктар "колдонуучунун аттары мейкиндиктери" чектөө алкагы үчүн. Bubblewrap 0.4 жаңы мүмкүнчүлүктөрүнүн арасында glibcтин ордуна musl C китепканасы менен куруу мүмкүнчүлүгү жана ат мейкиндигинин маалыматын JSON форматындагы статистикасы бар файлга сактоону колдоо да белгиленген.

Source: opennet.ru

Комментарий кошуу