เกี่ยวกับ Apple Exclaves
(randomaugustine.medium.com)ปัญหาของเคอร์เนลระบบปฏิบัติการแบบ monolithic
- ระบบปฏิบัติการสมัยใหม่โดยทั่วไปแบ่งออกเป็น 2 โดเมนการป้องกันหลัก:
- โดเมนที่ไม่มีสิทธิพิเศษ (user mode): โปรแกรมไม่สามารถทำงานที่มีสิทธิสูงโดยตรงได้ เช่น การเข้าถึงไฟล์หรือการสื่อสารผ่านเครือข่าย
- โดเมนที่มีสิทธิพิเศษ (kernel mode): เมื่อโปรแกรมร้องขอให้เคอร์เนลดำเนินงานผ่าน system call โค้ดของเคอร์เนลจะทำงานนั้นและส่งผลลัพธ์กลับไปยัง user mode
- ระบบปฏิบัติการส่วนใหญ่ใช้การออกแบบแบบ monolithic kernel:
- เคอร์เนลมีสิทธิ์เข้าถึงฮาร์ดแวร์ หน่วยความจำ และข้อมูลผู้ใช้ทั้งหมดของระบบได้อย่างไม่จำกัด
- หากซอฟต์แวร์ไม่มีข้อบกพร่องและไม่มีความพยายามเจาะระบบก็คงไม่มีปัญหา แต่ในความเป็นจริงย่อมมีทั้งบั๊กและช่องโหว่ด้านความปลอดภัย
- เนื่องจาก monolithic kernel มีขนาดใหญ่ จึงมีโอกาสเกิดช่องโหว่ด้านความปลอดภัยสูง และช่องโหว่เพียงจุดเดียวก็อาจนำไปสู่ความเสียหายของทั้งระบบได้
- การออกแบบแบบ microkernel เพิ่มความปลอดภัยด้วยการนำฟังก์ชันส่วนใหญ่ออกจากเคอร์เนล แล้วให้ประมวลผลในโปรเซสแยกที่ไม่มีสิทธิพิเศษ:
- สามารถเสริมความปลอดภัยได้
- แต่อาจทำให้ประสิทธิภาพลดลงและเพิ่มความซับซ้อนของซอฟต์แวร์แอปพลิเคชัน
- ถึงอย่างนั้น monolithic kernel ก็ยังถูกใช้อย่างแพร่หลายเพราะข้อได้เปรียบด้านประสิทธิภาพ
- เคอร์เนล XNU ของ Apple:
- เป็นเคอร์เนลที่ใช้ร่วมกันใน iOS, macOS, tvOS, visionOS และ watchOS
- แม้จะเป็น microkernel ที่มีพื้นฐานจาก Mach แต่เพราะฟังก์ชันของระบบส่วนใหญ่รันอยู่ภายใต้ขอบเขตสิทธิพิเศษเดียวกัน จึงทำงานไม่ต่างจาก monolithic kernel ในทางปฏิบัติ
- ดังนั้นจึงอาจเผชิญช่องโหว่ด้านความปลอดภัยแบบเดียวกับ monolithic kernel ได้
ความพยายามในการแยกส่วน
- มีความพยายามหลายรูปแบบในการนำเทคโนโลยีการแยกส่วนทั้งฝั่งซอฟต์แวร์และฮาร์ดแวร์มาใช้:
- Microsoft Virtualisation-based Security (VBS) – ใช้ใน Credential Guard ของ Windows
- Intel Software Guard Extension (SGX) และ VT-X2
- ARM TrustZone – ใช้ใน Samsung Knox, Samsung Pay, Android Verified Boot, การป้อน PIN ด้านความปลอดภัยของ Android เป็นต้น
Apple เองก็พยายามขยายการแยกข้อมูลออกจากเคอร์เนลอย่างต่อเนื่อง
-
2013 — Apple Secure Enclave
- เปิดตัวครั้งแรกใน iPhone 5s ปี 2013
- Secure Enclave ทำงานบนคอร์ CPU ที่เสริมความแข็งแกร่งและแยกออกมาต่างหาก โดยรันบน SepOS ซึ่งเป็น OS แบบ microkernel
- เคอร์เนลของ SepOS ใช้ cL4 ซึ่งเป็น embedded microkernel แบบ L4 ที่ Apple ปรับแต่งเอง
- จัดเก็บและปกป้องข้อมูลอ่อนไหว เช่น คีย์เข้ารหัสและข้อมูลชีวมิติ (เช่น Face ID)
- ทำงานแยกจากเคอร์เนล iOS และให้บริการแก่ iOS ผ่านการโต้ตอบที่ปลอดภัยเท่านั้น
- แม้เคอร์เนล iOS จะถูกเจาะ Secure Enclave ก็จะไม่ได้รับผลกระทบ เว้นแต่จะมีการ exploit เพิ่มเติมเกิดขึ้น
- โปรดสังเกตว่า Secure Enclave และ Secure Exclave เป็นคนละแนวคิดกัน
-
2017 — Page Protection Layer (PPL)
- ฟีเจอร์ด้านความปลอดภัยที่เปิดตัวใน ชิป A11 ของ iPhone 8 และ iPhone X
- เป็นฟีเจอร์ที่อาศัยทั้งฮาร์ดแวร์และซอฟต์แวร์ โดยให้สิทธิ์แก้ไข page table เฉพาะกับบางส่วนของเคอร์เนลเท่านั้น
- ส่วนที่เหลือของเคอร์เนลจะถูกจำกัดสิทธิ์ในการแก้ไข page table
- ทำให้ attack surface เล็กลงและความพยายามในการ bypass เกิดขึ้นได้ยากขึ้น
- แม้ PPL จะเพิ่มชั้นการป้องกัน แต่สิทธิ์ส่วนใหญ่ของเคอร์เนลยังคงอยู่ จึงยังมีข้อจำกัดในการเสริมความปลอดภัยแบบสมบูรณ์
-
2021–2023 — Secure Page Table Monitor (SPTM)
- ฟีเจอร์ใหม่ที่เปิดตัวใน ชิป A15 ของ iPhone 13 และ iOS 17
- เข้ามาแทนที่ PPL ปกป้องฟังก์ชันหน่วยความจำเพิ่มเติม และแยกสิ่งเหล่านี้ออกเป็นหลาย subsystem
- เสริมความปลอดภัยของการตรวจสอบ code signing และทำให้รันได้เฉพาะโค้ดที่ Apple ลงนามเท่านั้น
- ในช่วงเวลานี้มีการอ้างถึง exclave แบบอ้อม ๆ ในซอร์สโค้ด XNU
- มีการตั้งข้อสังเกตว่า subsystem ที่ SPTM จัดการอยู่อาจเป็น exclave
-
2024 — Exclaves: การยกเครื่องโมเดลความปลอดภัยครั้งใหญ่ของ XNU
- แนวคิดเรื่อง exclave ปรากฏในซอร์สโค้ด XNU ที่รองรับชิป M4 และ A18
- ในชิปรุ่นก่อนหน้า exclave จะไม่ถูกเปิดใช้งาน
- ทำให้เห็นชัดว่า exclave คือผลลัพธ์ของการออกแบบโมเดลความปลอดภัยของ XNU ใหม่ครั้งใหญ่
-
XNU Exclaves
ข้อสงวนสิทธิ์: โครงสร้างภายในของ exclave ไม่ได้เปิดซอร์สทั้งหมด ดังนั้นบางส่วนอาจเป็นการคาดเดาหรือการตีความ
- exclave คือชุดฟีเจอร์ใหม่ที่ยกระดับโมเดลความปลอดภัยของเคอร์เนล XNU แบบ monolithic เดิมอย่างมาก
- exclave คือ ทรัพยากรที่ถูกแยกออกจาก XNU และยังคงได้รับการปกป้องแม้เคอร์เนลจะถูกเจาะ
- คุณลักษณะของ exclave:
- ถูกกำหนดไว้ล่วงหน้าตอน build OS
- ระบุได้ด้วยชื่อหรือ ID
- ประกอบด้วยหลายประเภท
- ถูกเริ่มต้นในช่วงบูต
- ถูกจัดระเบียบเป็น โดเมนอิสระ
- SPTM ปกป้องหน่วยความจำของ exclave ด้วย page type ใหม่ที่ออกแบบมาสำหรับ exclave โดยเฉพาะ
- ประเภททรัพยากรของ exclave
- shared memory buffer – เข้าถึงได้ทั้งจากเคอร์เนลและ exclave
- สามารถตั้งค่าให้เป็น read-only หรือ read/write จากฝั่ง XNU ได้
- audio buffer และ sensor – เสริมความปลอดภัยของตัวบ่งชี้การเข้าถึงกล้องและไมโครโฟน
- Conclave – จัดกลุ่มทรัพยากรหลายอย่างให้อยู่ในโดเมนความปลอดภัยของตนเอง และมี Conclave Manager สำหรับจัดการ
- service – รันโค้ดใน exclave เมื่อ thread ของ XNU เรียกใช้งาน
- shared memory buffer – เข้าถึงได้ทั้งจากเคอร์เนลและ exclave
-
Secure Kernel — มีพื้นฐานจาก seL4?
- มีการนำเคอร์เนลใหม่ชื่อ Secure Kernel (SK) มาใช้เพื่อให้บริการ exclave ทำงานแยกจาก XNU ได้
- พบสตริงเวอร์ชันของ "cL4" ในไฟล์ image ของ SK
- มีความเป็นไปได้สูงว่า SK จะมีพื้นฐานจาก seL4 ไม่ใช่เคอร์เนล cL4 (ที่มีพื้นฐานจาก L4) เดิมของ Apple
- โครงสร้าง IPC ที่ XNU ใช้สื่อสารกับ SK คล้ายกับของ seL4
- พบแนวคิดที่ seL4 ใช้จำนวนมากในสตริงที่ใช้ใน SK (เช่น capabilities, frames, untyped memory เป็นต้น)
- การที่ Apple เข้าร่วม seL4 Foundation ในเดือนเมษายน 2024 อาจไม่ใช่เรื่องบังเอิญ
- เคอร์เนลของ ชิป C1 (ชิปเบสแบนด์รุ่นใหม่ของ Apple) ก็ดูเหมือนจะมีพื้นฐานจาก L4 เช่นกัน
-
Secure World — ARM TrustZone?
- SepOS ทำงานบนโปรเซสเซอร์แยกต่างหาก ขณะที่ SK ทำงานบน application processor ความเร็วสูง
- สิ่งนี้ต้องการระดับสิทธิพิเศษของโปรเซสเซอร์เพิ่มเติม → อาจถูกทำให้เกิดขึ้นด้วยหนึ่งในวิธีต่อไปนี้:
- รองรับ virtualization extension
- ส่วนขยาย SPTM ของ Apple
- มีความเป็นไปได้มากที่สุดคือใช้เทคโนโลยี ARM TrustZone
- โครงสร้างของ TrustZone
- แบ่งระบบออกเป็นสอง world:
- Secure World – รันโค้ดที่ปลอดภัย
- Insecure World – รันโค้ดทั่วไป (รัน XNU และ iOS)
- พบการอ้างอิงจำนวนมากในซอร์สโค้ด XNU เกี่ยวกับการสลับระหว่าง Secure World และ Insecure World ของ TrustZone
- Apple ใช้โมเดลบริการ exclave แทน Trusted Application model ที่ TrustZone เสนอ
- SK มอบบริการและทรัพยากรของ exclave ในสภาพแวดล้อมที่แยกออกมา → เพิ่มความปลอดภัย
- คาดว่าจะเป็นเรื่องยากมากที่จะหลบหนีจาก Secure World ไปยัง Insecure World เพื่อเจาะ XNU
- แบ่งระบบออกเป็นสอง world:
- RINGGATE
- Apple อาจใช้ SPTM เพื่อจัดการการสลับระหว่าง Secure World ↔ Insecure World
- ในโค้ดมีการอ้างถึงการสลับนี้ว่า "RINGGATE"
บทสรุป
- ความหมายของการนำ exclave มาใช้
- เพื่อรับมือกับการโจมตีต่อเนื่องจากผู้คุกคามระดับสูง Apple จึงนำ exclave มาใช้เพื่อยกระดับความปลอดภัยของระบบปฏิบัติการ
- การแยกทรัพยากรที่อ่อนไหวออกมาคาดว่าจะให้ผลดังนี้:
- ลด attack surface
- ลดผลกระทบจากช่องโหว่ในเคอร์เนลเพียงจุดเดียว
- การป้องกัน monolithic kernel เป็นความท้าทายที่ไม่สิ้นสุด และ exclave คือหนึ่งในแนวทางในการแก้ปัญหานี้
- ยังไม่แน่ชัดว่าในระยะยาวนี่คือทิศทางที่ถูกต้อง หรือเป็นเพียงมาตรการชั่วคราว
- ความหวังส่วนตัว → อยากเห็นการออกแบบใหม่บนพื้นฐานของ CHERI และ ARM Morello ในอนาคต 😊
- แต่ ณ ตอนนี้นี่คือ ความพยายามด้านการป้องกันที่ใหญ่ที่สุดในบรรดาผู้ผลิตอุปกรณ์สำหรับผู้บริโภค
- บทความนี้ไม่ได้ลงรายละเอียดอย่างชัดเจนว่า component ใดถูกย้ายไปอยู่ใน exclave บ้าง
- จาก build image ดูเหมือนว่าองค์ประกอบต่อไปนี้กำลังทำงานอยู่ใน exclave:
- ตัวบ่งชี้ความปลอดภัยของกล้อง/ไมโครโฟน
- ฟังก์ชันบางส่วนของ Apple Neural Engine (ANE)
- device driver บางตัว
- component สำหรับสื่อสารกับ Secure Enclave
- จาก build image ดูเหมือนว่าองค์ประกอบต่อไปนี้กำลังทำงานอยู่ใน exclave:
- มีความเป็นไปได้ว่าในอนาคตจะมี component เพิ่มเติมถูกย้ายไปยัง exclave
- ผลลัพธ์ด้านความปลอดภัยของ exclave ขึ้นอยู่กับ ระดับการปรับให้เหมาะสม ของการย้ายเหล่านี้
- exclave อาจถูกนำไปใช้ในโครงสร้างพื้นฐาน Apple Private Cloud Compute
- สามารถรับประกันความปลอดภัยและความเป็นส่วนตัวในระดับสูงสำหรับ AI บนคลาวด์ได้
1 ความคิดเห็น
ความเห็นบน Hacker News