- tachy0n adalah contoh publik dari eksploit jailbreak 0day terbaru untuk iOS 13.0~13.5
- Bug ini adalah race condition pada system call
lio_listio yang disebut Lightspeed, sebuah eksploitasi kerentanan kernel LPE (eskalasi hak istimewa)
- Kerentanan ini benar-benar digunakan dalam beberapa proyek jailbreak seperti Spice dan unc0ver, dan artikel ini menjelaskan metode eksploitasi serta teknik peretasan terkait isu manajemen memori
- Setelah exploit ini dipublikasikan, Apple menerapkan patch dan memperkenalkan regression test, serta sangat memperkuat isolasi objek kernel yang lebih kuat (Zone,
kheap, dll.) dan fitur perlindungan pointer
- Sejak iOS 14, lingkungan jailbreak dan kernel exploit berubah secara mendasar, sehingga tidak ada lagi kernel exploit publik yang tersedia
0. Pendahuluan
- tachy0n adalah exploit lama yang berlaku untuk iOS 13.0 hingga 13.5
- Pada 23 Mei 2020, exploit ini dipublikasikan sebagai 0day di unc0ver v5.0.0, dan hanya dalam 1 minggu Apple merilis patch darurat
- Kerentanan ini sebelumnya juga pernah digunakan sebagai 1day, sehingga dinilai sebagai kasus yang bermakna dari sisi teknik eksploitasi
- Ini adalah tulisan yang menguraikan secara rinci sumber kerentanan dan bagaimana kerentanan tersebut ditemukan
1. Lightspeed
- Kerentanan ini adalah bug Lightspeed (CVE-2020-9859, dll.) yang dipublikasikan oleh Synacktiv, di mana masalah race condition terjadi saat membebaskan memori konteks I/O asinkron dari syscall
lio_listio
- Dengan mengatur timing operasi I/O untuk menciptakan kondisi double free pada memori, exploit ini dapat menumpuk beberapa objek di area memori yang sama melalui dua kali pembebasan objek
- Exploit ini memanfaatkan struktur alokasi memori dinamis di zona
kalloc.16 milik kernel
- Pada dasarnya ini adalah metode yang meningkatkan peluang sukses dengan mengulangi race berkali-kali
2. Spice
- Exploit ini pernah digunakan di jailbreak Spice yang dibuat oleh team Jake Blair
- racoon dan app mengimplementasikan varian exploit yang berbeda, dan target utamanya adalah pemalsuan mach port
- Pada era iOS 11.x, bypass terhadap PAN (Protection Against Null dereference) relatif mudah, dan berbagai teknik peretasan dicoba dengan menggabungkannya dengan kernel infoleak serta sandbox escape
- Dalam kasus racoon, karena pembatasan akses IOKit, objek target untuk spray di zona kernel dibuat menggunakan OSUnserializeXML
- Perbedaan detail seperti sysctl_procargsx, kebocoran uninitialized memory di kernel, kebijakan sandbox, serta perkembangan teknis lanjutan juga dijelaskan
3. unc0ver
- Saat diterapkan di unc0ver, struktur exploit dirancang agar dapat bekerja di berbagai SoC yang luas termasuk A8~A13
- Dengan melacak penumpukan dan overlap objek OSData, exploit ini mengendalikan area memori dengan membebaskan/mengalokasikan objek yang diinginkan pada waktu yang tepat
- Menggunakan objek kernel seperti IOMemoryDescriptor, exploit ini mengekspos alamat buffer data yang dikendalikan pengguna dan mengimplementasikan baca/tulis langsung dari kernel
- Exploit ini juga memanfaatkan secara tepat kelemahan dalam kebijakan allocator memori kernel iOS 13 seperti bypass zone_require
- Implementasi rinci dari keseluruhan struktur exploit dapat dilihat di repositori GitHub publik (tachy0n)
4. Dampak lanjutan
- Publikasi exploit 0day ini menimbulkan dampak besar pada komunitas keamanan dan Apple
- Hanya 4 jam setelah exploit nyata dipublikasikan, Project Zero dan Synacktiv sudah melakukan analisis rinci dan respons
- Setelah patch, Apple bahkan menambahkan regression test resmi untuk kerentanan tersebut ke XNU, menandai pergeseran ke arah penguatan strategi keamanan yang lebih mendasar
- Sejak iOS 14, diperkenalkan perubahan besar seperti pemisahan area allocation, object secure guard, PAC (Pointer Authentication Code), struktur
kheap, dll. yang sangat meningkatkan tingkat kesulitan pembuatan exploit
- Kini strategi exploit itu sendiri menjadi jauh lebih penting, dan kesenjangan antara informasi publik dan riset privat makin besar, sehingga untuk iOS 17~18 bahkan tidak ada kernel exploit publik sama sekali
5. Kesimpulan
- Ini adalah contoh yang dengan jelas menunjukkan bahwa bidang keamanan iOS/jailbreak telah berubah drastis dalam 5 tahun
- Kasus ini memberi wawasan tentang bagaimana komunitas jailbreak/eksploitasi, para peneliti, dan arah teknis Apple telah berubah
- Masa ketika IL dibagikan dan tantangan dilakukan bersama kini telah menjadi masa lalu, dan sejak iOS 14 pembagian informasi exploit menurun drastis
Referensi dan kontak
- Source code terkait dan informasi lebih rinci dapat dilihat di situs pribadi Siguza dan repositori GitHub publik
2 komentar
Perangkat keras Apple memang hebat, tetapi perangkat lunaknya penuh dengan niat untuk mengekang pengguna.
Bahkan jika Anda hanya ingin menjalankan aplikasi yang Anda buat dan build sendiri di perangkat milik Anda, tetap perlu berlangganan seharga $100.
Kalau Anda adalah pengembang yang memakai aplikasi open source skala kecil hingga menengah dan membangunnya sendiri untuk dipakai,
daripada harus melakukan sideload dengan memanfaatkan celah di perangkat Apple sampai perlu jailbreak, lebih mudah pakai Android saja.
Opini Hacker News
Disebutkan bahwa SockPuppet sebelumnya juga pernah dipakai untuk jailbreak pada era iOS 12, lalu setelah Ned Williamson dari Project Zero melaporkannya ke Apple dan ditambal di iOS 12.3, celah itu muncul lagi di iOS 12.4
Kemungkinan Apple mem-fork XNU ke branch terpisah dan patch tersebut terlewat, dan masalah besarnya adalah pada dasarnya tidak ada regression test untuk kerentanan baru maupun lama seperti ini
Saya sendiri pernah mengotomatisasi beberapa kerentanan 1-day yang sudah diketahui sebagai regression test, lalu langsung berhasil menemukan celahnya lagi
Jadi saya penasaran apakah berbagai proyek open source seperti Linux, FreeBSD, OpenWRT, OpenSSH, dan lainnya juga menjalankan regression test untuk kerentanan lama di versi baru
Kalau tiap kerentanan ditulis dalam bentuk otomatis dan ada kapasitas sumber daya untuk menjalankannya di CI, menurut saya manfaatnya akan sangat besar
Berbagi pengalaman saat kuliah 20 tahun lalu menjadi sukarelawan QA di Mozilla, ketika sudah ada ratusan kasus regression test
Kebanyakan terkait bug rendering/layout dan JS engine, dan jika test case yang diminimalkan sudah dibuat, strukturnya bisa langsung ditambahkan ke pipeline CI
Bug itu sendiri memang tak terhindarkan, tetapi yang paling buruk adalah ketika bug yang sudah diperbaiki muncul lagi karena itu membuang waktu dan biaya, dan organisasi yang peduli kualitas pasti berinvestasi besar pada regression test
Sayangnya, ada juga banyak organisasi yang mengabaikan QA atau hanya menyerahkannya ke outsourcing tanpa perhatian serius
Sulit dipahami bahwa Apple tidak punya regression test terkait jailbreak
Sejak dulu di Mozilla dan tempat lain sudah ada lingkungan QA serta CI/CD yang sangat baik dengan alat seperti Tinderbox dan Bugzilla, dan saya dulu mengira cara seperti ini sudah umum bahkan sebelum konsep DevOps populer, tetapi belakangan sadar ternyata tidak begitu
Ada ribuan test case, dan sepertinya itu Sqlite
Ditambahkan juga bahwa jika patch backport tidak dilakukan, kemungkinan besar test tersebut juga tidak akan ikut di-backport
Pada akhirnya hukum Conway (Conway's law) tetap berlaku antara keamanan dan pengembangan fitur
Karena itu, bahkan di organisasi yang regression test-nya pada proses build/release sudah bagus, isu terkait keamanan tetap berpotensi terlewat karena struktur internal organisasi
pendapatnya adalah badan intelijen (G10, Rusia, China, Korea Utara, dan lain-lain) serta banyak kelompok swasta tentu saja melakukan regression test kerentanan dengan cara seperti ini
Diibaratkan seperti sedang berbicara dengan teman dalam bahasa asing lalu detik berikutnya topiknya tiba-tiba berubah ke bedah otak atau fisika nuklir sehingga pikiran langsung kosong
Ini mengingatkan pada pengalaman dulu saat mencoba menerjemahkan percakapan tentang perbaikan pabrik baja
Sayang sekali jailbreak kini nyaris menghilang; meski saya sendiri tidak terlalu memanfaatkan iPad yang sudah di-jailbreak untuk hal berguna, saya tetap merasa itu menyenangkan
Kalau sekarang, saya ingin memasang aplikasi tethering atau UTM, serta solusi JIT
SideStore terlihat menjanjikan dan ingin saya coba, tetapi akun Apple saya dulu adalah akun developer berbayar dan 10 app ID saya belum kedaluwarsa, jadi ada batasan untuk memasang aplikasi semacam itu
Agar bisa, saya harus membuat akun baru atau membayar lagi
Tanpa jailbreak, sama sekali tidak ada alasan bagi saya untuk memakai iPhone sebagai ponsel utama, dan akhirnya saya pindah ke Android
Saat itu Android juga sudah banyak menyusul dari sisi fitur dasar
Apakah harus lewat broker perantara, apakah ada email atau jalur resmi, dan apakah ada risiko laporan itu hanya tenggelam di dukungan level pertama
Seperti disebut dalam tulisan itu, komunitas privat masih tetap memiliki kerentanan dan Apple terus menambalnya
Yang berkurang hanyalah jailbreak yang dipublikasikan ke publik