2 puan yazan GN⁺ 2025-04-28 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2025-04-28
Hacker News görüşleri
  • Bu API'nin, ayarlarla ve bildirim gönderileriyle ilgili tüm kullanımlar için izin gerektirmemesi ilginç

    • Cihaz üzerinde süreçler arasında 64 bitlik bilgiyi paylaşmanın bir yolu var
    • Uygulamalar arasında kullanıcı takibi için uygun bir özellik
    • Sistem değeri saklıyor ve hangi uygulamadan geldiğini takip etmiyorsa, uygulama silinip yeniden yüklendikten sonra bile kalıcı depolama mümkün olabilir
    • IDFA veya IDFV sıfırlamalarını aşmak için kullanılabilir
  • Açıklanan açık cihazı "brick" haline getirmiyor

    • Kurtarma için tethered restore gerekiyor
  • 17.500 dolar oldukça iyi

    • Blog yazılarında genelde miktar düşüktür ya da şirket açığı düzeltip ödül vermez
    • Apple bu konuda 2019'dan beri iyileşti
  • Harika bir çalışma

    • Basit, etkili ve güçlü bir açık
    • 20 yıl önce üniversiteden bir arkadaşımla birlikte teorisini kurduğumuz kusursuz sunucu açığını hatırlatıyor
    • 2 yıl önce CVE-2022-23093 olarak bulundu
  • 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

    • Herhangi bir süreç bildirim göndererek sistemi bu modda olduğuna inandırabiliyordu
  • Eski IRC günlerini özlüyorum

    • Küçük bir değişikliğin teknolojide ne kadar tehlikeli olabileceğini hatırlatıyor
    • Güvenliğin gerçekten önde gidip gitmediğini, yoksa sürekli sızıntıları kapatmakla mı uğraştığını merak ediyorum
  • Bu, üçüncü taraf bir uygulamanın kendi bildirim mekanizması varsa benzer şekilde taklit edilebileceğini ima ediyor

    • Cihazı brick hale getirmese de başka davranışları tetikleme ihtimali olabilir
  • Kullanıcının kötü niyetli uygulamayı aktif olarak yüklemesi gerektiği için önceliği düşük olabilir

    • Ancak bu zaman çizelgesi güven vermiyor
  • Bu yazı müthiş bir okumaydı

    • Çok eski bir API'nin ne kadar güçlü olabildiğini gösteriyor
    • iOS'un tüm düşük seviye durumlarını tetikleyen harika bir demoydu
    • notify_postun şimdi ne durumda olduğunu merak ediyorum