มีการพัฒนากลไกการแยกที่คล้ายกับ plegde บน FreeBSD

มีการประกาศว่าได้มีการเสนอให้นำกลไกการแยกแอปพลิเคชัน มาใช้กับ FreeBSD ซึ่งคล้ายคลึงกับระบบเรียกใช้งาน foldde และ unveil ที่พัฒนาโดยโครงการ OpenBSD

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

ความแตกต่างระหว่าง `pledge` และ `unveil`ซึ่งพัฒนาขึ้นสำหรับ FreeBSD นั้น สรุปได้ว่าคือการเพิ่มเลเยอร์พิเศษที่ช่วยให้แอปพลิเคชันต่างๆ สามารถแยกออกจากกันได้โดยไม่ต้องเปลี่ยนแปลงโค้ดมากนัก หรืออาจไม่ต้องเปลี่ยนแปลงเลยก็ได้ โปรดจำไว้ว่าใน OpenBSD นั้น `pledge` และ `unlock` มีเป้าหมายเพื่อการบูรณาการอย่างแน่นหนากับสภาพแวดล้อมพื้นฐาน และถูกนำไปใช้โดยการเพิ่มคำอธิบายประกอบพิเศษลงในโค้ดของแต่ละแอปพลิเคชัน

เพื่อทำให้องค์กรของการป้องกันง่ายขึ้น ตัวกรองช่วยให้คุณหลีกเลี่ยงรายละเอียดในระดับของการเรียกระบบแต่ละรายการ และเพื่อจัดการคลาสของการเรียกระบบ (อินพุต/เอาต์พุต การอ่านไฟล์ การเขียนไฟล์ ซ็อกเก็ต ioctl sysctl การเริ่มกระบวนการ ฯลฯ) . ฟังก์ชันการจำกัดการเข้าถึงสามารถเรียกได้ในโค้ดของแอปพลิเคชันเมื่อมีการดำเนินการบางอย่าง เช่น การเข้าถึงซ็อกเก็ตและไฟล์ต่างๆ สามารถปิดได้หลังจากเปิดไฟล์ที่จำเป็นและสร้างการเชื่อมต่อเครือข่าย

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

ยูทิลิตี้ม่านสามารถใช้เพื่อแยกยูทิลิตี้ส่วนใหญ่ กระบวนการของเซิร์ฟเวอร์ แอปพลิเคชันกราฟิก และแม้แต่เซสชันเดสก์ท็อปทั้งหมดที่ยังไม่ได้รับการแก้ไข รองรับการใช้ม่านร่วมกับกลไกการแยกจากระบบย่อย Jail และ Capsicum

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

กระบวนการสามารถกำหนดค่าการแยกตัวของตัวเองได้โดยการเรียกใช้ curtainctlหรือใช้ฟังก์ชัน pledge() และ unveil() ที่จัดเตรียมโดยไลบรารี libcurtain คล้ายกับที่มีอยู่ใน OpenBSD sysctl 'security.curtain.log_level' มีไว้เพื่อติดตามการล็อกขณะที่แอปพลิเคชันกำลังทำงาน

การเข้าถึงโปรโตคอล X11 และ Wayland นั้นเปิดใช้งานแยกกันโดยการระบุตัวเลือก "-X"/"-Y" และ "-W" เมื่อเริ่มต้นม่าน แต่การรองรับแอปพลิเคชันกราฟิกยังไม่เสถียรเพียงพอและมีปัญหามากมายที่ยังไม่ได้แก้ไข ( ปัญหาส่วนใหญ่ปรากฏขึ้นเมื่อใช้ X11 และการรองรับ Wayland นั้นดีกว่ามาก) ผู้ใช้สามารถเพิ่มข้อจำกัดเพิ่มเติมโดยการสร้างไฟล์กฎในเครื่อง (~/.curtain.conf) ตัวอย่างเช่น,

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

สุดท้ายนี้หากคุณสนใจเรียนรู้เพิ่มเติมสามารถดูรายละเอียดได้ที่ลิงก์ต่อไปนี้


เพิ่มเป็นแหล่งข้อมูลที่ต้องการใน Google