1 puan yazan GN⁺ 2025-05-25 | 2 yorum | WhatsApp'ta paylaş
  • tachy0n, iOS 13.0~13.5 için yayımlanmış son 0day jailbreak exploit örneğidir
  • Bu hata, lio_listio sistem çağrısında Lightspeed olarak adlandırılan bir yarış durumu (race condition) olup, çekirdek LPE (yetki yükseltme) zafiyetinin istismarıdır
  • Spice ve unc0ver dahil çeşitli jailbreak projelerinde bu zafiyetin gerçekten kullanıldığı örnekler bulunur; yazı, zafiyetin istismar yöntemi ile bellek yönetimi sorunlarını hedef alan hack tekniklerini açıklar
  • Apple, bu exploit yayımlandıktan sonra yama ve regresyon testleri uyguladı; ayrıca daha güçlü çekirdek nesnesi ayrımı (Zone, kheap vb.) ve pointer koruma özelliklerini büyük ölçüde güçlendirdi
  • Sonrasında iOS 14'ten itibaren jailbreak ve çekirdek exploit ortamı temelden değişti; artık kamuya açık çekirdek exploit bulunmayan bir duruma gelindi

0. Giriş

  • tachy0n, iOS 13.0'dan 13.5'e kadar geçerli olan eski bir exploi̇ttir
  • 23 Mayıs 2020'de unc0ver v5.0.0 içinde 0day olarak yayımlandı ve Apple yalnızca 1 hafta içinde acil yama çıkardı
  • Söz konusu zafiyet daha önce 1day olarak kullanılmış olduğundan, exploit tekniği açısından anlamlı bir örnek olarak değerlendirilir
  • Bu yazı, zafiyetin kaynağını ve nasıl keşfedildiğini ayrıntılı biçimde açıklar

1. Lightspeed

  • Bu zafiyet, Synacktiv'in duyurduğu Lightspeed hatasıdır (CVE-2020-9859 vb.); lio_listio syscall'ında asenkron I/O bağlamı belleği serbest bırakılırken yarış durumu sorunu oluşur
  • Bellekte double free koşulu oluşturmak için I/O işlemlerinin zamanlaması ayarlanır; iki kez nesne serbest bırakma üzerinden aynı bellek alanında birden fazla nesnenin üst üste bindirilmesiyle kullanılabilir
    • Çekirdekteki kalloc.16 zone'undaki dinamik bellek tahsis yapısı exploit için kullanılır
    • Özünde, başarı olasılığını artırmak için yarışın birçok kez tekrarlanması yöntemidir

2. Spice

  • Bu exploit geçmişte team Jake Blair tarafından geliştirilen Spice jailbreak'inde kullanıldı
  • racoon ve uygulamada farklı exploit varyantları uygulanmıştı; ana hedef mach port sahteciliği idi
  • iOS 11.x döneminde PAN (Protection Against Null dereference) atlatması kolaydı ve çekirdek infoleak ile sandbox escape ile birleştirilen çeşitli hack teknikleri denendi
  • racoon tarafında IOKit erişim kısıtı nedeniyle OSUnserializeXML kullanılarak çekirdekte ilgili zone için (spray) hedef nesneler oluşturuldu
  • sysctl_procargsx, çekirdekte başlatılmamış bellek sızıntısı, sandbox politikaları gibi ayrıntı farkları ve sonraki teknik gelişmeler de anlatılır

3. unc0ver

  • unc0ver uygulanırken exploit yapısı, A8~A13 dahil geniş bir SoC yelpazesinde çalışacak şekilde tasarlandı
  • OSData nesnelerinin iç içe geçmesi ve overlap izlenir; doğru anda istenen nesne serbest bırakılıp yeniden tahsis edilerek bellek alanı denetlenir
  • IOMemoryDescriptor gibi çekirdek nesneleri kullanılarak kullanıcının denetlediği veri tampon adresi açığa çıkarılır ve çekirdekten doğrudan okuma/yazma gerçekleştirilir
  • iOS 13 çekirdek bellek tahsisçisi politikalarındaki zayıflıklar, zone_require atlatması gibi yöntemlerle uygun biçimde kullanılır
  • Exploit'in genel yapısının ayrıntılı uygulaması, yayımlanmış GitHub deposu olan tachy0n içinde görülebilir

4. Sonraki etkiler

  • 0day exploit'in yayımlanması, güvenlik topluluğu ve Apple içinde büyük yankı uyandırdı
    • Gerçek exploit yayımlandıktan yalnızca 4 saat sonra Project Zero ve Synacktiv tarafından ayrıntılı analiz ve karşı önlemler geliştirildi
  • Apple, yamadan sonra bu zafiyet için XNU'ya resmi regresyon testleri ekledi; böylece daha temel bir güvenlik stratejisini güçlendirme yönüne geçti
  • iOS 14'ten itibaren allocation alanı ayrımı, secure object guard, PAC (pointer authentication code), kheap yapısı vb. büyük değişiklikler getirilerek exploit geliştirme zorluğu ciddi biçimde artırıldı
  • Artık exploit stratejisinin kendisi daha önemli hale geldi ve kamuya açık bilgi ile özel araştırma arasındaki fark büyüdü; iOS 17~18 içinse kamuya açık çekirdek exploit hiç yok

5. Sonuç

  • Bu, iOS güvenliği ve jailbreak alanının 5 yıl içinde dramatik biçimde değiştiğini açıkça gösteren bir örnektir
  • Jailbreak/exploit topluluğunun, araştırmacıların ve Apple'ın teknik yöneliminin nasıl değiştiğine dair içgörü sunar
  • IL'in paylaşıldığı ve meydan okunduğu dönem artık geride kaldı; iOS 14 sonrasında exploit bilgisinin paylaşımı belirgin biçimde azaldı

Referans ve iletişim

2 yorum

 
ndrgrd 2025-05-26

Apple’ın donanımı harika olabilir ama yazılımı kullanıcıyı tasmalı tutma niyetiyle dolu.
Kendi yapıp derlediğiniz bir uygulamayı yalnızca kendi cihazınızda çalıştırmak isteseniz bile 100 dolarlık bir abonelik gerekiyor.

Küçük ve orta ölçekli açık kaynak uygulamaları kullanıp kendisi derleyerek kullanan bir geliştiriciyseniz,
Apple cihazlarında açık istismar edip jailbreak yaparak sideload etmektense doğrudan Android kullanmak daha rahat.

 
GN⁺ 2025-05-25
Hacker News yorumları
  • Bana göre onun Apple gibi dev bir şirketi yenmesinin sırrı basit ama sıkıcı ve tekrarlı bir işti: regresyon testi
    SockPuppet'ın geçmişte iOS 12 döneminde de jailbreak için kullanıldığından ve Project Zero'dan Ned Williamson'ın bunu Apple'a bildirmesiyle iOS 12.3'te yamalandıktan sonra iOS 12.4'te yeniden ortaya çıktığından bahsediliyor
    Muhtemelen Apple XNU'yu ayrı bir branch olarak fork'ladığı için ilgili yamayı atladı; asıl büyük sorun ise bu tür yeni/eski açıklar için temelde hiç regresyon testi yapılmamış olması
    Ben de bilinen birkaç 1-day açığı için bizzat regresyon testini otomatikleştirip çalıştırdım ve hemen başarıyla açık buldum
    Linux, FreeBSD, OpenWRT, OpenSSH gibi çeşitli açık kaynak projelerinde de yeni sürümlerde eski açıklar için regresyon testleri çalıştırılıp çalıştırılmadığını merak ediyorum
    Her açığı otomatik bir biçimde yazıp CI içinde kaynak ayırarak çalıştırma imkânı varsa, bunun getirisi fazlasıyla yüksek olur diye düşünüyorum
  • Regresyon testinin, yani düzeltilen bir hatanın yeniden ortaya çıkmadığını kontrol etmenin, QA'in standart prosedürü olduğu vurgulanıyor
    20 yıl önce üniversite dönemimde Mozilla'da gönüllü QA yaparken yüzlerce regresyon testi vakası vardı
    Çoğu render/layout ve JS engine hatasıydı; minimal bir test case oluşturunca bunu doğrudan CI pipeline'ına eklemek mümkündü
    Hataların kendisi kaçınılmaz olabilir ama daha önce düzeltilmiş bir hatanın yeniden ortaya çıkması zaman ve para israfının en kötüsü; kaliteye önem veren kurumlar mutlaka regresyon testine ciddi yatırım yapar
    Ne yazık ki QA'i görmezden gelen ya da bunu sadece dış kaynakla çözmeye çalışan, düzgün şekilde önemsemeyen birçok kurum da var
    Apple'ın jailbreak ile ilgili regresyon testi olmamasını anlamıyorum
    Mozilla gibi yerlerde uzun zamandır Tinderbox ve Bugzilla gibi araçlarla harika QA ve CI/CD ortamları kurulmuştu; DevOps kavramı ortaya çıkmadan önce bile bunun yaygın olduğunu sanıyordum ama aslında öyle olmadığını sonradan fark ettim
  • Adını hatırlamadığım bir açık kaynak projesinde her issue için test case bulunduğuna dair bir örnek veriliyor
    Binlerce test case vardı; sanırım Sqlite'tı
    Bir patch'i backport etmezseniz, o testin de birlikte backport edilmemesi ihtimalinin yüksek olduğu ekleniyor
  • Birçok kurumda güvenlik meselelerinin ayrı bir workflow ve farklı tür bir bug olarak ayrıştırılması, sorunun asıl kökeni
    Sonuçta Conway's law güvenlik ile özellik geliştirme arasında da aynen geçerli
    Bu yüzden build/release sürecinde regresyon testleri iyi kurulmuş kurumlarda bile, iç organizasyon yapısı nedeniyle güvenlikle ilgili meselelerin arada kaynaması olası
  • “Bu tür regresyon testlerini başka projeler de yapıyor mu?” sorusuna karşılık,
    istihbarat kurumlarının (G10, Rusya, Çin, Kuzey Kore vb.) ve birçok özel grubun elbette açıklar için bu şekilde regresyon testleri yapıyor olduğu görüşü dile getiriliyor
  • Ben bir güvenlik araştırmacısı değilim ama bu örnek kişisel olarak bana da çok tanıdık geliyor
  • “heap ayrımıyla ilgili bilgiyi, türlü mitigation tekniğini unutun” gibi ifadelere dair
    Bir arkadaşınızla yabancı dilde konuşurken bir anda beyin cerrahisi ya da nükleer fizik gibi son derece uzmanlık isteyen bir konuya geçildiğinde zihnin boşalmasına benzetiliyor
    Geçmişte bir çelik fabrikası onarımıyla ilgili konuşmayı tercüme etmeye çalıştığım anı aklıma geldi
    Jailbreak'in ortadan kaybolmuş olmasına üzülüyorum; jailbreak'li iPad'imi özellikle faydalı bir şey için kullanmamış olsam da, başlı başına eğlenceliydi
    Bugün olsa tethering uygulaması, UTM ve JIT çözümü kurmak isterdim
    SideStore umut verici görünüyor ve denemek istiyorum ama Apple hesabım geçmişte ücretli geliştirici hesabıydı ve 10 uygulama ID'sinin süresi dolmadığı için bu tür uygulamaları yüklememde kısıtlama var
    Ya yeni bir hesap açmam ya da yeniden ödeme yapmam gerekiyor
  • Eski iPhone 4'ümü jailbreak'li kullandığım bir dönem olmuştu
    Jailbreak olmadan iPhone'u ana telefon olarak kullanmak için hiçbir nedenim yoktu; sonunda Android'e geçtim
    O sıralarda Android temel özellikler açısından epey yetişmişti
  • Apple'ın artık jailbreak için bir milyon dolar ödül verdiğini duydum; bunun piyasada oluşan taban fiyat olduğu açıklanıyor
  • Aslında bu fiyat sınırı zaten 2015'te aşılmıştı; 1 milyon dolarlık vaka haberi paylaşılıyor
  • Jailbreak başarısı karşılığında Apple'dan birkaç milyon dolarlık ödül almak için nasıl iletişime geçilmesi gerektiği merak ediliyor
    Aracı bir broker üzerinden mi gidilmesi gerektiği, resmî bir e-posta ya da kanal olup olmadığı, yoksa bunun sadece ilk seviye destek içinde kaybolma riski taşıyıp taşımadığı soruluyor
  • İşte bu zaten piyasa fiyatı; ilgili haber bağlantısı da paylaşılıyor: Zerodium'un zero-day ödülleri
  • Eğer Apple'ın stratejisi doğruysa, root yetkisi elde etmenin tüm yollarını kapatarak jailbreak geliştiricilerinin ücretsiz bulduğu açıkları da Apple'ın kazanmış olduğu söyleniyor
  • Ama gerçekte durum böyle değil
    Yazıda da belirtildiği gibi, özel topluluklarda açıklar hâlâ tutuluyor ve Apple yamalamaya devam ediyor
    Sadece kamuya açık jailbreak'ler azalmış durumda
  • Bağlama göre kelimenin anlamı değişse bile, o slang'in ne anlama geldiğini yine de rahatça anlayamaz mısınız görüşü dile getiriliyor
  • Belki o kelimeyi ilk kez kendi ürettiğini sanmış olabilir ama aslında argo kullanım örneği zaten vardı