ยุคใหม่ของการหลบหนีจาก 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 ความคิดเห็น
ความเห็นจาก Hacker News
การแพตช์บริการ XPC แยกเป็นรายตัวดูแปลก และน่าจะเป็นปัญหาด้านการออกแบบของ sandbox เอง ทำให้เกิดคำถามว่าทำไมบริการ XPC จำนวนมากจึงเข้าถึงได้จากแอปที่อยู่ใน sandbox
sandbox-execจะเป็นตัวที่จัดการสิ่งนี้เฟรมเวิร์กด้านความปลอดภัยกลับก่อให้เกิดปัญหาใหม่ ๆ และไม่ได้ทำให้รู้สึกว่าปลอดภัยขึ้นจริง
มีความเป็นไปได้สูงว่าจะยังค้นพบข้อบกพร่องที่เกี่ยวข้องกับ XPC ต่อไป และคาดว่าจะมี CVE ออกมาอย่างต่อเนื่อง เว้นแต่ Apple จะออกแบบแนวทางการทำ hardening ของบริการใหม่
ทั้งรักทั้งเกลียด sandbox
macOS ไม่ได้ถูกออกแบบมาสำหรับระบบสิทธิ์แบบละเอียด และไม่สามารถเติมสิ่งนี้เข้าไปบนเทคโนโลยี Mac OS เดิมกับ NeXTSTEP ได้
บน iOS ก็มีช่องโหว่เช่นกัน และมีอุปกรณ์ที่ใช้งานอยู่ราว 2 พันล้านเครื่อง
บริการ XPC ในโดเมน PID เป็นวิธีที่ชาญฉลาดในการเลี่ยงข้อจำกัดของ sandbox และแพตช์ของ Apple ก็ดูเหมือนเป็นเพียงการแก้เฉพาะหน้า
สงสัยว่าเมื่อหนีออกจาก sandbox ได้แล้ว จะเป็นการกลับไปสู่สถานะที่ไม่มี sandbox หรือเป็นการเข้าสู่สถานะที่มีสิทธิ์สูงขึ้น