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

มีอยู่ ชุดเครื่องมือรุ่นใหม่ บับเบิ้ลแรป 0.4.0ออกแบบมาเพื่อจัดระเบียบการทำงานของสภาพแวดล้อมแบบแยกใน Linux และการทำงานในระดับแอปพลิเคชันของผู้ใช้ที่ไม่มีสิทธิพิเศษ ในทางปฏิบัติ โครงการ 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

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

รุ่นใหม่มีความโดดเด่นในการใช้งานการสนับสนุนสำหรับการเข้าร่วมเนมสเปซผู้ใช้ที่มีอยู่และกระบวนการเนมสเปซ pid เพื่อควบคุมการเชื่อมต่อของเนมสเปซ จึงมีการเพิ่มแฟล็ก “--userns”, “--userns2” และ “-pidns”
คุณลักษณะนี้ไม่ทำงานในโหมด setuid และต้องใช้โหมดแยกต่างหากที่สามารถทำงานได้โดยไม่ได้รับสิทธิ์รูท แต่ต้องมีการเปิดใช้งาน
เนมสเปซผู้ใช้บนระบบ (ปิดใช้งานโดยค่าเริ่มต้นบน Debian และ RHEL/CentOS) และไม่รวมความเป็นไปได้ การเอารัดเอาเปรียบ อาจ ที่เหลืออยู่ ช่องโหว่ สำหรับขอบเขตข้อจำกัด "เนมสเปซผู้ใช้" คุณสมบัติใหม่ของ Bubblewrap 0.4 ยังรวมถึงความสามารถในการสร้างด้วยไลบรารี musl C แทน glibc และการสนับสนุนสำหรับการบันทึกข้อมูลเนมสเปซลงในไฟล์ที่มีสถิติในรูปแบบ JSON

ที่มา: opennet.ru

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