Тусгаарлагдсан орчин үүсгэх давхарга болох Bubblewrap 0.8-ийг гаргалаа

Тусгаарлагдсан орчны ажлыг зохион байгуулах хэрэгслүүдийн хувилбар Bubblewrap 0.8 байдаг бөгөөд ихэвчлэн эрх мэдэлгүй хэрэглэгчдийн хувийн хэрэглээг хязгаарлахад ашигладаг. Практикт Bubblewrap-ийг Flatpak төсөл багцуудаас эхлүүлсэн програмуудыг тусгаарлах давхарга болгон ашигладаг. Төслийн код нь C хэл дээр бичигдсэн бөгөөд LGPLv2+ лицензийн дагуу түгээгддэг.

Тусгаарлахын тулд бүлгүүд, нэрийн орон зай, Seccomp, SELinux ашиглахад суурилсан уламжлалт Линуксийн контейнер виртуалчлалын технологийг ашигладаг. Контейнерийг тохируулах давуу эрхтэй үйлдлүүдийг гүйцэтгэхийн тулд Bubblewrap-г root эрхээр (suid туг бүхий гүйцэтгэгдэх файл) ажиллуулж, дараа нь контейнерыг эхлүүлсний дараа эрхийг сэргээнэ.

Нэрийн орон зайн систем дэх хэрэглэгчийн нэрийн талбарыг идэвхжүүлэх нь олон түгээлтэд анхдагч байдлаар ажиллахгүй тул контейнерт өөрийн тусдаа таниулбаруудыг ашиглах боломжийг олгодог бөгөөд энэ нь ажиллахад шаардлагагүй юм (Bubblewrap нь програмын хязгаарлагдмал нийцтэй хэрэгжүүлэлт хэлбэрээр байрладаг. хэрэглэгчийн нэрийн орон зайн чадамжийн дэд хэсэг - одоогийнхоос бусад бүх хэрэглэгч болон процессын танигчийг орчноос хасахын тулд CLONE_NEWUSER болон CLONE_NEWPID горимуудыг ашигладаг). Нэмэлт хамгаалах үүднээс Bubblewrap-ийн дагуу гүйцэтгэсэн программуудыг PR_SET_NO_NEW_PRIVS горимд ажиллуулдаг бөгөөд энэ нь жишээлбэл setuid туг байгаа тохиолдолд шинэ эрх олж авахыг хориглодог.

Файлын системийн түвшинд тусгаарлах нь анхдагчаар tmpfs ашиглан хоосон root хуваалтыг үүсгэсэн шинэ холбох нэрийн орон зайг үүсгэснээр хийгддэг. Шаардлагатай бол гадаад FS хуваалтыг "mount —bind" горимд хавсаргасан болно (жишээлбэл, "bwrap —ro-bind /usr /usr" сонголтоор эхлүүлэх үед /usr хуваалтыг үндсэн системээс дамжуулдаг. зөвхөн унших горимд). Сүлжээний чадавхи нь CLONE_NEWNET болон CLONE_NEWUTS тугуудаар дамжуулан сүлжээний стек тусгаарлалт бүхий давталтын интерфэйс рүү хандахад хязгаарлагддаг.

Setuid эхлүүлэх загварыг ашигладаг ижил төстэй Firejail төслөөс гол ялгаа нь Bubblewrap-д контейнер үүсгэх давхарга нь зөвхөн шаардлагатай хамгийн бага чадамж, график програмуудыг ажиллуулах, ширээний компьютертэй харилцах, хүсэлтийг шүүх зэрэгт шаардлагатай бүх дэвшилтэт функцуудыг агуулдаг. Pulseaudio руу шилжүүлж, Flatpak тал руу шилжүүлж, давуу эрхүүдийг дахин тохируулсны дараа гүйцэтгэнэ. Нөгөө талаас Firejail нь холбогдох бүх функцийг нэг гүйцэтгэгдэх файлд нэгтгэдэг бөгөөд энэ нь аудит хийх, аюулгүй байдлыг зохих түвшинд байлгахад хэцүү болгодог.

Шинэ хувилбарт:

  • “--disable-userns” сонголтыг нэмсэн бөгөөд хамгаалагдсан хязгаарлагдмал орчинд өөрийн хэрэглэгчийн нэрийн орон зайг үүсгэхийг идэвхгүй болгосон.
  • "--disable-userns" сонголтыг ашиглах үед одоо байгаа хэрэглэгчийн ID зай ашиглаж байгаа эсэхийг шалгахын тулд "--assert-userns-disabled" сонголтыг нэмсэн.
  • Цөм дэх CONFIG_SECCOMP болон CONFIG_SECCOMP_FILTER тохиргоог идэвхгүй болгохтой холбоотой алдааны мэдэгдлийн мэдээллийн агуулгыг нэмэгдүүлсэн.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх