Kenapa perilisan jailbreak butuh waktu yang lama?

Banyak orang yang mengira kalau merilis sebuah jailbreak itu semudah membuat sebuah program atau aplikasi sederhana. Tidak seperti itu. Jailbreak juga dirilis bukan berdasarkan semata-mata atas kemauan atau mood si hacker/developer. Ada banyak faktor atau proses yang mempengaruhi waktu rilis (ETA / estimated time of arrival) dari sebuah jailbreak.

Berikut adalah beberapa faktor tersebut.

Hacker juga punya kesibukan

Sebagian besar di antara para hacker yang pernah merilis jailbreak hanya mengerjakan aktivitas hacking sebagai hobi saja. Mereka membuat jailbreak bukan untuk mencari uang, meskipun pada akhirnya mereka juga menerima donasi. Bagi sebagian para hacker iOS, membuat jailbreak hanyalah untuk bersenang-senang dengan perangkat (iPhone/iPad/iPod touch) mereka, memuaskan hasrat hacking mereka. Mereka hanya senang mengutak-atik sebuah sistem, mencari kelemahannya dan mengeksploitasi celah keamanan tersebut sampai pada akhirnya sebuah jailbreak berhasil ditemukan.

Mencari celah keamanan iOS dan membuat jailbreak butuh waktu lama dan juga energi yang besar. Terkadang butuh waktu berbulan-bulan hanya untuk mencapai tahap atau progress berikutnya. Bahkan terkadang selama berminggu-minggu tidak ada hasil sama sekali. Padahal mereka ini juga punya kesibukan lain yang di dunia nyata yang tidak kalah pentingnya seperti mencari nafkah. Ada developer/hacker yang kerja di perusahaan, dan ada juga yang masih sekolah/kuliah. Oleh karena itu para hacker ini biasanya hanya bekerja mencari/membuat jailbreak hanya pada saat mereka punya waktu kosong yang bisa dimanfaatkan dan sisa energi yang tersisa setelah beraktivitas seharian.

Comment from discussion AMA request: Evad3rs.

Celah keamanan untuk jailbreak belum cukup

Mencari celah keamanan (vulnerability) iOS untuk membuat jailbreak biasanya dimulai dengan mempelajari celah keamanan yang ada pada versi iOS sebelumnya. Setelah mempelajarinya, para hacker kemudian berusaha mengembangkan kode-kode yang telah mereka rancang untuk bisa bekerja kembali pada iOS target. Kalau tidak, maka para hacker biasanya memulai dari awal lagi dan berusaha mencari celah keamanan pada iPhone/iOS dari berbagai sisi.

Comment from discussion AMA request: Evad3rs.

Berdasarkan tipe exploitasi, umumnya ada tiga daerah yang diserang, yaitu:

  • userland, yaitu sistem yang berjalan (termasuk celah keamanan yang teradapat pada aplikasi-aplikasi bawaan iOS)
  • kernel, yaitu inti dari sebuah sistem operasi yang dalam hal ini iOS
  • bootrom/bootloader, yaitu firmware atau perangkat lunak yang teradapat dalam sebuah chip BootROM (read-only) yang aktif pertama kali saat perangkat dinyalakan.

Berdasarkan sifatnya, jailbreak yang memanfaatkan eksploitasi keamanan dari sisi bootrom adalah yang paling bagus dan diutamakan oleh hacker karena eksploitasi ini kebal dari pembaruan software. Ini memungkinkan karena untuk menutupi celah ke manan jailbreak berbasis bootrom harus melibatkan penggantian hardware (chip BootROM). Sedangkan untuk userland dan kernel, sangat gampang ditutupi oleh Apple karena hanya butuh sekali rilis iOS saja. Namun meskipun begitu eksploitasi bootrom semakin sulit karena keamanan BootROM ini semakin diperketat. Oleh karena itu para hacker hanya mengandalkan serangan ke userland dan kernel-nya saja yang memang lebih mudah.

In the past, jailbreakers were able to find bugs in the bootrom, the first significant code that runs on the iPhone, and they were in. They would have full control over that phone for as long as that device existed, no matter what version of iOS was running. But now, devs can’t even access the bootrom.
TechCrunch

Memang terdengar sederhana tapi pada kenyataannya tidak, prosesnya panjang. Sebuah celah keamanan harus benar-benar bisa berguna dan bisa dieksploitasi, agar celah keamanan ini bisa membawa hacker ke tahap selanjutnya. Seringkali celah keamanan yang ditemukan tidak begitu membantu. Kadang pula sebuah celah keamanan yang berhasil dieksploitas harus digabung dengan celah ke manan lainnya untuk bisa mencapai root (hak akses tertinggi). Misalnya eksploitasi celah keamanan dari sisi userland digabung dengan celah keamanan yang ditemukan pada kernel. Atau bisa juga celah keamanan pada userland atau kernel digabung dengan celah keamanan pada bootrom untuk menciptakan sebuah jailbreak.

Jadi, tantangan yang dihadapi para hacker iOS adalah bagaimana menemukan celah keamanan yang benar-benar berguna dan bisa dieksploitasi atau dimanfaatkan untuk membuat sebuah jailbreak meskipun harus menempuh jalan menggabungkan beberapa celah keamanan sekaligus.

Hanya untuk developer saja

Selain skill atau keahlian dalam mencari celah keamanan suatu sistem, salah satu faktor yang cukup membantu para hacker iOS bisa menemukan celah keamanan pada iOS adalah karena sebagian besar dari mereka terdaftar sebagai developer iOS. Mereka ini punya akun developer yang cukup bisa memudahkan mereka mengakses internal iOS dan mencari celah keamanan iOS pada perangkat mereka. Tetapi walaupun mereka berhasil menemukan celah keamanan pada iOS yang berguna untuk keperluan jailbreak, para hacker tidak bisa begitu saja merilis jailbreak-nya. Alasannya karena pada proses pembuatan jailbreak para hacker masih bergantung pada kode-kode proprietary iOS yang hanya boleh diakses oleh orang yang terdaftar sebagai developer iOS saja. Makanya, mereka tidak boleh merilis jailbreak dengan kondisi seperti itu ke publik karena bertentangan dengan perjanjian sebelum mereka mendaftar sebagai developer. Kalau tidak, mereka ini akan dituntut oleh Apple karena telah melanggar perjanjian.

Oleh karena itu, meskipun sudah ketemu celah keamanan yang pas untuk membuat jailbreak, para hacker tetap harus mencari solusi alternatif untuk bagaimana caranya kode-kode proprietary milik Apple ini tidak diikutkan untuk rilis publik. Para hacker harus mencari celah keamanan yang kode-kode nya mereka buat sendiri agar nantinya tidak berurusan dengan Apple di pengadilan.

Hanya bekerja pada sebagian perangkat saja

Celah-celah keamanan yang berhasil dieksploitasi terkadang tidak bekerja sekaligus untuk semua perangkat iOS walaupun sistem operasi yang digunakan pada dasarnya sama. Pada saat proses uji coba, ada perangkat yang berhasil dijailbreak dan ada yang tidak. Masalahnya macam-macam. Salah satunya adalah jenis prosesor yang digunakan.

Para hacker yang membuat jailbreak tidak akan merilis jailbreak kalau jailbreak tersebut tidak kompatibel untuk semua perangkat iOS yang ada pada saat tersebut. Makanya terkadang butuh waktu lama karena para hacker ini harus menguji coba celah keamanan yang mereka temukan pada semua perangkat iOS agar pada saat perilisan semua perangkat menjadi kompatibel.

Cydia masih belum benar-benar stabil atau belum kompatibel dengan jailbreak yang baru

Cydia juga salah satu elemen penting dalam perilisan jailbreak.

Sebenarnya menurut definisinya jailbreak adalah proses memodifikasi iOS agar pengguna bisa memiliki akses baca-tulis dan eksekusi (read, write, execute) pada semua partisi iPhone, iPad dan iPod touch. Jadi, selama hacker sudah bisa mengeksekusi kode-kode tertentu pada iPhone itu sudah bisa dikatakan sebagai jailbreak, walaupun belum ada Cydia yang terinstall. Akan tetapi tanpa Cydia pengguna awam tidak bisa berbuat apa-apa dan bahkan berbahaya kalau sampai ada file penting yang dimodifikasi/terhapus. Makanya Cydia juga penting.

Tapi Cydia tidak dikembangkan oleh si hacker yang merilis jailbreak. Cydia dibuat, dikembangkan dan dipelihara oleh Jay Freeman (@saurik). Makanya setiap hacker yang ingin merilis jailbreak harus berkomunikasi dengan Saurik terlebih dahulu karena Cydia perlu dimasukkan dalam program jailbreak yang mereka buat. Sebenarnya bukan soal ijin, tapi lebih ke masalah kompatibilitas jailbreak dengan Cydia.

Biasanya komunikasi yang terjadi adalah seperti ini (contoh yang disederhanakan):

Hacker: “Hai saurik, saya @ivanfzy, saya telah berhasil menemukan celah di iOS dan jailbreak saya hampir jadi.””
Saurik: “Lalu?”
Hacker: “Masalahnya setelah saya uji, Cydia yang sekarang crash saat dijalankan. Mungkin belum kompatibel.”
Saurik: “Hmm… sepertinya begitu. Nanti saya akan perbaiki dan merilis versi terbaru biar bisa cocok dengan jailbreak kamu.”
Hacker: “Oke, thanks ya.”

Lalu…

Saurik: “Bisa kirimkan saya source code nya biar saya teliti di mana kesalahannya?”
Hacker: “Baik. Source code-nya saya simpan di https://app***tu.com/source.tar.gz, silakan download dari situ”
Saurik: “Trims. Saya cek dulu.”
Hacker: “Siap.”
Saurik: “Sepertinya masalahnya sudah ketemu, dan saya sudah menambalnya. Silakan download versi barunya di repo saya dan masukkan ke program kamu.”
Hacker: “Oke, terima kasih.”

Nah, kira-kira begitu.

Biasanya hacker atau tim hacker yang akan merilis jailbreak berhubungan dengan Saurik terlebih dahulu. Saurik juga menyarankan ini sebenarnya, karena dengan begitu Saurik punya waktu yang cukup untuk menyiapkan paket Cydia yang terbaru dan lebih stabil.

Jailbreak-nya masih tethered

Dulunya kita mengenal istilah tethered jailbreak dan untethered jailbreak. Tethered jailbreak adalah jailbreak yang belum sempurna karena masih bergantung pada celah keamanan yang belum dieksploitasi secara sempurna. Ini membuat perangkat yang dalam kondisi tethered ini akan stuck pada proses booting setiap kali perangkat dinyalakan/direstart. Untuk menjalankannya kembali, harus dihubungkan ke komputer dan menjalankan kembali program jailbreak dan melakukan re-jailbreak. Cukup ribet. Sedangkan untethered jailbreak adalah kebalikannya. Sekali jailbreak, perangkat tidak membutuhkan kabel dan komputer lagi karena perangkat bisa direstart sesuka pengguna.

The big next step was to make this jailbreak “untethered” – a device that can boot up directly to the jailbreak. This requires leaving some kind of code around that will cause the software to trip up upon boot, de-securing the device along the way. In the absence of a bootrom bug, like the one found on the iPhone 3G or 3GS, this was the best way for some time to achieve an untethered jailbreak.
TechCrunch

Tethered dan untethered bukan berbeda dari istilahnya saja, tetapi secara teknis untethered lebih sulit dicapai. Celah keamanan yang dimanfaatkan antara keduanya berbeda. Pada tethered jailbreak, celah keamanan yang dieksploitasi akan terhambat pada proses booting karena kernel iOS mendeteksi adanya kode-kode asing yang tidak wajar. Untuk mengatasinya, hacker harus mencari celah keamanan lain untuk bisa membuat kode-kode yang dieksekusi pada saat booting bisa dilewatkan dan tak terdeteksi.

Dulunya para hacker mulai merilis jailbreak walau masih berstatus tethered. Salah satu keuntungannya adalah pengguna bisa dengan cepat melakukan jailbreak sebelum Apple menutup celah keamanan yang dimanfaatkan pada iOS terbaru. Kelemahannya, pengguna direpotkan karena tergantung dengan komputer.

Sekarang atau setidaknya dalam beberapa tahun terakhir ini para hacker sudah tidak lagi merilis versi tethered, dan hanya fokus untuk menyempurnakan jailbreaknya agar bisa digunakan oleh semua orang bahkan yang awam sekalipun. Keputusan ini tentunya bagus, tetapi sudah pasti berakibat pada lamanya perilisan jailbreak.

Programnya belum cocok untuk pengguna awam

Jailbreak-nya sudah jadi, Cydia sudah cukup stabil, dan sudah untethered. Apa lagi?

Programnya. Program jailbreak juga harus didesain sedemikian rupa agar mudah digunakan oleh semua pengguna bahkan dengan instruksi yang minimal sekalipun. Masih banyak orang yang tidak terbiasa menggunakan komputer, apalagi menjalankan program jailbreak tanpa grafik alias berbasis command-line. Untuk itu, biasanya para hacker yang sudah berhasil membuat jailbreak harus mendesain programnya sebelum merilisnya ke publik.

Testing, testing dan testing

There are other things that slow down the process between finding the bugs and releasing the jailbreak tool: for example, finding the differences in the code between the different devices and testing procedures.
TechCrunch

Tahap testing alias pengujian adalah salah satu tahap yang juga butuh waktu lama. Proses uji coba diperlukan untuk memastikan kalau jailbreak yang sudah jadi kompatibel dengan semua perangkat target baik itu iPhone, iPad atau iPod touch. Jadi wajar saja kalau para hacker iOS punya banyak koleksi perangkat iOS. Tapi tidak jarang juga para hacker meminta bantuan teman atau orang-orang yang bisa dipercaya untuk mengujinya dan meminta laporan atas pengujian tersebut.

Bug/error yang muncul di saat terakhir

Kadang ada bug atau error yang muncul hanya pada pada saat-saat tertentu saja dan pada perangkat jenis tertentu saja. Ini biasanya menghambat perilisan. Bug yang bisa diabaikan biasanya tidak begitu menghalang dan bisa diperbaiki setelah rilis, tetapi bug yang parah harus segera diperbaiki.

Menunggu saat yang tepat

Kebiasaan para hacker sebelum merilis jailbreak adalah menunggu waktu yang tepat kapan jailbreak-nya sebaiknya dirilis. Salah satu hal yang jadi pertimbangan adalah soal bug atau celah keamanan pada iOS versi berikutnya.

Seperti yang sudah saya tulis di atas, para hacker iOS rata-rata adalah developer iOS juga. Mereka punya akses ke iOS versi beta yang belum dirilis. Dengan hak akses yang mereka miliki, mereka bisa mengutak-atik iOS beta tersebut dan mencari celah keamanan yang ada. Kalau celah keamanan yang ada pada iOS beta tersebut rentan terhadap jailbreak yang mereka buat, biasanya para hacker akan menunggu sampai iOS versi berikutnya dirilis. Tujuannya biar lebih banyak versi iOS yang didukung. Tetapi kalau celah keamanannya tidak sama, yang artinya kemungkinan besar sudah ditutup oleh Apple, maka jailbreak-nya biasanya akan segera dirilis sebelum iOS versi berikutnya dirilis.