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

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

วัสดุแบบดั้งเดิมถูกนำมาใช้สำหรับฉนวนกันความร้อน Linux เทคโนโลยีการจำลองเสมือนคอนเทนเนอร์โดยอาศัยการใช้งาน cgroups, namespaces, 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 จะรวมฟังก์ชันที่เกี่ยวข้องทั้งหมดไว้ในไฟล์ปฏิบัติการไฟล์เดียว ซึ่งทำให้ยากต่อการตรวจสอบและรักษาความปลอดภัยในระดับที่เหมาะสม

ในรุ่นใหม่:

  • ไฟล์ที่สร้างโดย Autotools ถูกลบออกจากแพ็กเกจซอร์สโค้ดแล้ว ขณะนี้ขอแนะนำให้ใช้ระบบสร้าง Meson สำหรับการสร้าง การสนับสนุน Autotools เสริมยังคงมีอยู่ แต่มีแผนที่จะลบออกในรุ่นต่อๆ ไป
  • เพิ่มตัวเลือก "--argv0" เพื่อตั้งค่าอาร์กิวเมนต์บรรทัดคำสั่งลำดับที่ศูนย์ (argv[0] คือชื่อของไฟล์ปฏิบัติการ เช่น "--argv0 /usr/bin/test")
  • ตัวเลือก "--symlink" จะใช้งานได้เฉพาะเมื่อมีลิงก์สัญลักษณ์อยู่แล้วและชี้ไปที่ไฟล์เป้าหมายที่ต้องการ
  • มีการระบุไว้เป็นเอกสารว่าตัวเลือก "--cap-add" ใช้ในการตั้งค่าแฟล็กความสามารถ เช่น "CAP_DAC_READ_SEARCH"
  • เพิ่มเนื้อหาข้อมูลของข้อผิดพลาดที่แสดงระหว่างการติดตั้งล้มเหลว
  • กระบวนการสร้างการทดสอบยูนิตได้รับการปรับให้เรียบง่ายขึ้น
  • การสนับสนุน Python เวอร์ชันเก่าถูกยกเลิกในตัวอย่างการใช้งาน
  • ปรับปรุงการจัดสรรหน่วยความจำให้ดีขึ้น

ที่มา: opennet.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster