1 คะแนน โดย GN⁺ 2025-03-10 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Exclaves ของ Apple เป็นฟีเจอร์แยกกักกันที่พยายามคงทรัพยากรอ่อนไหวบางส่วนไว้ในพื้นที่แยกต่างหาก แม้เคอร์เนล XNU จะถูกเจาะก็ตาม และการเปิดซอร์ส XNU สำหรับ M4·A18 ทำให้โครงสร้างบางส่วนถูกเปิดเผย
  • แม้ XNU จะมีพื้นฐานจาก Mach แต่ฟังก์ชันของระบบจริง ๆ ถูกรวมไว้ในขอบเขตสิทธิ์เดียวกัน จึงทำงานคล้าย monolithic kernel และ Exclaves อยู่บนแนวทางการเพิ่มชั้นการป้องกันที่ต่อเนื่องมาจาก Secure Enclave, PPL และ SPTM
  • Exclaves ประกอบด้วยโดเมนและทรัพยากรที่ถูกกำหนดตอนบูต โดยปกป้อง shared memory buffer, audio buffer, เซนเซอร์, Conclave, service ฯลฯ จาก XNU ด้วย page type ใหม่ของ SPTM
  • Secure Kernel(SK) ทำงานบน application processor เดียวกับ XNU และจากเบาะแสในซอร์ส มีความเป็นไปได้ว่าจะใช้สายตระกูล seL4 และ ARM TrustZone secure world แต่รายละเอียดภายในส่วนใหญ่ยังไม่ถูกเปิดเผย
  • ผลด้านความปลอดภัยจริงขึ้นอยู่กับว่าคอมโพเนนต์ใดถูกย้ายไปอยู่ใน Exclaves โดย build image ปัจจุบันบ่งชี้ถึงการใช้งานกับตัวแสดงสถานะความปลอดภัยของกล้อง·ไมโครโฟน, บางส่วนของ Apple Neural Engine, ไดรเวอร์บางตัว และคอมโพเนนต์สื่อสารกับ Secure Enclave

Monolithic kernel และแนวทางเพิ่มการแยกกักกันของ Apple

  • ระบบปฏิบัติการสมัยใหม่โดยทั่วไปทำงานด้วยโดเมนการป้องกัน 2 แบบคือ user mode และ kernel mode
    • แอปพลิเคชันไม่สามารถทำงานที่ต้องใช้สิทธิ์สูง เช่น การเข้าถึงไฟล์หรือการสื่อสารเครือข่าย ได้โดยตรง แต่ต้องร้องขอผ่าน system call ไปยังเคอร์เนล
    • เคอร์เนลตรวจสอบสิทธิ์การเข้าถึงแล้วส่งผลลัพธ์ เช่น handle ที่แทนไฟล์ที่เปิดอยู่ กลับไปยัง user mode
  • ระบบปฏิบัติการส่วนใหญ่ใช้โครงสร้าง monolithic kernel โดยเคอร์เนลมีสิทธิ์เข้าถึงฮาร์ดแวร์ หน่วยความจำ และข้อมูลผู้ใช้ทั้งหมดได้อย่างไม่จำกัด
    • ยิ่งเคอร์เนลมีขนาดใหญ่ โอกาสเกิดช่องโหว่ก็ยิ่งมากขึ้น
    • การใช้ประโยชน์จากช่องโหว่ของเคอร์เนลอาจนำไปสู่การเจาะระบบทั้งหมด
  • microkernel สามารถลดฟังก์ชันภายในเคอร์เนล และย้ายงานส่วนใหญ่ไปเป็น process แยกที่ไม่มีสิทธิ์พิเศษ เพื่อปรับปรุงการแยกด้านความปลอดภัยได้
    • ปัญหาด้านประสิทธิภาพและความซับซ้อนที่เพิ่มขึ้นของซอฟต์แวร์แอปพลิเคชันยังคงเป็นข้อเสีย
  • XNU ที่ iOS, macOS, tvOS, visionOS, watchOS ใช้ร่วมกัน มีพื้นฐานจาก Mach microkernel แต่ในเชิง implementation ฟังก์ชันระบบหลายอย่างอยู่ในขอบเขตสิทธิ์เดียวกัน จึงทำงานแทบจะเหมือน monolithic kernel

การแยกกักกันด้านความปลอดภัยของ Apple ก่อน Exclaves

  • ในปี 2013 iPhone 5s นำ Secure Enclave มาใช้
    • OS ที่มีพื้นฐานจาก microkernel ชื่อ SepOS ทำงานบนคอร์ CPU เสริมความแข็งแกร่งเฉพาะทาง
    • เคอร์เนลของ SepOS คือ cL4 ซึ่งเป็นเวอร์ชัน custom ของ L4-embedded โดย Apple
    • ใช้ปกป้องกุญแจเข้ารหัสและข้อมูลชีวมิติอย่าง Face ID
    • แม้เคอร์เนล iOS จะถูกเจาะ โดยทั่วไปก็จะไม่ได้รับผลกระทบ หากไม่มี exploit เพิ่มเติมที่เล็ง Secure Enclave เอง
    • Secure Enclave และ Secure Exclaves เป็นคนละเป้าหมายกัน
  • ในปี 2017 iPhone 8·iPhone X ที่ใช้ A11 นำ Page Protection Layer(PPL) มาใช้
    • ให้สิทธิ์แก้ไข memory page table เฉพาะบางส่วนของเคอร์เนล และไม่ให้ส่วนที่เหลือของเคอร์เนลแก้ไขได้โดยตรง
    • attack surface มีขนาดเล็กจึงถูก bypass ไม่บ่อย แต่ส่วนที่เหลือของเคอร์เนลยังคงมีสิทธิ์จำนวนมากที่จำเป็นต่อการละเมิดข้อมูล
  • ในช่วงปี 2021~2023 A15 และ iOS 17 นำ Secure Page Table Monitor(SPTM) มาแทนและปรับปรุง PPL
    • ปกป้องฟีเจอร์หน่วยความจำเพิ่มเติม และแยกกักกันในระดับคอมโพเนนต์เคอร์เนลขนาดเล็ก
    • การตรวจสอบ code signing ที่ตรวจว่า Apple เซ็นหรือไม่ก็ถูกแยกออกมา
    • ในช่วงนี้ ซอร์ส XNU ปรากฏการอ้างอิงทางอ้อมถึง exclaves และในตอนนั้นคาดว่าเป็น subsystem ที่ SPTM จัดการ

การปรากฏของ XNU Exclaves ในปี 2024

  • การเปิดซอร์ส XNU ที่รองรับระบบบน M4·A18 ทำให้โครงสร้างบางส่วนของ Exclaves ถูกเปิดเผย
    • เป้าหมายคือระบบอย่าง iPhone 16
    • Exclaves ไม่ถูกเปิดใช้งานบนโปรเซสเซอร์รุ่นก่อนหน้า
  • Exclaves หมายถึงทรัพยากรที่ถูกแยกออกจาก XNU และถูกออกแบบเป็นพื้นที่ที่ได้รับการปกป้องแม้เคอร์เนลจะถูกเจาะ
    • ทรัพยากรถูกกำหนดล่วงหน้าตอน build OS
    • ระบุด้วยชื่อหรือ ID
    • มี type และถูก initialize ตอนบูต
    • จัดเป็นโดเมนเฉพาะ
  • SPTM ปกป้อง Exclave memory จาก XNU ด้วย page type เฉพาะสำหรับ Exclave
  • resource type ที่ตรวจพบแสดงให้เห็นว่าเส้นแบ่งระหว่าง XNU กับ Exclave เกิดขึ้นที่ใด
    • shared memory buffer ที่ XNU และ Exclave สามารถเข้าถึงร่วมกันได้
      • จากมุมมอง XNU สามารถตั้งค่าเป็น read-only หรือ read-write ได้
    • audio buffer และเซนเซอร์ที่ใช้กับความปลอดภัยของฟีเจอร์อย่างตัวแสดงการเข้าถึงกล้อง·ไมโครโฟน
    • Conclave และ Conclave Manager ที่รวมทรัพยากรหลายรายการไว้ในโดเมนความปลอดภัยของตัวเอง
    • service ที่สามารถรันโค้ดในพื้นที่ Exclave เมื่อ XNU thread เรียกใช้

Secure Kernel และ secure world

  • เพื่อให้ Exclave service ทำงานโดยแยกจาก XNU Apple ได้นำ Secure Kernel(SK) มาใช้
  • ไฟล์ image ของ SK มี string เวอร์ชัน “cL4” อยู่
    • โครงสร้าง IPC ดูใกล้เคียงกับ seL4 มากกว่า L4-embedded ของ SepOS cL4 เดิม
    • string ใน SK ปรากฏคำศัพท์สาย seL4 บ่อย เช่น capability, frame, untyped memory, minting
    • Apple เปิดเผยว่าเข้าร่วม seL4 Foundation ในเดือนเมษายน 2024
  • ต่างจาก SepOS ที่ทำงานบนโปรเซสเซอร์เฉพาะ SK ทำงานบน application processor ความเร็วสูงเดียวกับ XNU/iOS
  • โครงสร้างนี้ต้องมี privilege level ของโปรเซสเซอร์เพิ่มเติม และฐานที่เป็นไปได้ซึ่งถูกกล่าวถึง ได้แก่ virtualization extension, ฟีเจอร์เพิ่มเติมของ SPTM ของ Apple, และ ARM TrustZone
    • ซอร์ส XNU มีการอ้างอิงเกี่ยวกับการสลับไปยัง secure world ของ TrustZone
    • โครงสร้างถูกตีความว่า XNU และ iOS ทำงานใน insecure world ส่วน SK ทำงานใน secure world
  • SK จัดเตรียมสภาพแวดล้อมปฏิบัติการที่จำกัดให้กับ Exclave, resource และ service
    • แตกต่างจาก design pattern ของ Trusted Applications ที่ ARM เสนอ
    • เนื่องจาก attack surface ของ Exclave service และ Secure Kernel มีขอบเขตจำกัด การหลุดออกจาก secure world เพื่อเจาะ XNU จึงอาจยากกว่าการโจมตี XNU โดยตรงจาก insecure world มาก
  • ในซอร์ส XNU การสลับไปยัง secure world ถูกเรียกว่า RINGGATE
    • ส่วนที่ว่า SPTM อาจจัดการการสลับนี้ยังเป็นเพียงการคาดเดา และพื้นที่ที่เกี่ยวข้องไม่ใช่โอเพนซอร์ส จึงต้องวิเคราะห์ไบนารี

โดเมน ทรัพยากร และ Conclave

  • ระหว่างบูต XNU initialize โครงสร้างตารางเคอร์เนล 2 ชั้นเพื่อเก็บข้อมูล resource ของ Exclave ที่พบ
    • root_table ระบุโดเมนด้วยชื่อ
    • แต่ละโดเมนอ้างอิงตารางชั้นที่ 2 ที่เก็บ resource ของโดเมนนั้น
  • โครงสร้างโดเมนที่ตรวจพบมีดังนี้
    • com.apple.kernel
      • รวมถึง Conclave launcher, debug service, ExclaveIndicatorController สำหรับไฟแสดงสถานะความปลอดภัย, log service, FrameMint ที่ใช้บูต ExclaveKit เป็นต้น
      • รวมถึง shared memory buffer com.apple.storage.backend ที่ Exclave service ใช้ทำ file I/O ในพื้นที่ XNU ผ่าน upcall
      • รวมถึง resource ของ Conclave Manager ที่มีหนึ่งรายการต่อหนึ่ง Conclave
    • com.apple.darwin
      • ไม่พบกรณีใช้งานในคอมโพเนนต์โอเพนซอร์ส
    • com.apple.conclave.name
      • มีหนึ่งโดเมนต่อหนึ่ง Conclave
      • อาจรวม service, audio buffer, shared memory buffer ฯลฯ
    • com.apple.driver.*name*
      • ถูกกล่าวถึงว่ามีอยู่เป็นโดเมนตาม device driver จากคอมเมนต์ แต่ยังไม่พบยืนยันจริงในโค้ดโอเพนซอร์ส
  • Conclave เป็นทั้ง resource type ที่สามารถมีทรัพยากรหลายรายการ และเป็นหน่วยความปลอดภัยที่ให้ service และ resource มีการเข้าถึงร่วมกัน
    • Mach task ถูกจำกัดว่าเรียก Conclave ใดได้บ้าง
    • แต่ละ Conclave มี Conclave Manager อยู่ใน kernel domain
    • Conclave มี lifecycle เช่น attach, launch, stop, detach
    • ยังมีสถานะเปลี่ยนผ่าน เช่น launching, stopping

การสร้าง การเชื่อมต่อ และการรัน Conclave

  • posix_spawn() ของ XNU สามารถเรียก task_add_conclave() เพื่อเชื่อม task กับ resource ของ Conclave Manager ได้
    • ความสัมพันธ์เป็นแบบ 1:1
    • task หนึ่งเชื่อมได้กับ Conclave Manager เดียวเท่านั้น และในทางกลับกันก็เช่นกัน
  • ผู้ที่ spawn Conclave ได้คือ launchd หรือ task ที่มี entitlement com.apple.private.exclaves.conclave-spawn
    • entitlement com.apple.private.exclaves.conclave-host ถูกตีความว่าใกล้เคียงกับสิทธิ์ในการ attach ตัวเอง มากกว่าการ spawn task ใหม่
  • เคอร์เนลค้นหา resource ของ Conclave Manager ที่เชื่อมกับ Conclave เป้าหมายในโดเมน com.apple.kernel
    • จากนั้นบันทึก endpoint ของ Tightbeam ที่ชี้ไปยัง Conclave Manager endpoint ไว้ใน struct resource ของ Conclave
    • Tightbeam ดูเหมือนเป็น RPC framework สำหรับการสื่อสารระหว่างคอมโพเนนต์ Exclave
  • การรัน Conclave ต้องทำจาก task ของ Conclave Manager ที่เชื่อมอยู่
    • ความพยายาม launch จะรอจนกว่า Exclaves จะบูตสมบูรณ์ถึงสถานะ EXCLAVES_BS_BOOTED_EXCLAVEKIT
    • Mach trap ใหม่จะเข้ามาที่ฟังก์ชัน _exclaves_ctl_trap() และ EXCLAVES_CTL_OP_LAUNCH_CONCLAVE ใช้สำหรับรัน Conclave
    • ในสภาพแวดล้อม production Conclave host ที่ launch แล้วอาจกลายเป็นสถานะ tainted และหลังจากนั้น exit() อาจทำให้เกิด kernel panic

Mach trap ใหม่สำหรับ Exclaves

  • _exclaves_ctl_trap() เป็น Mach trap ใหม่ที่จัดการฟีเจอร์ Exclave
    • ทำงานหลายแบบตามพารามิเตอร์ operation
    • โดยทั่วไปจะตรวจสอบ entitlement ที่จำเป็นสำหรับ operation ที่ถูกเรียก
  • EXCLAVES_CTL_OP_BOOT ถูกเรียกสองครั้งระหว่างบูตระบบ
    • เริ่ม Exclaves boot stage 2
    • บูต ExclaveKit
    • ผู้เรียกต้องเป็น launchd หรือมี entitlement com.apple.private.exclaves.boot
  • operation สำคัญอื่น ๆ อย่างน้อยต้องให้ task ปัจจุบันมี entitlement com.apple.private.exclaves.kernel-domain หรือเป็น task ของ Conclave Manager ที่เกี่ยวข้อง
    • EXCLAVES_CTL_OP_LOOKUP_SERVICES: ค้นหา service ใน Exclave domain ของ task ปัจจุบัน และหากล้มเหลวจะตรวจโดเมน Darwin และ kernel ตามสิทธิ์
    • EXCLAVES_CTL_OP_ENDPOINT_CALL: เรียก endpoint ของ Exclave service ในโดเมนของ task ปัจจุบัน ทำให้ thread ปัจจุบันสลับไปยัง secure world และรันโค้ดเฉพาะ
    • การสร้าง named buffer และ copyin/copyout
    • การสร้าง audio buffer และ copyout
    • การสร้าง sensor, start, stop, status
    • notification resource lookup

Downcall และ Upcall

  • Downcall คือการเรียก endpoint ของ Exclave service ที่อยู่ใน secure world และเป็นจุดที่การรันโค้ด secure world เริ่มต้น
  • Downcall สลับ thread ปัจจุบันไปยัง secure world และเริ่มรันที่ entry point ของ secure code
    • ไม่ใช่วิธีส่งงานให้ thread อื่น
    • task ที่เรียกต้องมี kernel domain entitlement หรือเป็น task ของ Conclave Manager ที่เชื่อมกับ Conclave ของ service นั้น
    • Conclave มี service ที่เรียกได้สูงสุด 128 รายการ
  • ดูเหมือนว่า XNU schedule thread เข้าสู่ Secure Kernel ผ่าน sk_enter()
    • มีความเป็นไปได้ว่า SK ไม่มี thread อิสระของตัวเอง และ XNU จัดการ thread scheduling ทั้งหมดของ secure world
    • thread ที่กำลังรันใน secure world สามารถทำงาน scheduler ทั่วไป เช่น yield, wait, suspend, interrupt ได้
    • ในกรณีนี้ thread จะออกจาก secure world กลับสู่ context ของเคอร์เนล XNU แล้วภายหลังถูก schedule กลับเข้า secure world อีกครั้งโดยโค้ด scheduling ของ Exclave
  • โครงสร้าง IPC ของ Downcall ถูกตั้งเป็น request·response buffer ก่อนเข้าสู่ secure world
    • ระหว่างเตรียมโครงสร้าง IPC request สุดท้ายและเรียก sk_enter() interrupt และ preemption จะถูกปิด
    • เพราะโครงสร้างนี้มีเพียงหนึ่งชุดต่อ CPU core
    • response ของ Downcall อาจกลับมาที่ per-core response buffer ของ CPU อื่นได้ เนื่องจากการหยุดชั่วคราว, upcall, yield, rescheduling
  • Upcall คือวิธีที่ thread ซึ่งกำลังรันใน secure world เรียก Exclaves upcall handler ผ่าน Tightbeam เมื่อจำเป็นต้องให้ XNU ช่วย
    • จำกัดเฉพาะฟังก์ชัน XNU บางรายการที่อนุญาต
    • thread ที่กำลัง upcall ไม่สามารถกลับไป user mode ได้
    • ไม่อนุญาตให้ downcall กลับเข้าสู่ secure world ซ้ำเพื่อ re-enter ด้วย
    • thread ต้องกลับไปยัง context ของ secure world ณ จุดที่ทำ upcall
  • หมวด upcall ที่พบในซอร์ส ได้แก่ หน่วยความจำ, file storage, DriverKit, DriverKit Apple Neural Engine, การควบคุม Conclave

XNUProxy และขั้นตอนการบูต

  • มีการอ้างอิงถึง XNUProxy จำนวนมาก แต่ตำแหน่งและบทบาทที่แน่นอนยังไม่ยืนยัน
    • อาจเป็นโดเมน Exclave อิสระ
    • อาจเป็น service หรือชุด service ในโดเมน com.apple.kernel ที่จัดการ downcall บางรายการ
    • อาจเป็น subsystem ของ SPTM ที่ทำ downcall ไปยัง secure world
  • คอมเมนต์ใน Exclaves_L4.h ระบุว่า XNU Proxy ทำให้ Exclave หลายตัว reachable ได้
    • user app template
    • audio driver
    • ExclaveDriverKit
    • SecureRTBuddy สำหรับ Always On Processor และ Display Coprocessor
    • Conclave control, Conclave debug เป็นต้น
  • การบูต Exclaves ต้องอาศัยการประสานงานระหว่าง insecure world และ secure world และเมื่อเกิดปัญหามักนำไปสู่ panic()
  • การบูตแบ่งเป็นสามขั้น
    • Stage 1 ไม่ปรากฏในโอเพนซอร์ส และอาจเป็นกระบวนการ secure boot ที่โหลด SK ลงหน่วยความจำ ตรวจสอบ code signing แล้วทำให้รันได้
    • Stage 2 ทำการ initialize upcall server, รวบรวมข้อมูลบูตของ secure kernel, initialize Exclave scheduler, initialize XrtHostedXNU kext, initialize multicore, initialize XNU Proxy, ค้นหา static Exclave resource, สร้าง Conclave Manager endpoint เป็นต้น
    • Stage 3 ค้นหา service com.apple.service.FrameMint แล้วทำการเรียกที่เกี่ยวข้องกับ framemint_framemint__init(), framemint_framemint_populate() จากนั้นเข้าสู่สถานะ EXCLAVES_BS_BOOTED_EXCLAVEKIT

SPTM memory type และข้อจำกัดที่เหลือ

  • SPTM กำหนด type ให้ memory page เพื่อควบคุมการเข้าถึงตาม subsystem
    • type เดิมมี XNU_USER_EXEC, XNU_USER_DEBUG, XNU_USER_JIT, XNU_ROZONE, XNU_KERNEL_RESTRICTED, type ที่เกี่ยวกับ TXM·DART เป็นต้น
  • Exclaves เพิ่ม type ใหม่ที่เกี่ยวกับ SK
    • SK_DEFAULT: เฉพาะ SK, XNU เข้าถึงไม่ได้
    • SK_IO: เฉพาะ SK, XNU เข้าถึงไม่ได้
    • SK_SHARED_RO: SK และ XNU ใช้ร่วมกัน แต่ XNU อ่านได้อย่างเดียว
    • SK_SHARED_RW: SK และ XNU ใช้ร่วมกัน และ XNU อ่าน·เขียนได้
  • Exclaves อาจมองได้ว่าเป็นการลงทุนครั้งใหญ่เพื่อเพิ่ม defence in depth ให้ระบบปฏิบัติการของ Apple
    • ลด attack surface ที่เป็นไปได้ด้วยการแยกทรัพยากรอ่อนไหว
    • เป็นทิศทางที่ลดผลกระทบจากการเจาะเคอร์เนลเพียงจุดเดียว
  • ยังไม่ได้วิเคราะห์โดยตรงว่าคอมโพเนนต์ใดถูกย้ายจากเคอร์เนลไปยัง Exclaves จริง ๆ
    • build image บ่งชี้ถึงการใช้งานกับตัวแสดงสถานะกล้อง·ไมโครโฟนด้านความปลอดภัย, ฟังก์ชันบางส่วนของ Apple Neural Engine, device driver บางตัว, คอมโพเนนต์ที่สื่อสารกับ Secure Enclave
    • ในอนาคตอาจมีคอมโพเนนต์มากขึ้นย้ายไปยัง Exclaves
    • พื้นที่ XNU นอก Exclaves ยังคงเป็นเป้าหมายการโจมตี
  • การวิเคราะห์อิงจาก Apple Open Source XNU build 11215
    • ตำแหน่งที่แน่นอนของ ExclaveKit, ExclaveDriverKit, XNUProxy, วิธีสลับไปยัง secure world ของ XNU, Secure Kernel, secure world userspace ยังคงเป็นพื้นที่ที่ต้องวิเคราะห์เพิ่มเติม

1 ความคิดเห็น

 
GN⁺ 2025-03-10
ความคิดเห็นใน Hacker News
  • SoC ในโทรศัพท์และแล็ปท็อปรุ่นล่าสุดของ Apple มี การรองรับฮาร์ดแวร์ nested virtualization รวมอยู่ด้วย และรวมถึง M4 iPad Pro ที่ใช้ exclave กับ LED ของกล้องด้วย
    หวังว่าคู่มือ Apple Platform Security ฉบับปรับปรุงครั้งถัดไปจะกล่าวถึง SK exclave และมาตรการบรรเทาผลกระทบของเบสแบนด์สำหรับการตรวจจับเรดาร์ Wi‑Fi: https://help.apple.com/pdf/security/en_US/apple-platform-sec...
    เกี่ยวกับฟังก์ชันเพิ่มเติมของ SPTM ของ Apple ก็มีบทความ reverse engineering ของ SPTM ด้วย: https://www.df-f.com/blog/sptm3
    XNU กำลังถูกรีแฟกเตอร์ให้เป็นโครงสร้างที่ได้รับแรงบันดาลใจจาก microkernel โดยมีทิศทางที่จะลดฐานโค้ดและย้ายงานที่อ่อนไหวด้านความปลอดภัยออกไป การแยกพื้นที่หน่วยความจำได้รับการช่วยเหลือโดย Secure Page Table Monitor (SPTM) ส่วนงานอย่างการลงนามโค้ด การตรวจสอบสิทธิ์ Developer Mode และ Restricted Execution Mode นั้น Trusted eXecution Monitor (TXM) เป็นผู้รับผิดชอบ
    CVE ที่เกี่ยวข้องกับ TrustZone มีมากกว่า 150 รายการ: https://www.cve.org/CVERecord/SearchResults?query=trustzone
    Google เองก็เคยนำ pKVM ซึ่งใช้ฮาร์ดแวร์ nested virtualization มาใช้ใน Pixel เมื่อหลายปีก่อน และยังส่งโค้ดเข้า Linux mainline ที่ลดสิทธิ์ของ TrustZone แบบร่วมมือกันเมื่อเทียบกับ pKVM L0 ด้วย อย่างไรก็ดี นอกจาก VM “Linux Terminal” ของ Debian แล้ว ยังไม่ได้ประกาศฟีเจอร์ป้องกันที่ใช้ pKVM/AVF

    • CVE ของ TrustZone ส่วนใหญ่เกี่ยวข้องกับ ซอฟต์แวร์ที่มีช่องโหว่ ซึ่งผู้ผลิตนำไปใส่ไว้ในสภาพแวดล้อมที่ได้รับการปกป้องด้วย TrustZone ซอฟต์แวร์พวกนั้นจำนวนมากก็คุณภาพแย่ และมีรายงานช่องโหว่ของตัวฮาร์ดแวร์เองน้อยมาก
    • ผู้เขียนได้โพสต์บทความต่อเนื่องและไดอะแกรมที่แก้ไขแล้ว: https://randomaugustine.medium.com/more-speculation-on-excla...
      ตอนแรกคาดเดาว่าใช้ TrustZone แต่ exclave ดูเหมือนอาจใช้ระดับสิทธิ์ของ SPTM เดิมและ GXF (Guarded Execution) ก็ได้ หากเป็นเช่นนั้น นอกจากข้อกำหนดเรื่อง RAM และความพยายามในการพัฒนาแล้ว อาจไม่มีเหตุผลพื้นฐานที่ทำให้รองรับบน iPhone 13 ขึ้นไปไม่ได้ แน่นอนว่าสำหรับ Apple แล้ว นี่ก็ยังเป็นงานมหาศาลอย่างไม่ต้องสงสัย
  • ดูเหมือนว่า Steve จะเชื่ออย่างจริงใจว่า “แล็ปท็อปคือไดอารีส่วนตัวของคนคนหนึ่ง” และ Apple มีหน้าที่ต้องปกป้องมัน
    ผมคิดว่า Tim ก็คงไม่ได้เป็น CEO ถ้าเขาไม่มีความเชื่อแบบเดียวกับ Steve ฟังดูแปลก แต่ผมคิดถึง Steve จริง ๆ
    https://www.youtube.com/watch?v=Ij-jlF98SzA

    • ในฐานะคนที่ทำอุปกรณ์อุตสาหกรรมและวิทยาศาสตร์ อุปกรณ์ที่มุ่งผู้บริโภคของ Apple นั้นไร้ประโยชน์โดยสิ้นเชิง การ ล็อก อุปกรณ์คอมพิวติ้งที่มีความสามารถเพียงพอแบบนี้ดูเป็นการสิ้นเปลือง
      ผมก็ไม่ชอบวิธีที่ Apple ควบคุมตลาดอุปกรณ์และซอฟต์แวร์แม้หลังจากเจ้าของอุปกรณ์เปลี่ยนมือแล้ว ผมหลีกเลี่ยง ecosystem แบบนี้อย่างจริงจัง และไม่เข้าใจว่าทำไม “แฮ็กเกอร์” ที่เรียกกันจำนวนมากถึงหลงใหลระบบที่เชื่อมฝากระโปรงปิดตายไว้
    • Jobs เป็นคนที่ก่อให้เกิดความเห็นแตกแยก และมักจะหงุดหงิดใส่คนอื่นอยู่บ่อย ๆ จนบางทีก็สงสัยว่าทำไมเราต้องคิดถึงมหาเศรษฐีสายเทคโนโลยีตั้งแต่แรกด้วย แต่ถึงอย่างนั้น ผมก็รู้สึกเป็นหนี้บุญคุณ Jobs และคนของ Apple ที่มีส่วนสร้างผลิตภัณฑ์ที่ผมชอบ เช่น Mac, iPod, iPad
      หลายอย่างที่ Jobs เคยพูดยังสัมผัสใจอยู่จนถึงตอนนี้ เมื่อเร็ว ๆ นี้ Apple ออก screen saver “classic Mac” ซึ่งแสดงให้เห็นว่า GUI ของ Mac ดั้งเดิมถูกออกแบบอย่างประณีตแค่ไหน คงไม่มีใครคิดถึงยุคที่บั๊กของแอปทำให้ระบบปฏิบัติการล่ม แต่ผมก็อยากให้ Apple ยังคง หมกมุ่นกับรายละเอียด ได้เท่าตอนนั้น
    • เมื่อเห็นความรู้สึกจริงใจที่ผู้คนมีต่อ Jobs ผมก็สงสัยว่าเวลาผู้คนใช้และสัมผัสประสบการณ์กับ LLM จะมีกลไกบางอย่างที่คล้ายกันทำงานอยู่หรือไม่
      พูดให้ตรงขึ้นหน่อย เหมือนว่ามันมีองค์ประกอบเชิงลึกลับหรือศาสนาอยู่ด้วย รู้สึกราวกับมีความโหยหาชายผู้ใจดีประดุจเทพ ที่จะมอบปาฏิหาริย์ คำทำนาย ผลิตภัณฑ์และพิธีกรรมอันงดงาม รวมถึงอนาคตที่ลื่นไหล มั่งคั่ง และเป็นนิรันดร์ให้ เป็นความรู้สึกเหมือน “รูโหว่” ทางจิตวิญญาณบางอย่างถูกเติมเต็ม
      ไม่ได้ตั้งใจจะดูแคลนคนที่รู้สึกชอบ Jobs หรือ LLM แค่แบ่งปันสิ่งที่สังเกตเห็นเท่านั้น
    • ผมเข้าใจว่าบทความเรื่อง exclave ทำให้นึกถึง Steve แต่ยังไม่ค่อยเข้าใจว่าอย่างหนึ่งเชื่อมไปสู่อีกอย่างได้อย่างไร อยากให้ช่วยอธิบายได้ไหม
  • เธรดที่เกี่ยวข้อง: “Apple rearranged its XNU kernel with exclaves” https://news.ycombinator.com/item?id=43314171

    • จากสรุปของบทความนั้น exclave หมายถึง ทรัพยากรเฉพาะที่ถูกแยกออกจาก XNU ซึ่งเป็นเคอร์เนลหลัก และอธิบายว่าแม้เคอร์เนลจะถูกเจาะ ก็ยังเข้าถึงไม่ได้
      อีกทั้งการที่รีลีสย่อยระหว่างทางของ macOS ใส่ฟีเจอร์เพื่อเตรียมสำหรับเวอร์ชันเมเจอร์ถัดไปก็ไม่ใช่เรื่องแปลก โดยระบุว่า exclave อาจเป็นฟีเจอร์ที่พื้นฐานและสำคัญที่สุดที่ถูกเพิ่มเข้ามาใน Sonoma 14.4 และ iOS 17.4, iPadOS 17.4, watchOS 10.4
      https://eclecticlight.co/2024/08/20/sonomas-unfinished-busin...
  • การใช้ secure exclave เพื่อควบคุม LED กล้องจริงนั้นค่อนข้างน่าประหลาดใจ และดูเหมือนเป็นการออกแบบที่ ซับซ้อนเกินจำเป็น สำหรับงานง่าย ๆ
    แค่ใส่ลอจิกฮาร์ดแวร์เฉพาะขนาดเล็กมากไว้ในโมดูลกล้องก็น่าจะเพียงพอแล้ว เช่น gate สัญญาณดิจิทัล I/O หรือไฟเลี้ยงกล้อง และใส่ pulse stretcher ให้ LED ติดอย่างน้อยสองสามวินาทีทุกครั้ง เพื่อป้องกันการโจมตีที่เปิดปิดลอจิกกล้องอย่างรวดเร็ว
    สำหรับไมโครโฟนก็ควรมีวงจรคล้ายกันและ LED จริงอีกสีหนึ่งแยกต่างหาก จุดที่แสดงด้วยซอฟต์แวร์บนหน้าจออย่างเดียวไม่เพียงพอ

    • ซับซ้อนกว่าที่คิด “กล้อง” คือชุดของชิ้นส่วนหลายอย่าง เราอาจอยากใช้ไฟเลี้ยงของเซ็นเซอร์ CMOS เป็นเกณฑ์ แต่ก็มีหลายระดับพลังงาน เช่น standby, sleep, idle ดังนั้นวงจรฮาร์ดแวร์จึงมีแนวโน้มว่าต้องรู้ทั้งแรงดันและกระแสด้วย หรือไม่ก็อาจต้องขึ้นไปในระดับที่สูงกว่าแล้ว parse ข้อความอย่าง I2C เพื่ออ่านการเปลี่ยนโหมดพลังงาน
      ส่วนขับ LED ก็ต้องรู้ข้อมูลความสว่างหน้าจอหรือเซ็นเซอร์วัดแสงรอบข้างด้วย มันต้องสว่างพอให้มองเห็นได้แม้อยู่กลางแดดตรง ๆ แต่ความสว่างระดับนั้นในสภาพแวดล้อมมืดอาจน่ารำคาญและอาจรบกวนการใช้งานกล้องตามปกติได้
      ถ้าเชื่อว่า SK ปลอดภัย การใช้มันก็น่าจะเรียบง่ายกว่าและทำได้ดีกว่า แต่ถ้ามองว่า SK ไม่ปลอดภัย สมมติฐานทั้งหมดก็พังอยู่ดี
    • ไม่ใช่การออกแบบเกินจำเป็น มันจำเป็นเพราะงานวิจัยแบบนี้และผลลัพธ์จากนักวิจัยคนอื่น ๆ อย่าง Charlie Miller
      โดยทั่วไป Apple ไม่ได้ตั้งใจทำให้ซับซ้อนโดยไม่มีเหตุผลอันสมควร
      https://news.ycombinator.com/item?id=42260379
    • สงสัยเหมือนกันว่านี่เป็นการออกแบบเกินจำเป็น หรือเป็นวิธีแก้ปัญหาบางอย่างที่พบจากการส่งมอบโทรศัพท์จำนวนมหาศาลกันแน่ ผมไม่เคยคิดว่ากล้องเป็นเวกเตอร์ด้านความปลอดภัย แต่ Apple อาจมองแบบนั้นก็ได้
    • บริบทที่เกี่ยวข้องมีรายละเอียดมากกว่านี้ที่นี่: https://news.ycombinator.com/item?id=42260379
    • ดูเหมือนจะเกี่ยวข้องไม่ใช่แค่ LED กล้องเท่านั้น แต่รวมถึง ตัวบ่งชี้บนหน้าจอ อย่างจุดสีส้ม สีเขียว และสีน้ำเงินที่ปรากฏบนแถบเมนูเมื่อแอปเข้าถึงไมโครโฟน กล้อง หรือการบันทึกหน้าจอด้วย
  • สงสัยว่าผู้เขียนบทความนี้เป็นใคร เขียนได้ประณีตและดีมาก และในฐานะคนที่ตามเรื่อง exclave อยู่ ก็ถือว่าสรุปได้ดี

  • สงสัยว่าสิ่งนี้เทียบกับ Virtualization Based Security ของ Linux อย่างไร
    ตามหน้าที่มีวิดีโอ ฟีเจอร์ความปลอดภัยนี้สามารถเสริมความแข็งแกร่งให้เคอร์เนล และรับประกันว่าแม้เคอร์เนลจะถูกเจาะ ทรัพยากรสำคัญของเคอร์เนลก็จะไม่ถูกแก้ไขดัดแปลง VBS ใช้ hardware virtualization และ Hyper‑V ซึ่งเป็น hypervisor เพื่อสร้างสภาพแวดล้อมเสมือนที่แยกออกมาและทำงานในระดับความเชื่อถือที่สูงกว่า คือ Virtual Trust Level 1 (VTL1) และ VTL1 มีเคอร์เนลของตัวเองที่แยกจาก Guest kernel เรียกว่า Secure Kernel
    https://lssna24.sched.com/event/1aIeD/linux-virtualization-b...

    • Exclave รันอยู่ในระดับความเชื่อถือแบบขนานกัน
  • Exclave สำคัญ แต่ดูเหมือนเป็นขั้นกลาง Apple กำลังทำให้ XNU มีความเสี่ยงน้อยลง แต่ยังคงเคลื่อนไหวเชิงป้องกันมากกว่าจะยอมรับสถาปัตยกรรมแบบ microkernel อย่างเต็มตัว
    ถ้าต้องเดิมพัน ผมว่า exclave น่าจะเป็นสะพานไปสู่การเปลี่ยนแปลงที่ใหญ่กว่า อาจเป็นระบบปฏิบัติการที่ modular มากขึ้นแบบ Fuchsia หรืออาจเป็น โมเดลความปลอดภัยแบบ CHERI ที่บังคับใช้ memory safety ในระดับฮาร์ดแวร์
    Apple นำหน้าในด้านความปลอดภัยของระบบปฏิบัติการสำหรับผู้บริโภค แต่ exclave ดูใกล้เคียงกับการปรับปรุงแบบ patchwork มากกว่าผลลัพธ์ของการคิดใหม่ทั้งระบบ ถึงอย่างนั้นมันก็น่าจะเป็นการเปลี่ยนแปลงด้านความปลอดภัยที่ใหญ่ที่สุดในการออกแบบระบบปฏิบัติการกระแสหลักในรอบ 10 ปีที่ผ่านมา และคงต้องใช้เวลาอีกหลายปีกว่าผลกระทบทั้งหมดจะปรากฏชัด

    • ดูเหมือนเป็นการย้อนกลับไปสู่ microkernel แบบเดิม แต่เป็นรูปแบบที่สะท้อนวิธีแก้ปัญหาสมัยใหม่และข้อกำหนดใหม่ ๆ
      ตอนที่ Mach ถูกสร้างขึ้น ความปลอดภัยยังไม่ใช่ประเด็นใหญ่เท่าตอนนี้ เครื่องในปัจจุบันมีประสิทธิภาพสูงมาก จน overhead ที่เกิดจากการสื่อสารระหว่างโปรเซสของ microkernel อาจกลายเป็นสิ่งที่มองข้ามได้แล้ว
  • ผมไม่คุ้นกับเนื้อหาระดับนี้ แต่ดูเหมือนว่าสามารถโจมตี enclave เองแล้วไต่สิทธิ์ขึ้นไปสูงกว่าเคอร์เนลได้ สงสัยว่าชิ้นส่วนฮาร์ดแวร์นี้เป็นอะไรคล้าย โปรเซสเซอร์ร่วม หรือเปล่า

    • Exclave ไม่ใช่ฮาร์ดแวร์ แต่เป็น ซอฟต์แวร์ที่ถูกแยกกัก สำหรับจัดการงานที่อ่อนไหวบางอย่างซึ่งไม่ต้องการให้เคอร์เนลเข้าถึงได้
      ดังนั้นถ้า exploit มันได้ ก็จริงที่จะได้สิทธิ์เข้าถึงที่เคอร์เนลไม่มี แต่นั่นแหละคือเจตนา เป้าหมายคือแม้เคอร์เนลจะถูกเจาะ ก็ยังไม่ให้เข้าถึงพื้นที่อ่อนไหวนั้นได้
  • ตามเอกสารของ Apple ระบุว่าไม่ได้ใช้ SPTM เลยสงสัยว่าจะส่งผลต่อความปลอดภัยของ macOS อย่างไร: https://support.apple.com/guide/security/operating-system-in...
    ตอนนี้สิ่งอย่าง exclave เดิมที่ใช้แสดงตัวบ่งชี้กล้องคงไม่ค่อยเกี่ยวกับ macOS มากนัก เพราะ MacBook มีฮาร์ดแวร์เฉพาะอยู่แล้ว แต่ในอนาคตอาจมี exclave ที่นำมาใช้กับ macOS ด้วย

    • ควรกลับไปอ่านเชิงอรรถนั้นอีกครั้ง มันระบุว่า Page Protection Layer (PPL) และ Secure Page Table Monitor (SPTM) บังคับใช้การรันโค้ดที่ลงนามและเชื่อถือได้บนทุกแพลตฟอร์มยกเว้น macOS เพราะ macOS ถูกออกแบบมาให้รันโค้ดตามอำเภอใจได้ คุณสมบัติด้านความปลอดภัยอื่น ๆ รวมถึงการป้องกัน page table มีอยู่ในทุกแพลตฟอร์มที่รองรับ
      กล่าวคือ ไม่ได้หมายความว่า macOS ไม่ใช้ SPTM แต่หมายความว่า macOS ไม่ได้ใช้ SPTM เพื่อบล็อกการรันโค้ดที่ไม่ได้ลงนาม เพราะ macOS ต้องเปิดให้ผู้ใช้รันโค้ดที่ไม่ได้ลงนามได้หลังผ่านขั้นตอนบางอย่าง
  • สงสัยว่านักพัฒนาแอปจะสามารถใช้ Exclave ได้หรือไม่ สิ่งที่ไม่พอใจคือ Apple มักสร้างฟีเจอร์ใหม่ที่น่าทึ่งไว้ใช้ภายใน แล้วปิดกั้นไม่ให้นักพัฒนาใช้โดยสิ้นเชิง ผลคือแอปธนาคาร กระเป๋าเงิน เมสเซนเจอร์ที่เน้นความปลอดภัย และอื่น ๆ ยังคงต้องทำงานในพื้นที่ผู้ใช้ที่มีความปลอดภัยอ่อนกว่า

    • ไม่จำเป็นต้องเป็นเช่นนั้นเสมอไป พื้นที่ผู้ใช้ของ Apple ก็ปลอดภัยขึ้นเรื่อย ๆ เช่นกัน
      ตัวอย่างง่าย ๆ คือ macOS รุ่นล่าสุดรันทุกแอปภายใน sandbox แม้แอปจะไม่ได้เลือกใช้อย่างชัดเจนก็ตาม sandbox นี้ป้องกันไม่ให้แอปต่าง ๆ แก้ไขไฟล์ของกันและกัน ซึ่งก่อนหน้านี้เป็นจุดอ่อนใหญ่ของระบบความปลอดภัย เพราะลายเซ็นของ bundle จะถูกตรวจสอบเฉพาะตอนรันครั้งแรกเท่านั้น ไม่ได้ตรวจทุกครั้งที่รัน
    • ตามที่เข้าใจ ด้วยการออกแบบปัจจุบันยังทำไม่ได้ Exclave ถูกรวมเข้ากับระบบปฏิบัติการทั้งระบบ และเริ่มทำงานเป็นส่วนหนึ่งของกระบวนการบูต จึงค่อนข้างเป็นแบบคงที่ ด้วยเหตุผลด้านความปลอดภัย ความสัมพันธ์ระหว่างองค์ประกอบเหล่านี้ก็น่าจะถูกกำหนดไว้แบบคงที่เช่นกัน
      ตอนนี้ยังเป็นโครงสร้างแบบ kernel ต่อ kernel ด้วย ดังนั้นหากมีการรองรับบุคคลที่สาม ก็น่าจะจำกัดอยู่แค่ระดับการใช้งานอย่างไดรเวอร์อุปกรณ์ความปลอดภัยเท่านั้น แต่ Apple พยายามผลักดันไดรเวอร์ของบุคคลที่สามออกจาก hypervisor ไปอยู่ในพื้นที่ผู้ใช้ เมื่อดูว่าการเปลี่ยนผ่านนี้เกิดขึ้นควบคู่กับการพัฒนา exclave ก็ไม่น่าจะเปลี่ยนทิศทางไปให้นักพัฒนาไดรเวอร์บุคคลที่สามใช้ exclave
      เป็นเรื่องปกติที่ Apple จะทำให้ฟีเจอร์แพลตฟอร์มระดับ kernel-enforced แบบนี้เสถียรมากขึ้นภายในก่อนจะเปิดเผยต่อภายนอก pointer authentication ของ arm64e ก็เป็นตัวอย่างที่คล้ายกัน
    • ตอนนี้ยังไม่ได้