pengantar
Kami baru-baru ini mengobrol dengan pakar keamanan Charlie Miller dari Independent Security Evaluators tentang kerentanan iPhone yang baru-baru ini diungkapkan yang memungkinkan peretas jahat mengambil kendali iPhone melalui serangkaian pesan SMS yang dibuat dengan hati-hati.
Alan: Terima kasih telah meluangkan waktu untuk mengobrol, Charlie. Mengapa Anda tidak mulai dengan memberi tahu kami sedikit tentang kerentanan SMS?
Charlie: Bug iPhone berkaitan dengan memberi tahu telepon bahwa ada sejumlah data tertentu, dan kemudian tidak mengirimkannya sebanyak yang Anda katakan. Fungsi yang membaca data mulai mengembalikan -1 untuk menunjukkan kesalahan, tetapi bagian lain dari program tidak memeriksa kesalahan ini dan benar-benar menganggap -1 adalah data dari pesan. Ini menunjukkan betapa rumitnya menulis kode aman, karena secara terpisah, setiap bagian program terlihat benar, tetapi cara mereka berinteraksi berbahaya!
Bagaimanapun, tergantung pada apa yang Anda kirim, hal-hal buruk yang berbeda dapat terjadi. Pada satu titik, Anda bisa membuatnya keluar karena akan mengalokasikan -1 byte (yang dipandang sebagai 0xffffffff–angka yang sangat besar). Ini adalah penolakan layanan yang akan membuat telepon terputus dari jaringan untuk sementara.
Selama pembicaraan BlackHat saya, kami terus mengirimkan pesan penolakan layanan ini setiap 10 detik kepada seorang sukarelawan dari penonton untuk menjauhkannya dari jaringan. Sebagai konsekuensi yang tidak menguntungkan, pesan-pesan itu mendapat isyarat di jaringan dan teleponnya masih terputus beberapa jam setelah pembicaraan. Sejak itu dia bangkit dan berlari.
Alan: Catatan untuk pembaca kami: setiap kali Charlie mengatakan dia membutuhkan sukarelawan, jangan lakukan kontak mata. Jadi, bagaimana Anda mengirim pesan? Apakah Anda mengirimnya melalui antarmuka SMS iPhone lain atau melakukan sesuatu seperti mengirim email dengan pendekatan ” nomor telepon@attwireless “?
Charlie: Untuk mengirim SMS melalui jaringan operator, kami memiliki aplikasi kecil di iPhone penyerang kami yang akan berbicara dengan modem menggunakan perintah GSM AT. Untuk menguji dan menemukan bug, kami menggunakan kerangka kerja injeksi yang sangat keren yang ditulis oleh co-presenter saya Collin Mulliner, yang memungkinkan Anda menguji implementasi pesan SMS dengan hanya mengirimkan data melalui TCP. Ini mencegah Anda dari keharusan mengirim data melalui jaringan operator dan tidak dikenakan biaya apa pun, dan juga memungkinkan Anda menguji banyak pesan dengan sangat cepat.
Alan: Jadi bagaimana Anda beralih dari penolakan layanan ke eksploitasi penuh?
Charlie: Kasus terburuk berkaitan dengan bagaimana program menangani pesan yang digabungkan. Ini adalah cara untuk mengirim lebih dari 140 byte sekaligus. Anda dapat mengirim pesan panjang dalam serangkaian pesan dan telepon akan merekonstruksinya menjadi satu string panjang. Itu mengakses array berdasarkan nilai dari data. Dalam kasus di mana ia berpikir membaca -1, itu sebenarnya mengakses memori sebelum array, bukan di dalam array. Dengan mengatur semuanya dengan benar dan menjadi rumit, Anda benar-benar dapat memanfaatkan ini untuk mendapatkan kendali penuh atas perangkat.
Seluruh serangan mengambil lebih dari 500 pesan, meskipun korban tidak tahu bahwa mereka sedang dikirim karena mereka tidak muncul di telepon. Sebagian besar pesan ini berkaitan dengan pengaturan “tepat”. Enam belas dari mereka benar-benar mengakses array di luar batas.