Bubblewrap เครื่องมือสำหรับสร้างแอปพลิเคชันในสภาพแวดล้อมแยก

Bubblewrap เป็นเครื่องมือ งานอะไร เพื่อจัดระเบียบ sandbox ทำงานบน Linux และเรียกใช้ ในระดับแอปพลิเคชันผู้ใช้ที่ไม่มีสิทธิพิเศษ. ในทางปฏิบัติ Bubblewrap ถูกใช้โดยโครงการ Flatpak เป็นชั้นกลางเพื่อแยกแอปพลิเคชันที่เปิดตัวจากแพ็คเกจซอฟต์แวร์

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

ไม่จำเป็นต้องเปิดใช้งานเนมสเปซผู้ใช้บนระบบทำให้คุณสามารถใช้ชุดรหัสของคุณเองในคอนเทนเนอร์ได้เนื่องจากโดยค่าเริ่มต้นจะไม่ทำงานกับการแจกแจงจำนวนมาก

เกี่ยวกับ Bubblewrap

Bubblewrap อยู่ในตำแหน่งที่เป็นการใช้งาน Suida แบบ จำกัด จากชุดย่อยของฟังก์ชันเนมสเปซผู้ใช้เพื่อแยกรหัสผู้ใช้และรหัสกระบวนการทั้งหมดออกจากสภาพแวดล้อมยกเว้นรหัสปัจจุบันให้ใช้โหมด CLONE_NEWUSER และ CLONE_NEWPID.

สำหรับการป้องกันเพิ่มเติม โปรแกรมที่ทำงานใน Bubblewrap จะเริ่มในโหมด PR_SET_NO_NEW_PRIVS, ที่ห้ามไม่ให้มีสิทธิพิเศษใหม่ ตัวอย่างเช่นด้วยแฟล็ก setuid

การแยกที่ระดับระบบไฟล์ทำได้โดยการสร้างเนมสเปซเมาท์ใหม่ตามค่าเริ่มต้นซึ่งพาร์ติชันรูทว่างถูกสร้างขึ้นโดยใช้ tmpfs

หากจำเป็นส่วน FS ภายนอกจะแนบมากับส่วนนี้ใน«เมานต์ - ผูก» (ตัวอย่างเช่นเริ่มต้นด้วยตัวเลือก«bwrap –ro-bind / usr / usr', ส่วน / usr ถูกส่งต่อจากโฮสต์ในโหมดอ่านอย่างเดียว)

ความสามารถของเครือข่าย จำกัด เฉพาะการเข้าถึงอินเทอร์เฟซแบบย้อนกลับ กลับด้านด้วยการแยกสแต็กเครือข่ายผ่านตัวบ่งชี้ CLONE_NEWNET และ CLONE_NEWUTS

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

ในทางกลับกัน Firejail จะรวมฟังก์ชันที่เกี่ยวข้องทั้งหมดไว้ในไฟล์ปฏิบัติการไฟล์เดียวทำให้การตรวจสอบของคุณซับซ้อนขึ้นและการรักษาความปลอดภัยในระดับที่เหมาะสม

Bubblewrap ใช้งานได้โดยทั่วไป โดยใช้ การสร้างเนมสเปซเมาท์ว่างบนระบบไฟล์ชั่วคราว ซึ่งจะถูกทำลายหลังจากการประมวลผลแซนด์บ็อกซ์เสร็จสิ้น

ด้วยการใช้สวิตช์ผู้ใช้สามารถสร้างสภาพแวดล้อมระบบไฟล์ที่ต้องการภายในเนมสเปซเมาท์โดยติดตั้งบนลิงก์ของไดเร็กทอรีที่ต้องการจากระบบโฮสต์

บับเบิ้ลแรป 0.4.0

ปัจจุบัน Bubblewrap อยู่ในเวอร์ชัน 0.4.0 ซึ่งเพิ่งเปิดตัว รหัสโครงการเขียนด้วยภาษา C และแจกจ่ายภายใต้ใบอนุญาต LGPLv2 +

รุ่นใหม่ มีความโดดเด่นในการใช้งานการสนับสนุนสำหรับการเข้าร่วมเนมสเปซและกระบวนการ ผู้ใช้ที่มีอยู่ (pid namespaces)

เพิ่มแฟล็ก "–userns", "–userns2" และ "–pidns" เพื่อควบคุมการเชื่อมต่อของเนมสเปซ

คุณลักษณะนี้ไม่ทำงานในโหมด setuid และต้องใช้โหมดแยกต่างหากที่สามารถทำงานได้โดยไม่มีสิทธิ์ root แต่ต้องเปิดใช้งานเนมสเปซผู้ใช้บนระบบ (ปิดใช้งานโดยค่าเริ่มต้นใน Debian และ RHEL / CentOS) และไม่รวมความเป็นไปได้ เพื่อใช้ประโยชน์จากช่องโหว่ที่อาจมีอยู่สำหรับขอบของข้อ จำกัด "เนมสเปซผู้ใช้"

จากคุณสมบัติใหม่ของ Bubblewrap 0.4 ความเป็นไปได้ในการสร้างด้วยห้องสมุด musl C แทนที่จะเป็น glibc ก็เป็นที่สังเกตเช่นกัน และรองรับการบันทึกข้อมูลเนมสเปซลงในไฟล์สถิติในรูปแบบ JSON

คุณสามารถดูรหัส Bubblewrap รวมทั้งเอกสารเกี่ยวกับเรื่องนี้ได้ที่ Github ลิงค์คือนี่.


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา