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

Тусгаарлагдсан орчны ажлыг зохион байгуулах хэрэгслүүдийн хувилбар Bubblewrap 0.6 байдаг бөгөөд ихэвчлэн эрх мэдэлгүй хэрэглэгчдийн хувийн хэрэглээг хязгаарлахад ашигладаг. Практикт 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 нь холбогдох бүх функцийг нэг гүйцэтгэгдэх файлд нэгтгэдэг бөгөөд энэ нь аудит хийх, аюулгүй байдлыг зохих түвшинд байлгахад хэцүү болгодог.

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

  • Месон угсралтын системийн дэмжлэгийг нэмсэн. Autotools ашиглан бүтээхэд зориулсан дэмжлэгийг одоогоор хадгалсан боловч дараагийн хувилбарт устгах болно.
  • Нэгээс олон seccomp програм нэмэхийн тулд "--add-seccomp" сонголтыг хэрэгжүүлсэн. Хэрэв та "--seccomp" сонголтыг дахин зааж өгвөл зөвхөн сүүлийн параметрийг ашиглах болно гэсэн анхааруулгыг нэмсэн.
  • Гит репозитор дахь мастер салбарыг үндсэн болгож өөрчилсөн.
  • Лиценз болон зохиогчийн эрхийн мэдээллийг тодорхойлох үйл явцыг нэгтгэсэн ДАХИН АШИГЛАХ тодорхойлолтод хэсэгчилсэн дэмжлэг нэмсэн. Олон кодын файлд SPDX-License-Identifier-ийн толгой хэсгийг нэмсэн. ДАХИН АШИГЛАХ удирдамжийг дагаж мөрдөх нь програмын кодын аль хэсэгт ямар лиценз хамаарахыг автоматаар тодорхойлоход хялбар болгодог.
  • Командын мөрийн аргумент тоолуурын утгыг шалгах (argc) нэмсэн бөгөөд тоолуур тэг байвал яаралтай тусламжийн гарцыг хэрэгжүүлсэн. Энэхүү өөрчлөлт нь Polkit дээрх CVE-2021-4034 гэх мэт дамжуулсан командын мөрийн аргументуудыг буруу хэрэглэснээс үүдэлтэй аюулгүй байдлын асуудлыг блоклоход тусалдаг.

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

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