2 điểm bởi GN⁺ 2025-04-28 | 1 bình luận | Chia sẻ qua WhatsApp
  • Giới thiệu một trường hợp có thể biến iPhone thành cục gạch bằng cách khai thác đặc tính và lỗ hổng của hệ thống Darwin Notification
  • Lỗ hổng này được đăng ký là CVE-2025-24091, và người báo cáo đã nhận tiền thưởng lỗi $17,500 (25 triệu won)
  • Có thể làm tê liệt toàn bộ thiết bị iOS bằng cách lợi dụng việc có thể gửi thông báo ở cấp hệ thống mà không cần quyền đặc biệt
  • Đã xác nhận khả năng thực hiện tấn công từ chối dịch vụ (DoS) bằng cách dùng một dòng mã đơn giản để ép vào chế độ "Restore in Progress" và gây ra vòng lặp khởi động lại
  • Lỗ hổng đã được khắc phục qua bản cập nhật iOS 18.3, bằng cách yêu cầu quyền hạn bị giới hạn (entitlement) để gửi các Darwin Notification quan trọng

Darwin Notifications

  • Darwin Notifications là cơ chế ở cấp CoreOS dùng để trao đổi các thông điệp đơn giản giữa các tiến trình trên iOS và macOS
  • Cấu trúc này dùng notify_post để phát sự kiện, notify_register_dispatch để nhận sự kiện, và có thể đọc hoặc ghi giá trị trạng thái (state)
  • Có thể gửi và nhận mà không cần quyền đặc biệt, và không có quy trình kiểm tra bảo mật
  • Nhiều thành phần khác nhau của hệ thống đã phụ thuộc vào API cũ này

Tổng quan lỗ hổng

  • Mọi tiến trình trong hệ điều hành Apple đều có thể nhận Darwin Notifications, và không cần quyền đặc biệt
  • Tồn tại một lỗ hổng kiến trúc khiến ngay cả ứng dụng bị sandbox cũng có thể gửi Darwin Notification
  • Do lượng dữ liệu truyền tải bị hạn chế nên rủi ro rò rỉ dữ liệu nhạy cảm không lớn
  • Nhưng nếu phát một số thông báo hệ thống quan trọng cụ thể (ví dụ: thông báo bắt đầu khôi phục), nó có thể ảnh hưởng đến toàn bộ hệ thống
  • Từ đó đã phát hiện khả năng thực hiện tấn công từ chối dịch vụ (DoS)

EvilNotify và VeryEvilNotify

  • Thông qua ứng dụng EvilNotify, có thể cưỡng ép hệ thống tạo ra nhiều phản ứng khác nhau
    • Hiển thị biểu tượng phát hiện chất lỏng
    • Chặn Wi‑Fi và buộc dùng mạng di động
    • Chặn cử chỉ ở màn hình khóa và Trung tâm điều khiển
    • Chuyển vào Lost Mode của Find My v.v.
  • Đặc biệt, chỉ với một dòng notify_post("com.apple.MobileSync.BackupAgent.RestoreStarted") là có thể đẩy thiết bị vào trạng thái Restore in Progress
  • Chế độ này thất bại vì thiết bị thực tế không được khôi phục, và cách giải quyết duy nhất là nhấn nút "Khởi động lại"
  • Ứng dụng VeryEvilNotify dùng tiện ích mở rộng widget để có thể tự động khởi động lại cuộc tấn công ngay cả sau khi reboot
  • Tiện ích mở rộng widget được hệ thống chạy định kỳ trong nền, gọi hàm notify_post để lặp lại việc kích hoạt chế độ "đang khôi phục"
  • Kết quả là nó có thể tạo ra hiệu ứng biến thiết bị thành cục gạch hoàn toàn

Dòng thời gian và đăng ký CVE

  • 26/6/2024: Gửi báo cáo sự cố ban đầu cho Apple
  • 27/9/2024: Nhận được thông báo từ Apple rằng biện pháp giảm thiểu đang được triển khai
  • 28/1/2025: Hoàn tất khắc phục và xác nhận đủ điều kiện nhận bug bounty
  • 11/3/2025: Chính thức được đăng ký là CVE-2025-24091 và được sửa trong iOS/iPadOS 18.3
  • Tiền bug bounty được chi trả là 17.500 USD

Ứng phó và biện pháp giảm thiểu

  • Việc gửi Darwin Notification nhạy cảm đã được thay đổi để yêu cầu quyền hạn bị giới hạn (entitlement)
  • Ví dụ, thông báo com.apple.MobileBackup.BackupAgent.RestoreStarted trước đây đã được đổi thành com.apple.private.restrict-post.MobileBackup.BackupAgent.RestoreStarted
  • Các tiến trình nhận thông báo cũng sử dụng tên mới để chặn việc gửi trái phép từ ứng dụng không được cấp quyền
  • Cơ chế quyền hạn giới hạn này bắt đầu được áp dụng từ iOS 18.2 beta 2, và được hoàn tất đầy đủ trong iOS 18.3

1 bình luận

 
GN⁺ 2025-04-28
Ý kiến trên Hacker News
  • Điều thú vị là API này không yêu cầu quyền cho mọi mục đích sử dụng liên quan đến cài đặt và đăng thông báo

    • Có một cách để chia sẻ thông tin 64-bit giữa các tiến trình trên thiết bị
    • Đây là tính năng phù hợp cho việc theo dõi người dùng giữa các ứng dụng
    • Nếu hệ thống lưu giá trị và không theo dõi nó đến từ ứng dụng nào, thì có thể tạo ra bộ nhớ lưu trữ bền vững ngay cả sau khi gỡ và cài lại ứng dụng
    • Có thể dùng để lách việc đặt lại IDFA hoặc IDFV
  • Lỗ hổng được mô tả không biến thiết bị thành "cục gạch"

    • Để khôi phục thì cần thực hiện tethered restore
  • 17.500 USD là mức khá ổn

    • Các bài đăng blog thường chỉ nhận được số tiền nhỏ, hoặc công ty vá lỗ hổng nhưng không trả thưởng
    • Apple đã cải thiện ở khía cạnh này kể từ năm 2019
  • Công việc thật xuất sắc

    • Đây là một lỗ hổng đơn giản, hiệu quả và mạnh mẽ
    • Nó gợi nhớ đến một lỗ hổng máy chủ hoàn hảo mà tôi từng cùng bạn đại học đưa ra về mặt lý thuyết cách đây 20 năm
    • Nó đã được phát hiện cách đây 2 năm với mã CVE-2022-23093
  • Tôi có thể tưởng tượng đó hẳn là một ngày cực kỳ căng thẳng ở văn phòng khi đội ngũ cốt lõi của iOS xem xét việc này

  • Chỉ với một dòng mã đã có thể đưa thiết bị vào chế độ "đang khôi phục"

    • Bất kỳ tiến trình nào cũng có thể gửi thông báo để đánh lừa hệ thống rằng nó đang ở chế độ đó
  • Tôi nhớ thời IRC ngày xưa

    • Điều này nhắc lại rằng một thay đổi nhỏ có thể nguy hiểm với công nghệ đến mức nào
    • Tôi tự hỏi liệu bảo mật có thực sự đang đi trước, hay chỉ đang liên tục bịt các lỗ rò rỉ
  • Điều này ngụ ý rằng nếu ứng dụng bên thứ ba có hệ thống thông báo riêng, nó cũng có thể bị giả mạo theo cách tương tự

    • Có lẽ không thể biến thiết bị thành cục gạch, nhưng có khả năng gây ra các hành vi khác
  • Vì người dùng phải chủ động cài ứng dụng độc hại nên mức độ ưu tiên có thể thấp

    • Tuy nhiên, tiến độ xử lý như vậy không tạo được nhiều niềm tin
  • Bài này thật sự rất đáng đọc

    • Nó cho thấy một API rất cũ đã mạnh mẽ đến mức nào
    • Đây là một màn demo ấn tượng khi kích hoạt toàn bộ các trạng thái cấp thấp của iOS
    • Tôi tò mò không biết notify_post giờ ra sao