Về Apple Exclaves
(medium.com/@randomaugustine)- Exclaves của Apple là một cơ chế cô lập nhằm giữ lại một số tài nguyên nhạy cảm trong vùng riêng biệt ngay cả khi kernel XNU bị xâm phạm; việc công bố mã nguồn XNU cho M4·A18 đã làm lộ ra một phần cấu trúc này
- XNU dựa trên Mach, nhưng các chức năng hệ thống thực tế lại tập trung trong cùng một phạm vi đặc quyền nên hoạt động giống một monolithic kernel; Exclaves nằm trên dòng tăng cường phòng thủ nối tiếp từ Secure Enclave, PPL đến SPTM
- Exclaves được cấu thành từ các domain và resource được định nghĩa khi khởi động, và được SPTM bảo vệ khỏi XNU bằng các kiểu trang mới cho shared memory buffer, audio buffer, sensor, Conclave, service, v.v.
- Secure Kernel(SK) chạy trên cùng application processor với XNU và theo các manh mối trong mã nguồn có thể thuộc họ seL4 cũng như sử dụng secure world của ARM TrustZone, nhưng phần lớn triển khai nội bộ vẫn chưa được công khai
- Hiệu quả bảo mật thực tế phụ thuộc vào việc thành phần nào được chuyển sang Exclaves; các image build hiện tại cho thấy chỉ báo bảo mật camera·micro, một phần Apple Neural Engine, một số driver và các thành phần giao tiếp với Secure Enclave đang sử dụng nó
Monolithic kernel và lộ trình tăng cường cô lập của Apple
- Hệ điều hành hiện đại thường hoạt động với hai miền bảo vệ là user mode và kernel mode
- Ứng dụng không thể trực tiếp thực hiện các tác vụ cần đặc quyền cao như truy cập tệp hay giao tiếp mạng, mà phải yêu cầu kernel thông qua system call
- Kernel kiểm tra quyền truy cập rồi trả lại cho user mode kết quả như handle biểu thị tệp đã mở
- Phần lớn hệ điều hành sử dụng kiến trúc monolithic kernel, trong đó kernel có quyền truy cập không giới hạn vào toàn bộ phần cứng, bộ nhớ và dữ liệu người dùng
- Kernel càng lớn thì khả năng phát sinh lỗ hổng cũng càng cao
- Việc khai thác lỗ hổng kernel có thể dẫn tới xâm phạm toàn bộ hệ thống
- Microkernel có thể cải thiện cô lập bảo mật bằng cách giảm chức năng bên trong kernel và đẩy phần lớn công việc sang các tiến trình không đặc quyền riêng biệt
- Nhược điểm là vấn đề hiệu năng và độ phức tạp phần mềm ứng dụng gia tăng
- XNU được iOS, macOS, tvOS, visionOS, watchOS cùng chia sẻ dựa trên Mach microkernel, nhưng trong triển khai thực tế nhiều chức năng hệ thống vẫn nằm trong cùng phạm vi đặc quyền nên về thực chất hoạt động như monolithic kernel
Cô lập bảo mật của Apple trước Exclaves
- Năm 2013, Secure Enclave được giới thiệu trên iPhone 5s
- SepOS, một hệ điều hành dựa trên microkernel, chạy trên các lõi CPU cứng hóa chuyên dụng
- Kernel của SepOS là cL4, phiên bản tùy biến của L4-embedded do Apple phát triển
- Được dùng để bảo vệ khóa mã hóa và dữ liệu sinh trắc như Face ID
- Ngay cả khi kernel iOS bị xâm phạm, Secure Enclave nhìn chung vẫn không bị ảnh hưởng trừ khi có thêm exploit nhắm riêng vào nó
- Secure Enclave và Secure Exclaves là hai mục tiêu khác nhau
- Năm 2017, trên iPhone 8·iPhone X dùng A11, Page Protection Layer(PPL) được đưa vào
- Chỉ một phần của kernel được phép sửa đổi page table của bộ nhớ, phần còn lại của kernel không thể sửa trực tiếp
- Bề mặt tấn công nhỏ nên hiếm khi bị vượt qua, nhưng phần kernel còn lại vẫn giữ nhiều quyền cần thiết để xâm phạm dữ liệu
- Trong giai đoạn 2021~2023 với A15 và iOS 17, Secure Page Table Monitor(SPTM) thay thế và cải tiến PPL
- Bảo vệ thêm các chức năng bộ nhớ và cô lập ở cấp các thành phần kernel nhỏ
- Việc xác minh code signing để kiểm tra chữ ký Apple cũng được tách riêng
- Trong giai đoạn này, các tham chiếu gián tiếp tới exclaves bắt đầu xuất hiện trong mã nguồn XNU, khi đó được suy đoán là một subsystem do SPTM quản lý
Sự xuất hiện của XNU Exclaves trong năm 2024
- Việc công bố mã nguồn XNU hỗ trợ các hệ thống dựa trên M4·A18 đã làm lộ ra một phần cấu trúc của Exclaves
- Các hệ thống như iPhone 16 là đối tượng được hỗ trợ
- Trên các bộ xử lý cũ hơn, Exclaves không được kích hoạt
- Exclaves chỉ các tài nguyên được tách khỏi XNU và được thiết kế như một vùng vẫn được bảo vệ ngay cả khi kernel bị xâm phạm
- Resource được định nghĩa sẵn khi build OS
- Được nhận diện bằng tên hoặc ID
- Có type và được khởi tạo lúc boot
- Được tổ chức thành các domain riêng
- SPTM bảo vệ Exclave memory khỏi XNU bằng các kiểu trang dành riêng cho Exclave
- Các kiểu resource đã được xác nhận cho thấy ranh giới giữa XNU và Exclave hình thành ở đâu
- Shared memory buffer mà cả XNU và Exclave cùng có thể truy cập
- Ở góc nhìn của XNU, có thể được đặt là chỉ đọc hoặc đọc·ghi
- Audio buffer và sensor dùng cho bảo mật các tính năng như chỉ báo truy cập camera·micro
- Conclave và Conclave Manager dùng để gom nhiều resource vào một miền bảo mật riêng
- Service có thể thực thi mã trong không gian Exclave khi được XNU thread gọi tới
- Shared memory buffer mà cả XNU và Exclave cùng có thể truy cập
Secure Kernel và secure world
- Để các Exclave service chạy trong trạng thái cô lập với XNU, Apple đã đưa vào Secure Kernel(SK)
- File image của SK có chứa chuỗi phiên bản “cL4”
- Cấu trúc IPC có vẻ gần với seL4 hơn là L4-embedded của cL4 trong SepOS ban đầu
- Trong các chuỗi của SK thường xuyên xuất hiện thuật ngữ thuộc họ seL4 như capability, frame, untyped memory, minting
- Tháng 4 năm 2024, Apple công bố tham gia seL4 Foundation
- Khác với SepOS chạy trên bộ xử lý chuyên dụng, SK chạy trên cùng application processor tốc độ cao với XNU/iOS
- Cấu trúc này cần thêm một mức đặc quyền xử lý, và các nền tảng khả dĩ được nhắc tới gồm virtualization extension, phần mở rộng bổ sung của SPTM từ Apple, và TrustZone của ARM
- Trong mã nguồn XNU có các tham chiếu liên quan đến việc chuyển sang secure world của TrustZone
- Có thể hiểu cấu trúc này là XNU và iOS chạy trong insecure world, còn SK chạy trong secure world
- SK cung cấp một môi trường vận hành bị giới hạn cho Exclave, resource và service
- Nó khác với mẫu thiết kế Trusted Applications do ARM đề xuất
- Vì bề mặt tấn công của Exclave service và Secure Kernel bị hạn chế, việc thoát khỏi secure world để xâm phạm XNU có khả năng khó hơn nhiều so với tấn công trực tiếp XNU từ insecure world
- Trong mã nguồn XNU, việc chuyển sang secure world được gọi là RINGGATE
- Phần SPTM có thể quản lý quá trình chuyển này mới chỉ là suy đoán; khu vực liên quan không phải mã nguồn mở và cần phân tích nhị phân
Domain, resource và Conclave
- Trong lúc boot, XNU khởi tạo cấu trúc bảng kernel hai tầng để chứa thông tin resource Exclave được phát hiện
root_tablenhận diện domain theo tên- Mỗi domain tham chiếu tới một bảng tầng hai chứa các resource của domain đó
- Cấu trúc domain đã được xác nhận như sau
com.apple.kernel- Bao gồm Conclave launcher, debug service, ExclaveIndicatorController cho đèn chỉ báo bảo mật, log service, FrameMint dùng để boot ExclaveKit, v.v.
- Cũng bao gồm shared memory buffer
com.apple.storage.backend, được Exclave service dùng để thực hiện file I/O trong không gian XNU thông qua upcall - Bao gồm một Conclave Manager resource cho mỗi Conclave
com.apple.darwin- Không có use case trong các component mã nguồn mở
com.apple.conclave.name- Mỗi Conclave có một domain riêng
- Có thể chứa service, audio buffer, shared memory buffer, v.v.
com.apple.driver.*name*- Sự tồn tại được nhắc tới trong chú thích như các domain theo từng device driver, nhưng không được xác nhận trực tiếp trong mã nguồn mở
- Conclave vừa là một kiểu resource có thể chứa nhiều resource, vừa là đơn vị bảo mật để service và resource có quyền truy cập chia sẻ lẫn nhau
- Mach task bị giới hạn ở số Conclave có thể gọi tới
- Mỗi Conclave có một Conclave Manager nằm trong kernel domain
- Conclave có vòng đời như attach, launch, stop, detach
- Cũng tồn tại các trạng thái chuyển tiếp như launching, stopping
Tạo, gắn kết và thực thi Conclave
posix_spawn()của XNU có thể gọitask_add_conclave()để gắn một task với một Conclave Manager resource- Quan hệ là 1:1
- Một task chỉ gắn với một Conclave Manager, và chiều ngược lại cũng vậy
- Chủ thể có thể spawn Conclave là launchd hoặc task có entitlement
com.apple.private.exclaves.conclave-spawn- Entitlement
com.apple.private.exclaves.conclave-hostđược hiểu gần hơn với quyền attach chính nó thay vì spawn task mới
- Entitlement
- Kernel tìm Conclave Manager resource gắn với Conclave đích trong domain
com.apple.kernel- Sau đó lưu một Tightbeam endpoint trỏ tới endpoint của Conclave Manager trong struct resource của Conclave
- Tightbeam có vẻ là một RPC framework cho giao tiếp giữa các component Exclave
- Việc thực thi Conclave phải được tiến hành từ task Conclave Manager đã gắn kết
- Thử launch sẽ chờ cho tới khi Exclaves boot hoàn tất tới trạng thái
EXCLAVES_BS_BOOTED_EXCLAVEKIT - Mach trap mới đi vào hàm
_exclaves_ctl_trap(), vàEXCLAVES_CTL_OP_LAUNCH_CONCLAVEđược dùng để thực thi Conclave - Trong môi trường production, host Conclave đã launch có thể rơi vào trạng thái tainted, và sau đó
exit()có thể gây kernel panic
- Thử launch sẽ chờ cho tới khi Exclaves boot hoàn tất tới trạng thái
Mach trap mới cho Exclaves
_exclaves_ctl_trap()là một Mach trap mới xử lý các chức năng Exclave- Nó thực hiện nhiều thao tác tùy theo tham số operation
- Thông thường nó sẽ xác minh entitlement cần thiết cho operation được gọi
EXCLAVES_CTL_OP_BOOTđược gọi hai lần trong quá trình boot hệ thống- Bắt đầu Exclaves boot stage 2
- Boot ExclaveKit
- Caller phải là launchd hoặc có entitlement
com.apple.private.exclaves.boot
- Các operation chính còn lại ít nhất yêu cầu task hiện tại phải có entitlement
com.apple.private.exclaves.kernel-domainhoặc là task Conclave Manager liên quanEXCLAVES_CTL_OP_LOOKUP_SERVICES: tìm service trong Exclave domain của task hiện tại, nếu thất bại thì kiểm tra Darwin domain và kernel domain tùy theo quyềnEXCLAVES_CTL_OP_ENDPOINT_CALL: gọi endpoint của Exclave service trong domain của task hiện tại để current thread chuyển sang secure world và chạy mã cụ thể- Tạo named buffer và copyin/copyout
- Tạo audio buffer và copyout
- Tạo, start, stop, status cho sensor
- Lookup notification resource
Downcall và Upcall
- Downcall là việc gọi endpoint của Exclave service trong secure world, và là điểm bắt đầu thực thi mã trong secure world
- Downcall chuyển current thread sang secure world và bắt đầu chạy tại entry point của secure code
- Không phải cách giao việc cho thread khác
- Task gọi phải có kernel domain entitlement hoặc là task Conclave Manager gắn với service Conclave tương ứng
- Mỗi Conclave có tối đa 128 service có thể gọi
- XNU có vẻ lên lịch thread vào Secure Kernel thông qua
sk_enter()- Có khả năng SK không có thread độc lập, và XNU xử lý toàn bộ việc scheduling thread trong secure world
- Thread đang chạy trong secure world có thể thực hiện các thao tác scheduler thông thường như yield, wait, suspend, interrupt
- Trong trường hợp đó, thread rời secure world quay về kernel context của XNU, rồi sau đó được scheduling trở lại secure world bằng mã scheduling của Exclave
- Cấu trúc IPC của Downcall được thiết lập dưới dạng request·response buffer trước khi vào secure world
- Interrupt và preemption bị vô hiệu hóa trong lúc chuẩn bị cấu trúc IPC request cuối cùng và gọi
sk_enter() - Lý do là cấu trúc này chỉ có một bản cho mỗi lõi CPU
- Response của Downcall có thể quay về per-core response buffer của CPU khác do interrupt, upcall, yield hoặc rescheduling
- Interrupt và preemption bị vô hiệu hóa trong lúc chuẩn bị cấu trúc IPC request cuối cùng và gọi
- Upcall là cách thread đang chạy trong secure world gọi Exclaves upcall handler qua Tightbeam khi cần sự trợ giúp từ XNU
- Bị giới hạn vào các hàm XNU cụ thể được cho phép
- Thread đang trong upcall không thể quay lại user mode
- Việc downcall trở lại secure world để tái nhập cũng không được phép
- Thread phải quay lại ngữ cảnh secure world tại đúng điểm đã thực hiện upcall
- Các nhóm upcall được xác nhận trong mã nguồn gồm memory, file storage, DriverKit, DriverKit Apple Neural Engine, điều khiển Conclave
XNUProxy và các giai đoạn boot
- Có nhiều tham chiếu tới XNUProxy, nhưng vị trí và vai trò chính xác vẫn chưa được xác định
- Nó có thể là một Exclave domain độc lập
- Có thể là một service hoặc nhóm service xử lý một số downcall cụ thể trong domain
com.apple.kernel - Cũng có thể là một subsystem dưới SPTM thực hiện downcall sang secure world
- Chú thích trong
Exclaves_L4.hcho biết XNU Proxy làm cho nhiều Exclave trở nên reachable- user app template
- audio driver
- ExclaveDriverKit
- SecureRTBuddy cho Always On Processor và Display Coprocessor
- Conclave control, Conclave debug, v.v.
- Việc boot Exclaves đòi hỏi sự phối hợp giữa insecure world và secure world, và khi có vấn đề thường dẫn tới
panic() - Quá trình boot được chia làm ba giai đoạn
- Stage 1 không xuất hiện trong mã nguồn mở và có thể là quá trình secure boot nạp SK vào bộ nhớ, xác minh code signing rồi làm cho nó có thể thực thi
- Stage 2 thực hiện khởi tạo upcall server, thu thập thông tin boot của secure kernel, khởi tạo Exclave scheduler, khởi tạo kext XrtHostedXNU, khởi tạo multicore, khởi tạo XNU Proxy, phát hiện static Exclave resource, tạo Conclave Manager endpoint, v.v.
- Stage 3 tìm service
com.apple.service.FrameMintrồi thực hiện các lời gọi liên quan tớiframemint_framemint__init(),framemint_framemint_populate(), sau đó chuyển sang trạng tháiEXCLAVES_BS_BOOTED_EXCLAVEKIT
Kiểu bộ nhớ SPTM và những giới hạn còn lại
- SPTM gán type cho các trang bộ nhớ để kiểm soát truy cập theo từng subsystem
- Các type hiện có gồm
XNU_USER_EXEC,XNU_USER_DEBUG,XNU_USER_JIT,XNU_ROZONE,XNU_KERNEL_RESTRICTED, cùng các type liên quan tới TXM·DART
- Các type hiện có gồm
- Exclaves bổ sung các type mới liên quan tới SK
SK_DEFAULT: chỉ dành cho SK, XNU không thể truy cậpSK_IO: chỉ dành cho SK, XNU không thể truy cậpSK_SHARED_RO: SK và XNU cùng chia sẻ nhưng XNU chỉ đọcSK_SHARED_RW: SK và XNU cùng chia sẻ, XNU có thể đọc·ghi
- Có thể xem Exclaves là một khoản đầu tư lớn nhằm bổ sung defence in depth cho hệ điều hành của Apple
- Cô lập tài nguyên nhạy cảm để giảm bề mặt tấn công tiềm tàng
- Giảm tác động của một vụ xâm phạm kernel đơn lẻ
- Trên thực tế, những thành phần nào được chuyển từ kernel sang Exclaves vẫn chưa được phân tích trực tiếp
- Các image build cho thấy chỉ báo bảo mật camera·micro, một số chức năng của Apple Neural Engine, một số device driver và các thành phần giao tiếp với Secure Enclave đang sử dụng nó
- Trong tương lai có thể sẽ có thêm nhiều thành phần chuyển sang Exclaves
- Các vùng XNU nằm ngoài Exclaves vẫn là mục tiêu tấn công
- Phân tích này dựa trên Apple Open Source XNU build 11215
- Vị trí chính xác của ExclaveKit, ExclaveDriverKit, XNUProxy, cách XNU chuyển sang secure world, Secure Kernel và userspace của secure world vẫn là những khu vực cần phân tích thêm
1 bình luận
Ý kiến trên Hacker News
Các SoC điện thoại và laptop gần đây của Apple đã được bổ sung hỗ trợ phần cứng cho ảo hóa lồng nhau, bao gồm cả M4 iPad Pro dùng exclave cho đèn LED camera
Hy vọng bản cập nhật tiếp theo của Apple Platform Security Guide sẽ đề cập đến SK exclave và biện pháp giảm thiểu ở baseband cho phát hiện radar Wi‑Fi: https://help.apple.com/pdf/security/en_US/apple-platform-sec...
Về phần mở rộng SPTM của Apple, cũng có một bài viết reverse engineering về SPTM: https://www.df-f.com/blog/sptm3
XNU đang được refactor theo hướng lấy cảm hứng từ microkernel, nhằm giảm codebase và chuyển các tác vụ nhạy cảm về bảo mật ra ngoài. Việc cô lập không gian bộ nhớ được Secure Page Table Monitor(SPTM) hỗ trợ, còn các tác vụ như ký mã, xác minh quyền hạn, Developer Mode, Restricted Execution Mode thì do Trusted eXecution Monitor(TXM) đảm nhiệm
Có hơn 150 CVE liên quan đến TrustZone: https://www.cve.org/CVERecord/SearchResults?query=trustzone
Google cũng đã triển khai pKVM dùng ảo hóa lồng nhau bằng phần cứng trên Pixel từ vài năm trước, và còn đưa lên Linux mainline cả phần mã hạ quyền TrustZone theo kiểu phối hợp so với pKVM L0. Tuy vậy, ngoài VM Debian “Linux Terminal” thì họ chưa công bố tính năng phòng thủ nào tận dụng pKVM/AVF
Ban đầu tác giả đoán là dùng TrustZone, nhưng có vẻ exclave cũng có thể dùng mức đặc quyền SPTM và GXF(Guarded Execution) hiện có. Nếu đúng vậy thì ngoài yêu cầu về RAM và công sức phát triển, có thể không có lý do căn bản nào khiến nó không hỗ trợ được từ iPhone 13 trở lên. Dĩ nhiên đây vẫn là một khối lượng công việc khổng lồ ngay cả với Apple
Có vẻ Steve thực sự tin rằng “laptop là nhật ký cá nhân của mỗi người”, và Apple có trách nhiệm bảo vệ điều đó
Có lẽ Tim cũng đã không thể trở thành CEO nếu không chia sẻ niềm tin ấy với Steve. Nghe có vẻ lạ, nhưng tôi thực sự nhớ Steve
https://www.youtube.com/watch?v=Ij-jlF98SzA
Tôi cũng không thích cách Apple tiếp tục kiểm soát thiết bị và thị trường phần mềm ngay cả sau khi chủ sở hữu thiết bị đã thay đổi. Tôi tránh hệ sinh thái kiểu này một cách triệt để, và không hiểu vì sao nhiều “hacker” tự xưng lại phát cuồng với những hệ thống đã bị hàn kín nắp capo như thế
Nhiều điều Jobs từng nói đến giờ vẫn còn khiến tôi thấy thấm. Gần đây Apple phát hành screensaver “classic Mac”, và nó cho thấy GUI của Mac nguyên bản từng được thiết kế tỉ mỉ đến mức nào. Có lẽ chẳng ai nhớ thời mà lỗi ứng dụng có thể làm sập cả hệ điều hành, nhưng tôi vẫn mong Apple ngày nay giữ được sự ám ảnh với chi tiết như thời đó
Nói hơi thẳng thì ở đó dường như có yếu tố thần bí hoặc tôn giáo. Nó giống như sự khao khát một người đàn ông hiền từ như thần thánh có thể ban phát phép màu, lời sấm truyền, những sản phẩm đẹp đẽ và nghi lễ, cùng một tương lai mượt mà, sung túc và vĩnh cửu. Cảm giác như một “lỗ hổng” tinh thần nào đó đang được lấp đầy
Tôi không có ý hạ thấp những người có thiện cảm với Jobs hay LLM, chỉ là đang chia sẻ điều mình quan sát được
Thảo luận liên quan: “Apple rearranged its XNU kernel with exclaves” https://news.ycombinator.com/item?id=43314171
Ngoài ra, việc các bản phát hành giữa kỳ của macOS đưa vào những tính năng để chuẩn bị cho bản major tiếp theo cũng không phải hiếm, và exclave có thể là tính năng mang tính nền tảng và quan trọng nhất được thêm vào Sonoma 14.4, iOS 17.4, iPadOS 17.4 và watchOS 10.4
https://eclecticlight.co/2024/08/20/sonomas-unfinished-busin...
Việc dùng security exclave để điều khiển LED camera vật lý khá bất ngờ, và có vẻ như là một thiết kế quá mức phức tạp cho một việc đơn giản
Có lẽ chỉ cần thêm một chút logic phần cứng chuyên dụng rất nhỏ vào mô-đun camera là đủ. Chỉ cần gate ngõ vào/ra số hoặc nguồn camera, rồi thêm pulse stretcher để LED luôn sáng tối thiểu vài giây mỗi lần nhằm ngăn các cuộc tấn công bật tắt thật nhanh logic camera
Cũng nên có mạch tương tự cho micro cùng một LED vật lý màu riêng. Chỉ một chấm hiển thị bằng phần mềm trên màn hình thì chưa đủ
Bộ điều khiển LED cũng cần biết độ sáng màn hình hoặc thông tin từ cảm biến ánh sáng môi trường. Nó phải đủ sáng để nhìn thấy dưới ánh nắng trực tiếp, nhưng mức sáng đó có thể gây khó chịu trong môi trường tối và còn cản trở việc dùng camera bình thường
Nếu bạn tin rằng SK là an toàn, thì dùng nó sẽ đơn giản hơn mà còn làm tốt hơn. Nếu cho rằng SK không an toàn thì mọi giả định cũng sụp đổ
Apple nhìn chung không cố tình làm mọi thứ phức tạp nếu không có lý do chính đáng
https://news.ycombinator.com/item?id=42260379
Tôi tự hỏi tác giả bài này là ai. Đây là một bài viết rất tinh tế và chỉn chu, ngay cả từ góc nhìn của người đã theo dõi exclave thì nó cũng được sắp xếp rất tốt
Tôi tự hỏi điều này so với Virtualization Based Security của Linux thì thế nào
Theo trang có video, tính năng bảo mật này có thể tăng cường kernel và bảo đảm rằng ngay cả khi kernel bị xâm phạm thì các tài nguyên kernel quan trọng vẫn không bị sửa đổi. VBS dùng ảo hóa phần cứng và hypervisor Hyper‑V để tạo một môi trường ảo cách ly chạy ở mức độ tin cậy cao hơn là Virtual Trust Level 1 (VTL1), và VTL1 có Secure Kernel riêng, tách biệt khỏi guest kernel
https://lssna24.sched.com/event/1aIeD/linux-virtualization-b...
Exclave có vẻ quan trọng nhưng là một bước trung gian. Apple đang làm cho XNU bớt rủi ro hơn, nhưng vẫn đang đi theo hướng phòng thủ thay vì chấp nhận hoàn toàn cấu trúc microkernel
Nếu phải đặt cược, tôi nghĩ exclave là cây cầu dẫn tới một thay đổi lớn hơn. Có thể là một hệ điều hành mô-đun hơn như Fuchsia, hoặc một mô hình bảo mật kiểu CHERI cưỡng chế tính an toàn bộ nhớ ở cấp phần cứng
Apple đang dẫn đầu về bảo mật hệ điều hành tiêu dùng, nhưng exclave có vẻ giống một cải tiến kiểu chắp vá hơn là kết quả của việc suy nghĩ lại hoàn toàn thiết kế hệ thống. Dù vậy, đây vẫn có thể là thay đổi bảo mật lớn nhất trong thiết kế hệ điều hành phổ thông suốt 10 năm qua, và phải vài năm nữa mới thấy hết tác động tổng thể của nó
Khi Mach được tạo ra, bảo mật chưa phải là mối quan tâm lớn như bây giờ. Hiệu năng máy móc hiện nay cao đến mức phần overhead do giao tiếp liên tiến trình của microkernel tạo ra có thể đã trở nên không đáng kể
Tôi không quen với nội dung ở mức này, nhưng nhìn qua thì có vẻ có thể tấn công chính enclave để leo thang lên quyền cao hơn cả kernel. Tôi thắc mắc liệu mảnh phần cứng này có giống bộ đồng xử lý không
Vì vậy đúng là nếu exploit được nó thì bạn sẽ có quyền truy cập mà kernel không có. Nhưng đó chính là chủ đích. Mục tiêu là ngay cả khi kernel bị xuyên thủng thì nó vẫn không thể chạm tới vùng nhạy cảm đó
Theo tài liệu của Apple, SPTM được nói là không được dùng, nên tôi tự hỏi điều này sẽ ảnh hưởng thế nào đến bảo mật macOS: https://support.apple.com/guide/security/operating-system-in...
Ở thời điểm hiện tại, những exclave hiện có như cái dùng để hiện chỉ báo camera có lẽ không áp dụng nhiều cho macOS vì MacBook đã có phần cứng chuyên dụng cho việc đó. Nhưng về sau có thể sẽ có các exclave áp dụng cho macOS
Nói cách khác, điều đó không có nghĩa là macOS không dùng SPTM. Nó có nghĩa là macOS không dùng SPTM cho mục đích ngăn chạy mã chưa ký. macOS phải cho phép người dùng chạy cả mã chưa ký sau khi đi qua vài bước nhất định
Tò mò liệu nhà phát triển ứng dụng có thể dùng Exclave hay không. Điều gây khó chịu là Apple thường tạo ra những tính năng nội bộ mới rất ấn tượng rồi lại khóa hoàn toàn không cho nhà phát triển dùng. Kết quả là các ứng dụng như ngân hàng, ví và trình nhắn tin bảo mật vẫn phải tiếp tục chạy trong không gian người dùng kém an toàn hơn
Một ví dụ đơn giản là macOS gần đây chạy mọi ứng dụng trong sandbox ngay cả khi ứng dụng không chủ động chọn làm vậy. Sandbox này ngăn các ứng dụng sửa tệp của nhau, trong khi trước đây đây là một điểm yếu lớn của hệ thống bảo mật. Lý do là chữ ký bundle chỉ được kiểm tra ở lần chạy đầu tiên chứ không được kiểm tra ở mỗi lần chạy
Hiện tại đây cũng là cấu trúc kernel-đối-kernel, nên nếu có hỗ trợ bên thứ ba thì khả năng cao cũng chỉ giới hạn ở việc triển khai những thứ như trình điều khiển thiết bị bảo mật. Tuy vậy, Apple từ lâu đã muốn đẩy driver bên thứ ba ra không gian người dùng thay vì để trong hypervisor. Xét việc quá trình chuyển đổi này diễn ra song song với phát triển exclave, có vẻ họ sẽ không chuyển hướng sang cho phép nhà phát triển driver bên thứ ba dùng exclave
Việc Apple ổn định hóa rất kỹ các tính năng nền tảng bị ép ở mức kernel này trong nội bộ trước khi công khai ra bên ngoài là chuyện thường thấy. Xác thực con trỏ của arm64e cũng là một ví dụ tương tự