1 คะแนน โดย GN⁺ 2024-11-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

ยุคใหม่ของการหลบหนีจาก macOS Sandbox: พื้นผิวการโจมตีที่ถูกมองข้ามและการค้นพบช่องโหว่ใหม่มากกว่า 10 รายการ

  • ในระบบ macOS โปรเซสส่วนใหญ่ทำงานอยู่ในสภาพแวดล้อม sandbox ที่มีข้อจำกัด แม้ผู้โจมตีจะได้สิทธิ์รันโค้ดจากระยะไกล (RCE) ความสามารถก็ยังถูกจำกัด ขั้นต่อไปคือการข้าม sandbox เพื่อให้เข้าถึงไฟล์ได้กว้างขึ้น
  • จากการทบทวนปัญหาเดิมเพื่อค้นหาช่องโหว่การหลบหนีจาก sandbox ได้ค้นพบ พื้นผิวการโจมตีที่ถูกมองข้าม ที่สำคัญและเทคนิคการโจมตีใหม่ ๆ จนนำไปสู่การค้นพบ ช่องโหว่การหลบหนีจาก sandbox ใหม่หลายรายการ: CVE-2023-27944, CVE-2023-32414, CVE-2023-32404, CVE-2023-41077, CVE-2023-42961, CVE-2024-27864, CVE-2023-42977 เป็นต้น

เกี่ยวกับ macOS Sandbox

App Sandbox

  • ตามข้อกำหนดของ Mac AppStore แอปพลิเคชันส่วนใหญ่จะทำงานภายใต้ข้อจำกัดของ App Sandbox แอปพลิเคชันที่อยู่ใน sandbox ต้องมีสิทธิ์เฉพาะ และเมื่อเข้าสู่ sandbox แล้วจะถูก ทำเป็นคอนเทนเนอร์ ทำให้การทำงานกับไฟล์ถูกจำกัด
  • ไฟล์ที่แอปพลิเคชันใน sandbox สร้างขึ้นจะถูก กักกัน โดยปริยาย และแอปใน sandbox ไม่สามารถลบคุณสมบัตินี้ออกได้
  • แอปพลิเคชันที่ไม่มี sandbox สามารถเข้าถึงข้อมูลผู้ใช้ทั้งหมดและทรัพยากรระบบได้อย่างไม่จำกัด ตรงกันข้าม แอปพลิเคชันที่มีข้อจำกัด sandbox จะเข้าถึงได้อย่างจำกัดเท่านั้น
  • โปรเซสลูกที่ถูก fork จะ สืบทอด ข้อจำกัด sandbox ของโปรเซสแม่ แต่โปรเซสที่เริ่มผ่าน LaunchService.framework จะไม่สืบทอดข้อจำกัดดังกล่าว

Service Sandbox

  • บริการเดมอน ของ Apple ส่วนใหญ่ทำงานอยู่ในบริบทของ Service Sandbox โดยถูกจำกัดด้วยโปรไฟล์ sandbox ที่กำหนดไว้ในตำแหน่งของระบบ
  • โดยทั่วไป Service Sandbox จะไม่ถูก ทำเป็นคอนเทนเนอร์ และไฟล์ก็จะ ไม่ถูกกักกันโดยปริยาย

พื้นผิวการโจมตี

วิธีทั่วไปที่มีอยู่เดิม

การโจมตีผ่าน LaunchService.framework

  • มีวิธีโจมตีแอปพลิเคชันที่ไม่มี sandbox ผ่านเฟรมเวิร์ก LaunchService ของระบบ ตัวอย่างเช่น CVE-2021-30864 สามารถจัดการตัวแปรสภาพแวดล้อม $HOME ของแอปพลิเคชันระบบที่ไม่มี sandbox อย่าง Terminal.app ได้
  • แม้จะสามารถวางและรันแอปพลิเคชันใหม่ที่ไม่มี sandbox ได้ แต่แอปพลิเคชันที่เพิ่งถูกวางลงไปใหม่จะถูก กักกัน และถูกป้องกันไม่ให้รัน

การโจมตีบริการ Mach ที่ใช้งานได้

  • มีวิธีโจมตีบริการ Mach ที่ใช้งานได้ซึ่งถูกระบุไว้ในโปรไฟล์ App Sandbox ข้อมูลบริการ Mach ทั้งหมดของระบบถูกเก็บไว้ในไฟล์ /System/Library/xpc/launchd.plist

วิธีใหม่ที่ถูกมองข้าม

  • บริการ XPC ที่อยู่ใน โดเมน PID เป็นบริการที่ถูกมองข้าม บริการเหล่านี้จะถูกเริ่มโดยแอปพลิเคชันตามคำขอ และจะยุติลงเมื่อแอปพลิเคชันที่ร้องขอสิ้นสุดการทำงาน
  • บริการ XPC ใน โดเมน PID สามารถถูกเรียกใช้จากแอปพลิเคชันใน sandbox ได้ โดยไม่มีการตรวจสอบสิทธิ์เพิ่มเติมหรือการตรวจสอบ sandbox

ช่องโหว่ใหม่และเอ็กซ์พลอยต์

Beta-No-CVE-1

  • ช่องโหว่นี้ส่งผลเฉพาะกับ macOS Sonoma รุ่นเบต้าเท่านั้น
  • ช่องโหว่อยู่ในบริการ XPC /System/Library/PrivateFrameworks/StorageKit.framework/XPCServices/storagekitfsrunner.xpc
  • บริการนี้สามารถรันได้โดยไม่มีข้อจำกัด sandbox และสามารถรันคำสั่งระบบใด ๆ ก็ได้

Beta-No-CVE-2

  • ช่องโหว่นี้ก็ส่งผลเฉพาะกับซอฟต์แวร์รุ่นเบต้าเช่นกัน
  • ช่องโหว่อยู่ในบริการ XPC /System/Library/PrivateFrameworks/AudioAnalyticsInternal.framework/XPCServices/AudioAnalyticsHelperService.xpc
  • สามารถบีบอัดพาธใดก็ได้ และไฟล์ zip ที่สร้างขึ้นจะไม่ถูกกักกัน

CVE-2023-27944

  • ช่องโหว่อยู่ในบริการ XPC /System/Library/PrivateFrameworks/TrialServer.framework/XPCServices/TrialArchivingService.xpc
  • บริการนี้เข้าสู่ Service Sandbox แต่ไฟล์ที่ถูกวางลงไปจะไม่ถูกกักกัน

CVE-2023-32414

  • ช่องโหว่อยู่ในบริการ XPC /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/XPCServices/ArchiveService.xpc
  • บริการนี้เข้าสู่ Service Sandbox แต่ไฟล์ที่ถูกวางลงไปจะไม่ถูกกักกัน

CVE-2023-32404

  • ช่องโหว่อยู่ในบริการ XPC /System/Library/PrivateFrameworks/WorkflowKit.framework/XPCServices/ShortcutsFileAccessHelper.xpc
  • บริการนี้สามารถรันได้โดยไม่มีข้อจำกัด sandbox และมีสิทธิ์ TCC พิเศษสำหรับ Full Disk Access

CVE-2023-41077

  • ช่องโหว่อยู่ในบริการ XPC /System/Library/Frameworks/ImageCaptureCore.framework/XPCServices/mscamerad-xpc.xpc
  • บริการนี้สามารถรันได้โดยไม่มีข้อจำกัด sandbox และมีสิทธิ์ TCC พิเศษที่เข้าถึง Photos และ โวลุ่มแบบถอดได้ ได้โดยตรง

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

 
GN⁺ 2024-11-09
ความเห็นจาก Hacker News
  • การแพตช์บริการ XPC แยกเป็นรายตัวดูแปลก และน่าจะเป็นปัญหาด้านการออกแบบของ sandbox เอง ทำให้เกิดคำถามว่าทำไมบริการ XPC จำนวนมากจึงเข้าถึงได้จากแอปที่อยู่ใน sandbox

    • macOS ควรมี Darwin container แบบอิงตามความสามารถ แทนที่จะเป็นแบบ blacklist
    • SBPL (ภาษาโปรไฟล์ sandbox) น่าสนใจ และสามารถดูข้อมูลที่เกี่ยวข้องได้บน GitHub
    • สงสัยว่าใน macOS มี Scheme interpreter ที่ใช้ประมวลผล SBPL หรือไม่
    • ดูเหมือนว่า sandbox-exec จะเป็นตัวที่จัดการสิ่งนี้
  • เฟรมเวิร์กด้านความปลอดภัยกลับก่อให้เกิดปัญหาใหม่ ๆ และไม่ได้ทำให้รู้สึกว่าปลอดภัยขึ้นจริง

    • เหมือนกฎหมายภาษีของเนเธอร์แลนด์ที่เป็นการปะติดปะต่อของแพตช์ และดูราวกับมีจิตสำนึกเป็นของตัวเองแล้ว
  • มีความเป็นไปได้สูงว่าจะยังค้นพบข้อบกพร่องที่เกี่ยวข้องกับ XPC ต่อไป และคาดว่าจะมี CVE ออกมาอย่างต่อเนื่อง เว้นแต่ Apple จะออกแบบแนวทางการทำ hardening ของบริการใหม่

  • ทั้งรักทั้งเกลียด sandbox

    • sandbox เป็นแนวป้องกันชั้นที่สองที่ยอดเยี่ยม แต่บริษัทใหญ่ ๆ กลับปฏิเสธที่จะแก้ RCE เมื่อไม่สามารถหนีออกจาก sandbox ได้ และใช้มันเป็นแนวป้องกันหลักแทน
  • macOS ไม่ได้ถูกออกแบบมาสำหรับระบบสิทธิ์แบบละเอียด และไม่สามารถเติมสิ่งนี้เข้าไปบนเทคโนโลยี Mac OS เดิมกับ NeXTSTEP ได้

    • ในฐานะนักพัฒนาแอป ไม่ใช่นักวิจัยด้านความปลอดภัย ฉันเคยพบวิธีหลบเลี่ยงหลายอย่าง แต่ก็เลิกไปเพราะระบบรายงานช่องโหว่ความปลอดภัยของ Apple ไม่มีประสิทธิภาพ
    • macOS กลายเป็นเหยื่อของ security theater และกำลังสร้างผลเสียต่อทั้งผู้ใช้และนักพัฒนา
  • บน iOS ก็มีช่องโหว่เช่นกัน และมีอุปกรณ์ที่ใช้งานอยู่ราว 2 พันล้านเครื่อง

  • บริการ XPC ในโดเมน PID เป็นวิธีที่ชาญฉลาดในการเลี่ยงข้อจำกัดของ sandbox และแพตช์ของ Apple ก็ดูเหมือนเป็นเพียงการแก้เฉพาะหน้า

    • จำเป็นต้องออกแบบวิธีการสืบทอด sandbox ใหม่ทั้งหมด
  • สงสัยว่าเมื่อหนีออกจาก sandbox ได้แล้ว จะเป็นการกลับไปสู่สถานะที่ไม่มี sandbox หรือเป็นการเข้าสู่สถานะที่มีสิทธิ์สูงขึ้น