การเปิดตัว Bubblewrap 0.6 ซึ่งเป็นเลเยอร์สำหรับสร้างสภาพแวดล้อมที่แยกออกจากกัน

มีการเปิดตัวเครื่องมือสำหรับจัดระเบียบการทำงานของสภาพแวดล้อมแบบแยก Bubblewrap 0.6 ซึ่งโดยปกติจะใช้เพื่อจำกัดแอปพลิเคชันแต่ละรายการของผู้ใช้ที่ไม่มีสิทธิ์ ในทางปฏิบัติ โครงการ Flatpak จะใช้ Bubblewrap เป็นเลเยอร์เพื่อแยกแอปพลิเคชันที่เรียกใช้จากแพ็คเกจ รหัสโครงการเขียนด้วยภาษา C และเผยแพร่ภายใต้ใบอนุญาต LGPLv2+

สำหรับการแยกออกจากกัน จะใช้เทคโนโลยีการจำลองเสมือนคอนเทนเนอร์ Linux แบบดั้งเดิม โดยอิงตามการใช้ cgroups, เนมสเปซ, Seccomp และ SELinux ในการดำเนินการที่มีสิทธิ์พิเศษในการกำหนดค่าคอนเทนเนอร์ Bubblewrap จะถูกเปิดใช้งานด้วยสิทธิ์รูท (ไฟล์ปฏิบัติการที่มีแฟล็ก suid) จากนั้นจะรีเซ็ตสิทธิ์พิเศษหลังจากเตรียมใช้งานคอนเทนเนอร์แล้ว

การเปิดใช้งานเนมสเปซผู้ใช้ในระบบเนมสเปซ ซึ่งอนุญาตให้คุณใช้ชุดตัวระบุแยกต่างหากในคอนเทนเนอร์นั้นไม่จำเป็นสำหรับการดำเนินการ เนื่องจากมันจะไม่ทำงานตามค่าเริ่มต้นในการแจกแจงหลายๆ แบบ (Bubblewrap อยู่ในตำแหน่งที่จำกัดการใช้งาน suid ของ ชุดย่อยของความสามารถของเนมสเปซผู้ใช้ - เพื่อแยกผู้ใช้และตัวระบุกระบวนการทั้งหมดออกจากสภาพแวดล้อม ยกเว้นอันปัจจุบัน จะใช้โหมด 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

ข้อแตกต่างที่สำคัญจากโปรเจ็กต์ Firejail ที่คล้ายกันซึ่งใช้โมเดลการเปิดตัว setuid ก็คือใน Bubblewrap เลเยอร์การสร้างคอนเทนเนอร์จะรวมเฉพาะความสามารถขั้นต่ำที่จำเป็นเท่านั้น และฟังก์ชันขั้นสูงทั้งหมดที่จำเป็นสำหรับการรันแอปพลิเคชันกราฟิก การโต้ตอบกับเดสก์ท็อป และการกรองคำขอ ไปยัง Pulseaudio ถ่ายโอนไปยังฝั่ง Flatpak และดำเนินการหลังจากรีเซ็ตสิทธิ์แล้ว ในทางกลับกัน Firejail จะรวมฟังก์ชันที่เกี่ยวข้องทั้งหมดไว้ในไฟล์ปฏิบัติการไฟล์เดียว ซึ่งทำให้ยากต่อการตรวจสอบและรักษาความปลอดภัยในระดับที่เหมาะสม

ในรุ่นใหม่:

  • Добавлена поддержка сборочной системы Meson. Поддержка сборки при помощи Autotools пока сохранена, но будет удалена в одном из следующих выпусков.
  • Реализована опция «—add-seccomp» для добавления более чем одной программы seccomp. Добавлено предупреждение о том, что при повторном указании опции «—seccomp» будет применён только последний параметр.
  • Ветка master в git-репозитории переименована в main.
  • Добавлена частичная поддержка спецификации REUSE, унифицирующей процесс указания сведений о лицензиях и авторских правах. Во многие файлы с кодом добавлены заголовки SPDX-License-Identifier. Следование рекомендациям REUSE позволяет упростить автоматическое определение какая лицензия применяется к каким из частей кода приложения.
  • Добавлена проверка значения счётчика аргументов командной строки (argc) и реализован экстренный выход в случае если счётчик равен нулю. Изменение позволяет блокировать проблемы с безопасностью, вызванные некорректной обработкой передаваемых аргументов командной строки, такие как CVE-2021-4034 в Polkit.

ที่มา: opennet.ru

เพิ่มความคิดเห็น