- 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
Ý 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
Lỗ hổng được mô tả không biến thiết bị thành "cục gạch"
17.500 USD là mức khá ổn
Công việc thật xuất sắc
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"
Tôi nhớ thời IRC ngày xưa
Đ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ự
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
Bài này thật sự rất đáng đọc
notify_postgiờ ra sao