กลไกการแยกคล้ายกับ plegde และเปิดเผยกำลังได้รับการพัฒนาสำหรับ FreeBSD

สำหรับ FreeBSD มีการเสนอการนำกลไกการแยกแอปพลิเคชันไปใช้ ซึ่งชวนให้นึกถึงคำสัญญาและเปิดเผยการเรียกระบบที่พัฒนาโดยโครงการ OpenBSD การแยกใน plegde ทำได้โดยการห้ามการเข้าถึงการเรียกของระบบที่ไม่ได้ใช้ในแอปพลิเคชัน และในการเปิดเผยโดยการเลือกเปิดการเข้าถึงเฉพาะพาธไฟล์แต่ละพาธที่แอปพลิเคชันสามารถทำงานได้ด้วย สำหรับแอปพลิเคชัน จะมีการสร้างรายการไวท์ลิสต์ของการเรียกของระบบและพาธของไฟล์ และห้ามการเรียกและพาธอื่นๆ ทั้งหมด

ความแตกต่างระหว่างอะนาล็อกของ plegde และเปิดเผยที่กำลังพัฒนาสำหรับ FreeBSD อยู่ที่การจัดเตรียมเลเยอร์เพิ่มเติมที่ช่วยให้คุณสามารถแยกแอปพลิเคชันโดยไม่ต้องทำการเปลี่ยนแปลงโค้ดหรือเปลี่ยนแปลงเพียงเล็กน้อย โปรดจำไว้ว่าใน OpenBSD การ plegde และเปิดเผยมีจุดมุ่งหมายเพื่อการบูรณาการอย่างแน่นหนากับสภาพแวดล้อมพื้นฐาน และใช้โดยการเพิ่มคำอธิบายประกอบพิเศษให้กับโค้ดของแต่ละแอปพลิเคชัน เพื่อให้องค์กรการป้องกันง่ายขึ้น ตัวกรองช่วยให้คุณสามารถแจกจ่ายรายละเอียดในระดับของการเรียกระบบแต่ละรายการ และจัดการคลาสของการเรียกของระบบ (อินพุต/เอาต์พุต การอ่านไฟล์ การเขียนไฟล์ ซ็อกเก็ต ioctl sysctl การเรียกใช้กระบวนการ ฯลฯ) . สามารถเรียกใช้ฟังก์ชันจำกัดการเข้าถึงในโค้ดแอปพลิเคชันได้เมื่อมีการดำเนินการบางอย่าง เช่น การเข้าถึงซ็อกเก็ตและไฟล์สามารถถูกปฏิเสธได้หลังจากเปิดไฟล์ที่จำเป็นและสร้างการเชื่อมต่อเครือข่าย

ผู้เขียนพอร์ต plegde และเปิดเผยสำหรับ FreeBSD ตั้งใจที่จะให้ความสามารถในการแยกแอปพลิเคชันโดยพลการซึ่งเสนอยูทิลิตี้ม่านซึ่งช่วยให้คุณสามารถใช้กฎที่กำหนดไว้ในไฟล์แยกต่างหากกับแอปพลิเคชัน การกำหนดค่าที่เสนอประกอบด้วยไฟล์ที่มีการตั้งค่าพื้นฐานซึ่งกำหนดคลาสของการเรียกของระบบและเส้นทางไฟล์ทั่วไปเฉพาะสำหรับแอปพลิเคชันบางตัว (การทำงานกับเสียง การโต้ตอบของเครือข่าย การบันทึก ฯลฯ) รวมถึงไฟล์ที่มีกฎการเข้าถึงสำหรับแอปพลิเคชันเฉพาะ

ยูทิลิตี้ Curtain สามารถใช้เพื่อแยกยูทิลิตี้ กระบวนการเซิร์ฟเวอร์ แอปพลิเคชั่นกราฟิก และแม้แต่เซสชันเดสก์ท็อปทั้งหมดที่ไม่มีการแก้ไขส่วนใหญ่ได้ Curtain สามารถใช้ร่วมกับกลไกการแยกที่จัดทำโดยระบบย่อย Jail และ Capsicum นอกจากนี้ยังสามารถจัดระเบียบการแยกแบบซ้อนกันได้ เมื่อแอปพลิเคชันที่เปิดใช้งานจะสืบทอดกฎที่ตั้งไว้สำหรับแอปพลิเคชันหลัก โดยเสริมด้วยข้อจำกัดส่วนบุคคล การดำเนินการเคอร์เนลบางอย่าง (เครื่องมือแก้ไขข้อบกพร่อง POSIX/SysV IPC, PTY) ได้รับการปกป้องเพิ่มเติมโดยกลไกกั้นที่ป้องกันการเข้าถึงอ็อบเจ็กต์เคอร์เนลที่ไม่ได้สร้างขึ้นโดยกระบวนการปัจจุบันหรือกระบวนการหลัก

กระบวนการสามารถกำหนดค่าการแยกของตัวเองได้โดยการเรียก Curtainctl หรือโดยใช้ฟังก์ชัน plegde() และ comparison() ของ libcurtain ซึ่งคล้ายกับที่พบใน OpenBSD หากต้องการติดตามการล็อคในขณะที่แอปพลิเคชันกำลังทำงาน จะมีการจัดเตรียม sysctl 'security.curtain.log_level' การเข้าถึงโปรโตคอล X11 และ Wayland นั้นเปิดใช้งานแยกกันโดยการระบุตัวเลือก "-X"/"-Y" และ "-W" เมื่อใช้งานม่าน แต่การรองรับแอปพลิเคชันกราฟิกยังไม่เสถียรเพียงพอและมีปัญหาหลายประการที่ยังไม่ได้รับการแก้ไข ( ปัญหาส่วนใหญ่ปรากฏขึ้นเมื่อใช้ X11 และการสนับสนุน Wayland นั้นดีขึ้นมาก) ผู้ใช้สามารถเพิ่มข้อจำกัดเพิ่มเติมได้โดยการสร้างไฟล์กฎท้องถิ่น (~/.curtain.conf) ตัวอย่างเช่น หากต้องการอนุญาตให้เขียนจาก Firfox ไปยังไดเร็กทอรี ~/Downloads/ เท่านั้น คุณสามารถเพิ่มส่วน "[firefox]" ด้วยกฎ "~/Downloads/ : rw +"

การใช้งานประกอบด้วยโมดูลเคอร์เนล mac_curtain สำหรับการควบคุมการเข้าถึงที่จำเป็น (MAC, การควบคุมการเข้าถึงที่จำเป็น), ชุดของแพตช์สำหรับเคอร์เนล FreeBSD พร้อมการใช้งานตัวจัดการและตัวกรองที่จำเป็น, ไลบรารี libcurtain สำหรับการใช้ plegde และเปิดเผยฟังก์ชั่นในแอปพลิเคชัน ยูทิลิตี้ Curtain ตัวอย่างไฟล์การกำหนดค่า ชุดทดสอบและแพตช์สำหรับบางโปรแกรมในพื้นที่ผู้ใช้ (เช่น สำหรับการใช้ $TMPDIR เพื่อรวมการทำงานกับไฟล์ชั่วคราว) หากเป็นไปได้ ผู้เขียนตั้งใจที่จะลดจำนวนการเปลี่ยนแปลงที่ต้องใช้แพตช์ในเคอร์เนลและแอปพลิเคชันให้เหลือน้อยที่สุด

ที่มา: opennet.ru

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