1 điểm bởi GN⁺ 2025-03-10 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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 modekernel 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

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_table nhậ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ọi task_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
  • 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

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-domain hoặc là task Conclave Manager liên quan
    • EXCLAVES_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ền
    • EXCLAVES_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
  • 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.h cho 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.FrameMint rồi thực hiện các lời gọi liên quan tới framemint_framemint__init(), framemint_framemint_populate(), sau đó chuyển sang trạng thái EXCLAVES_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
  • 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ập
    • SK_IO: chỉ dành cho SK, XNU không thể truy cập
    • SK_SHARED_RO: SK và XNU cùng chia sẻ nhưng XNU chỉ đọc
    • SK_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

 
GN⁺ 2025-03-10
Ý 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

    • Phần lớn CVE của TrustZone liên quan đến phần mềm dễ bị tấn công mà nhà sản xuất đưa vào môi trường bảo vệ của TrustZone. Trong số đó có không ít phần mềm rất tệ, còn báo cáo về lỗ hổng phần cứng thì cực kỳ ít
    • Tác giả đã đăng bài tiếp theo cùng sơ đồ đã chỉnh sửa: https://randomaugustine.medium.com/more-speculation-on-excla...
      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ừ góc nhìn của người làm thiết bị công nghiệp và khoa học, các thiết bị thiên về người tiêu dùng của Apple hoàn toàn vô dụng. Việc khóa chặt một thiết bị tính toán đủ năng lực như vậy trông thật lãng phí
      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ế
    • Jobs là người gây chia rẽ và thường khá cáu kỉnh, nên đôi khi tôi cũng tự hỏi tại sao lại phải nhớ nhung một tỷ phú công nghệ. Dù vậy, tôi vẫn có cảm giác mang ơn Jobs và những con người ở Apple đã góp phần tạo ra các sản phẩm tôi yêu thích như Mac, iPod và iPad
      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 đó
    • Khi nhìn thấy tình cảm chân thành dành cho Jobs, tôi tự hỏi liệu có điều gì tương tự đang diễn ra khi mọi người dùng và trải nghiệm LLM hay không
      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
    • Tôi hiểu vì sao bài viết về exclave khiến bạn nghĩ đến Steve, nhưng không rõ bằng cách nào chuyện này lại dẫn sang chuyện kia. Rất mong bạn có thể giải thích
  • Thảo luận liên quan: “Apple rearranged its XNU kernel with exclaves” https://news.ycombinator.com/item?id=43314171

    • Theo phần tóm tắt của bài đó, exclave là tài nguyên cụ thể được tách khỏi XNU, tức kernel chính, nên ngay cả khi kernel bị xâm phạm thì cũng không thể truy cập được
      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 đủ

    • Phức tạp hơn tưởng tượng. “Camera” là một tập hợp của nhiều linh kiện. Có thể bạn muốn lấy nguồn của cảm biến CMOS làm mốc, nhưng lại có nhiều mức điện năng như chờ, ngủ, nhàn rỗi. Vì vậy mạch phần cứng có lẽ không chỉ phải biết điện áp mà còn cả dòng điện. Hoặc phải parse các thông điệp mức cao hơn như I2C để đọc thay đổi chế độ nguồn
      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 đổ
    • Đây không phải là thiết kế quá mức. Nó cần thiết vì nghiên cứu này và kết quả từ các nhà nghiên cứu khác như Charlie Miller
      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 đây là thiết kế quá mức, hay là lời giải cho một điều gì đó được phát hiện khi xuất xưởng số lượng điện thoại cực lớn. Tôi chưa từng nghĩ về camera như một vector bảo mật, nhưng có thể Apple lại nhìn như vậy
    • Có thêm bối cảnh liên quan chi tiết hơn ở đây: https://news.ycombinator.com/item?id=42260379
    • Có vẻ không chỉ LED camera, mà cả các chỉ báo trên màn hình như chấm cam, xanh lá và xanh dương xuất hiện trên thanh menu khi ứng dụng truy cập micro, camera hoặc ghi màn hình cũng có liên quan
  • 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 chạy ở một mức độ tin cậy song song
  • 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ó

    • Có vẻ như là quay lại cách làm microkernel ngày trước. Chỉ là lần này phản ánh các lời giải hiện đại và những yêu cầu mới
      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

    • Exclave không phải phần cứng, mà là phần mềm cách ly xử lý một số tác vụ nhạy cảm nhất định mà người ta không muốn kernel có thể truy cập
      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

    • Tôi nghĩ cần đọc lại chú thích đó. Nó nói rằng Page Protection Layer (PPL) và Secure Page Table Monitor (SPTM) thực thi việc chạy mã đã ký và đáng tin cậy trên mọi nền tảng trừ macOS. macOS được thiết kế để chạy mã tùy ý. Các thuộc tính bảo mật khác, bao gồm bảo vệ page table, đều có mặt trên mọi nền tảng được hỗ trợ
      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

    • Không hẳn vậy. Không gian người dùng của Apple cũng đã liên tục 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
    • Theo cách thiết kế hiện tại thì có vẻ là không được. Exclave được tích hợp vào toàn bộ hệ điều hành và được khởi động như một phần của quá trình boot nên mang tính tĩnh tương đối. Vì lý do bảo mật, mối quan hệ giữa các thành phần này cũng nhiều khả năng được cố định tĩnh
      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ự
    • Hiện tại là không được