Тусгаарлагдсан орчныг зохион байгуулах хэрэгсэл болох Bubblewrap 0.12-ийн шинэ хувилбарыг нийтэллээ. Энэ нь давуу эрхгүй хэрэглэгчдэд зориулсан бие даасан програмуудыг хязгаарлахад ашиглагддаг. Практикт Bubblewrap-ийг Flatpak төсөл багцуудаас эхлүүлсэн програмуудыг тусгаарлах давхарга болгон ашигладаг. Энэ зорилгоор тусгаарлах уламжлалт аргуудыг ашигладаг. Linux cgroups, namespace, Seccomp болон SE ашиглахад суурилсан контейнер виртуалчлалын технологиудLinuxТөслийн кодыг C хэл дээр бичиж, LGPLv2.1+ лицензийн дагуу түгээдэг.
Файлын системийн түвшинд тусгаарлах нь анхдагчаар tmpfs ашиглан хоосон root хуваалтыг үүсгэсэн шинэ холбох нэрийн орон зайг үүсгэснээр хийгддэг. Шаардлагатай бол гадаад FS хуваалтыг "mount —bind" горимд хавсаргасан болно (жишээлбэл, "bwrap —ro-bind /usr /usr" сонголтоор эхлүүлэх үед /usr хуваалтыг үндсэн системээс дамжуулдаг. зөвхөн унших горимд). Сүлжээний чадавхи нь CLONE_NEWNET болон CLONE_NEWUTS тугуудаар дамжуулан сүлжээний стек тусгаарлалт бүхий давталтын интерфэйс рүү хандахад хязгаарлагддаг.
Үүсгэсэн тусгаарлагдсан орчноос бүх шаардлагагүй хэрэглэгчийн болон процессын ID-г хасахын тулд CLONE_NEWUSER (хэрэглэгчийн нэрийн орон зай) болон CLONE_NEWPID (PID нэрийн орон зай) горимуудыг ашиглаж болох бөгөөд шинэ эрх олж авахаас урьдчилан сэргийлэхийн тулд PR_SET_NO_NEW_PRIVS горимыг ашигладаг. Шаардлагатай эрх олж авахын тулд "хэрэглэгчийн нэрийн орон зай"-г ашигладаг.
Шинэ хувилбарт:
- Кодын лицензийг LGPL 2.0+-аас LGPL 2.1+ болгон өөрчилсөн.
- suid root тугийг ашиглан нэмэлт эрх олж авдаг гүйцэтгэгдэх файл хэлбэрээр бүтээх дэмжлэгийг зогсоосон. "Хэрэглэгчийн нэрийн орон зай"-г дэмжих нь одоо заавал шаардлагатай болсон. Дурдсан шалтгаан нь тархалтуудад "хэрэглэгчийн нэрийн орон зай"-г өргөнөөр дэмждэг тул suid тугийг хадгалах нарийн төвөгтэй байдал юм.
- "--not-a-security-bordery" сонголтыг нэмсэн бөгөөд энэ нь тохируулсан үед дэд түлхүүрийг дахин холбох гэх мэт тусгаарлагдсан хамгаалагдсан орчны орчныг тохируулах үед зарим алдаа гарахаас сэргийлдэг.
- Цөмтэй арагшаа нийцтэй байдлыг идэвхгүй болгохын тулд "assume_kernel" бүтээх сонголтыг нэмсэн Linux, заасан хувилбараас хуучин. Жишээлбэл, 5.6.0+ хувилбарыг зааж өгснөөр "openat2(RESOLVE_IN_ROOT)" функцийн өөр хувилбарын хэрэгжилтийг хасна.
Эх сурвалж: opennet.ru
