- Darwin Notification sisteminin özellikleri ve zayıflıkları kullanılarak iPhone'un kullanılmaz hale getirilebildiği bir vaka tanıtılıyor
- Bu açık CVE-2025-24091 olarak kaydedildi ve bildirimi yapan araştırmacı 17.500 dolar (25 milyon won) bug bounty ödülü aldı
- Özel bir yetki olmadan sistem düzeyinde bildirim gönderilebilmesi kötüye kullanılarak tüm iOS cihazı felç edilebiliyordu
- Basit bir tek satırlık kodla "Restore in Progress" modu zorla tetiklenip yeniden başlatma döngüsü oluşturulabilen bir hizmet engelleme (DoS) saldırısı mümkün olduğu doğrulandı
- Açık, iOS 18.3 güncellemesi ile kritik Darwin Notification gönderimleri için kısıtlı yetki (entitlement) gerektirecek şekilde düzeltilerek kapatıldı
Darwin Notifications
- Darwin Notifications, iOS ve macOS'ta süreçler arasında basit mesaj alışverişi için kullanılan CoreOS seviyesinde bir mekanizmadır
- Olaylar
notify_post ile duyurulur, notify_register_dispatch ile alınır ve durum değeri (state) okunup yazılabilir
- Özel bir yetki olmadan alım ve gönderim yapılabiliyordu, ayrıca güvenlik doğrulama süreci yoktu
- Sistemin çeşitli bileşenleri bu eski API'ye bağımlıydı
Açığın özeti
- Apple işletim sistemlerindeki tüm süreçler Darwin Notifications alabilir ve bunun için özel bir yetki gerekmez
- Sandbox içindeki uygulamaların da Darwin Notification gönderebilmesine izin veren yapısal bir boşluk vardı
- Aktarılabilen veri miktarı sınırlı olduğundan hassas veri sızıntısı riski büyük değildi
- Belirli kritik sistem bildirimleri gönderildiğinde (örn. geri yükleme başlangıç bildirimi) tüm sistem etkilenebiliyordu
- Bu da hizmet engelleme (DoS) saldırısı olasılığını ortaya çıkardı
EvilNotify ve VeryEvilNotify
- EvilNotify uygulaması ile çeşitli sistem tepkileri zorla tetiklenebiliyordu
- Sıvı algılama simgesi gösterme
- Wi‑Fi'yi devre dışı bırakıp hücresel bağlantıyı zorla kullanma
- Kilit ekranı ve Kontrol Merkezi jestlerini engelleme
- Find My Lost Mode'a geçiş gibi
- Özellikle,
notify_post("com.apple.MobileSync.BackupAgent.RestoreStarted") tek satırıyla cihaz Restore in Progress durumuna sokulabiliyordu
- Cihaz gerçekte geri yüklenmediği için bu mod başarısız oluyor ve tek çözüm "yeniden başlat" düğmesine basmak oluyordu
- VeryEvilNotify uygulaması, widget uzantısını kullanarak yeniden başlatmadan sonra da saldırının otomatik yeniden başlamasını sağlayacak şekilde geliştirildi
- Widget uzantısı sistem tarafından arka planda periyodik olarak çalıştırılıyor ve
notify_post fonksiyonunu çağırarak "geri yükleme sürüyor" modunu tekrar tekrar tetikliyordu
- Sonuçta cihazı tamamen kullanılamaz hale getirebilen bir etki yaratılabiliyordu
Zaman çizelgesi ve CVE kaydı
- 26 Haziran 2024: Apple'a ilk olay raporu gönderildi
- 27 Eylül 2024: Apple'dan azaltma önlemlerinin sürdüğüne dair mesaj alındı
- 28 Ocak 2025: Sorun çözüldü ve bug bounty uygunluğu kesinleşti
- 11 Mart 2025: Sorun resmi olarak CVE-2025-24091 olarak kaydedildi ve iOS/iPadOS 18.3'te düzeltildi
- Bug bounty tutarı olarak 17.500 ABD doları ödendi
Müdahale ve azaltma önlemleri
- Hassas Darwin Notification gönderimleri için artık kısıtlı yetki (entitlement) gerekiyor
- Örneğin mevcut
com.apple.MobileBackup.BackupAgent.RestoreStarted bildirimi com.apple.private.restrict-post.MobileBackup.BackupAgent.RestoreStarted olarak değiştirildi
- Bildirimi alan süreçler de yeni adı kullanacak şekilde güncellenerek yetkisiz uygulamaların izinsiz gönderim yapması engellendi
- Bu kısıtlı yetki sistemi iOS 18.2 beta 2 ile uygulanmaya başladı ve iOS 18.3 ile tamamen tamamlandı
1 yorum
Hacker News görüşleri
Bu API'nin, ayarlarla ve bildirim gönderileriyle ilgili tüm kullanımlar için izin gerektirmemesi ilginç
Açıklanan açık cihazı "brick" haline getirmiyor
17.500 dolar oldukça iyi
Harika bir çalışma
iOS çekirdek ekibi bunu incelediğinde ofiste ne kadar zor bir gün yaşandığını hayal edebiliyorum
Tek satır kodla cihazın "restore in progress" moduna girmesi sağlanabiliyordu
Eski IRC günlerini özlüyorum
Bu, üçüncü taraf bir uygulamanın kendi bildirim mekanizması varsa benzer şekilde taklit edilebileceğini ima ediyor
Kullanıcının kötü niyetli uygulamayı aktif olarak yüklemesi gerektiği için önceliği düşük olabilir
Bu yazı müthiş bir okumaydı
notify_postun şimdi ne durumda olduğunu merak ediyorum