- Peneliti Kaspersky mengungkap rantai serangan iMessage 0-click iPhone Operation Triangulation di 37C3, dan menilainya sebagai rantai paling canggih yang pernah mereka lihat sejauh ini
- Serangan ini dirancang agar berfungsi hingga iOS 16.2 dan merangkai 4 zero-day untuk berujung pada eksekusi kode jarak jauh, eskalasi hak akses, bypass PPL, dan eksekusi tahap Safari
- Misteri utamanya adalah bagian yang dimitigasi sebagai CVE-2023-38606: penyerang memanfaatkan register MMIO yang tidak dikenal pada SoC Apple A12–A16 Bionic untuk melewati perlindungan memori kernel berbasis hardware
- Hasil analisis menunjukkan register tersebut tampaknya terkait dengan GPU coprocessor, dan sebagian tidak dirujuk di DeviceTree maupun firmware, sehingga belum diketahui bagaimana penyerang mengetahui cara menggunakannya
- Dalam pembaruan 9 Januari 2024, nilai yang semula tampak sebagai “hash kustom” dipastikan sebagai ECC berbasis Hamming code, sehingga fungsi ini kemungkinan besar adalah fitur debugging yang mengakses cache secara langsung, bukan memori
Rantai serangan yang diungkap
- Pada presentasi 37C3 tanggal 27 Desember 2023, hasil analisis jangka panjang Operation Triangulation dipublikasikan
- Dalam presentasi ini, detail exploit dan kerentanan yang digunakan dalam serangan diungkap untuk pertama kalinya
- Para peneliti telah menemukan dan melaporkan lebih dari 30 zero-day yang dieksploitasi di dunia nyata pada produk Adobe, Apple, Google, dan Microsoft, tetapi menilai rantai serangan ini sebagai salah satu yang paling canggih di antaranya
Dari iMessage 0-click hingga pemuatan spyware
- Penyerang mengirim lampiran iMessage berbahaya, lalu aplikasi memprosesnya tanpa menampilkannya kepada pengguna
- Lampiran tersebut mengeksploitasi CVE-2023-41990, kerentanan eksekusi kode jarak jauh pada perintah font TrueType ADJUST milik Apple yang tidak terdokumentasi
- Perintah ini sudah ada sejak awal 1990-an dan dihapus melalui patch
- Setelah itu berlanjut beberapa tahap yang ditulis dengan return/jump oriented programming dan bahasa kueri NSExpression/NSPredicate
- Lingkungan JavaScriptCore dipatch untuk menjalankan exploit eskalasi hak akses yang ditulis dalam JavaScript
- Exploit JavaScript diperkecil ukurannya dan diobfuscate hingga sama sekali sulit dibaca, tetapi besarnya sekitar 11.000 baris
- Sebagian besar digunakan untuk parsing dan manipulasi memori JavaScriptCore serta kernel
- Fitur debugging JavaScriptCore, DollarVM($vm), disalahgunakan untuk memanipulasi memori JavaScriptCore dari skrip dan menjalankan fungsi API native
- Serangan ini dirancang untuk mendukung iPhone lama maupun baru, dan juga mencakup bypass PAC untuk mengeksploitasi model terbaru
Akses memori kernel dan bypass PPL
- Exploit menggunakan kerentanan integer overflow CVE-2023-32434 pada syscall pemetaan memori XNU,
mach_make_memory_entrydanvm_map- Dari level pengguna, exploit memperoleh akses baca/tulis ke seluruh memori fisik perangkat
- Setelah itu, Page Protection Layer(PPL) dilewati melalui register MMIO hardware
- Bagian ini dimitigasi sebagai CVE-2023-38606
- Setelah semua kerentanan dieksploitasi, exploit JavaScript dapat melakukan tindakan arbitrer pada perangkat
- Penyerang menjalankan proses IMAgent dan menginjeksikan payload untuk menghapus jejak exploit
- Proses Safari dijalankan dalam mode tak terlihat dan diarahkan ke halaman web tahap berikutnya
- Halaman web memverifikasi korban, lalu jika lolos kondisi, mengirimkan exploit Safari
- Exploit Safari menggunakan CVE-2023-32435 untuk mengeksekusi shellcode
- Shellcode menjalankan exploit kernel lain dalam bentuk file Mach object
- Exploit ini juga menggunakan CVE-2023-32434 dan CVE-2023-38606
- Sebagian besar berbeda dari exploit kernel JavaScript, tetapi berbagi sebagian kode terkait eksploitasi kerentanan yang sama
- Pada akhirnya, penyerang memperoleh hak root dan menjalankan tahap lain untuk memuat spyware
Misteri hardware CVE-2023-38606
- Model iPhone terbaru memiliki perlindungan berbasis hardware untuk melindungi area memori kernel yang sensitif
- Perlindungan ini dirancang agar penyerang tidak dapat sepenuhnya mengendalikan seluruh perangkat meskipun bisa membaca dan menulis memori kernel
- Penyerang Operation Triangulation menggunakan fitur hardware lain pada SoC rancangan Apple untuk melewati perlindungan ini
- Perilaku yang teridentifikasi adalah sebagai berikut
- Data, alamat tujuan, dan hash data ditulis ke register hardware chip yang tidak diketahui
- Register ini tampaknya tidak digunakan oleh firmware
- Akibatnya, data dapat ditulis ke alamat fisik tertentu sambil melewati perlindungan memori berbasis hardware
- Fitur ini mungkin merupakan fitur debugging untuk insinyur Apple atau pengujian pabrik, atau mungkin disertakan secara tidak sengaja
- Karena fitur ini tidak digunakan dalam firmware, belum diketahui bagaimana penyerang mengetahui cara menggunakannya
Analisis MMIO dan DeviceTree
- Periferal pada SoC dapat menyediakan register hardware khusus agar CPU dapat mengendalikan perangkat
- Register ini dipetakan ke memori yang dapat diakses CPU dan disebut memory-mapped I/O(MMIO)
- Rentang alamat MMIO periferal pada produk Apple disimpan dalam format DeviceTree
- File DeviceTree dapat diekstrak dari firmware
- Isinya dapat dilihat dengan utilitas dt
- Sebagian besar MMIO yang digunakan penyerang untuk bypass PPL tidak termasuk dalam rentang MMIO mana pun yang didefinisikan di DeviceTree
- Exploit menargetkan SoC Apple A12–A16 Bionic dan menggunakan blok MMIO tidak dikenal berikut
0x2060400000x2061400000x206150000
- Tidak ditemukan referensi ke alamat-alamat ini di DeviceTree dari berbagai perangkat dan firmware, source code publik, image kernel, kernel extension, iBoot, maupun firmware coprocessor
Kaitan dengan GPU coprocessor
- Saat MMIO yang dikenal di sekitarnya diperiksa, alamat-alamat yang tidak dikenal tersebut berada dekat dengan gfx-asc, yaitu GPU coprocessor
gfx-ascmemiliki dua rentang MMIO0x206400000–0x20646C0000x206050000–0x206050008
- Alamat tidak dikenal yang benar-benar digunakan exploit adalah sebagai berikut
0x2060400000x2061400080x2061401080x2061500200x2061500400x206150048
- Sebagian besar berada di antara dua area
gfx-asc, sementara satu lainnya berada di dekat titik awal areagfx-ascpertama - Register-register ini dinilai kemungkinan besar milik GPU coprocessor
- Dalam proses inisialisasi exploit, juga ditemukan kode yang memanipulasi register pengelola daya GFX pada alamat yang berbeda untuk tiap SoC
- Dengan utilitas pmgr, dikonfirmasi bahwa alamat tersebut sesuai dengan register GFX dalam rentang MMIO pengelola daya
- Saat register di area yang tidak dikenal diakses, GPU coprocessor mengalami panic dengan pesan “GFX SERROR Exception”
- Hasil ini juga mendukung penilaian bahwa register tersebut milik GPU coprocessor
CoreSight dan area UTT khas Apple
- Register
0x206040000hanya digunakan pada tahap inisialisasi dan penutupan exploit- Diatur paling awal saat inisialisasi, dan diproses paling akhir saat penutupan
- Register ini dianalisis berperan untuk mengaktifkan/menonaktifkan fungsi hardware atau mengendalikan interrupt
- Perilaku exploit berkorespondensi dengan fungsi
ml_dbgwrap_halt_cpudalam source code XNUdbgwrap.c dbgwrap.cadalah kode yang menangani register debug MMIO ARM CoreSight pada CPU utama- Source code XNU menyebut empat area MMIO terkait CoreSight: ED, CTI, PMU, dan UTT
- Masing-masing area menempati
0x10000byte - Keempat area saling bersebelahan
- Masing-masing area menempati
- Dalam source code tertulis bahwa area UTT bukan berasal dari ARM, melainkan fitur khusus Apple yang ditambahkan demi kemudahan
- Dengan menulis
ARM_DBG_LOCK_ACCESS_KEYke lokasi tersebut, dapat dikonfirmasi bahwa0x206000000–0x206050000adalah blok register debug MMIO CoreSight milik GPU coprocessor - Setiap core CPU utama juga memiliki blok register debug MMIO CoreSight sendiri, tetapi berbeda dengan GPU coprocessor, alamatnya dapat ditemukan di DeviceTree
- Penulis exploit juga mengetahui cara menggunakan area UTT khas Apple untuk melepas CPU halt
- Kode ini tidak termasuk dalam source code XNU
Fungsi tak teridentifikasi yang berperilaku seperti DMA
- Register
0x206140008dan0x206140108mengendalikan aktivasi, penonaktifan, dan eksekusi fungsi hardware yang digunakan exploit 0x206150020hanya digunakan pada SoC Apple A15/A16 Bionic- Pada tahap inisialisasi disetel ke 1, lalu pada tahap penutupan dikembalikan ke nilai semula
0x206150040digunakan untuk menyimpan flag dan separuh bawah alamat fisik tujuan0x206150048digunakan untuk menyimpan bersama data yang akan ditulis, separuh atas alamat fisik tujuan, hash data, dan satu nilai lain- Fungsi hardware menulis data dalam unit blok selaras berukuran
0x40byte - Register
0x206150048memerlukan 9 kali penulisan berurutan
- Fungsi hardware menulis data dalam unit blok selaras berukuran
- Jika semua prosedur benar, hardware melakukan operasi DMA dan menulis data ke lokasi yang diminta
- Exploit menggunakan fungsi ini untuk bypass PPL, terutama dengan mempatch entri page table
- Fungsi ini juga dapat digunakan untuk mempatch data pada segmen
__PPLDATAyang dilindungi - Fungsi ini tidak digunakan untuk mempatch kode kernel
- Dalam pengujian, sekali terjadi panic “Undefined Kernel Instruction” dengan alamat dan nilai yang diharapkan setelah instruksi kernel pada segmen
__TEXT_EXECditimpa - Pada percobaan lain terjadi panic AMCC
- Dalam pengujian, sekali terjadi panic “Undefined Kernel Instruction” dengan alamat dan nilai yang diharapkan setelah instruksi kernel pada segmen
Hash, ECC, dan kemungkinan akses cache
- Dalam analisis awal, fungsi ini tampak membutuhkan hash kustom
- Hash dihitung menggunakan tabel
sboxyang telah ditentukan - Tabel tersebut dicari di koleksi binary berskala besar, tetapi tidak ditemukan
- Hash dihitung menggunakan tabel
- Hash tampak berukuran 20 bit, yaitu berupa perhitungan nilai 10 bit sebanyak dua kali
- Jika penyerang tidak mengetahui cara menghitung dan menggunakannya, struktur ini lebih mirip security by obscurity
- Dalam pembaruan 9 Januari 2024, Hector Martin memastikan bahwa nilai ini bukan sekadar hash kustom, melainkan error correction code(ECC)
- Lebih tepatnya, ini adalah Hamming code yang menggunakan custom lookup table
- Temuan ini menjadi petunjuk untuk memahami tujuan awal fungsi hardware yang belum teridentifikasi tersebut
- Awalnya tampak seperti fitur debugging yang menyediakan akses memori langsung dengan hash “dummy” yang ditempelkan
- Karena ECC digunakan dan perilaku tidak stabil teramati saat mempatch kode kernel, fungsi ini kemungkinan besar adalah fungsi yang mengakses cache secara langsung
Eksperimen M1 dan mitigasi iOS 16.6
- Dipastikan bahwa chip M1 pada Mac juga memiliki fungsi hardware yang tidak dikenal ini
- Dengan fitur
trace_rangepada alat m1n1, akses MMIO pada rentang0x206110000–0x206400000dilacak- Tidak dilaporkan adanya jejak macOS menggunakan register-register ini
- Di iOS 16.6, Apple memitigasi kerentanan dengan menambahkan rentang MMIO yang digunakan exploit ke
pmap-io-rangesdalam DeviceTree- Rentang yang ditambahkan adalah
0x206000000–0x206050000dan0x206110000–0x206400000
- Rentang yang ditambahkan adalah
- XNU menggunakan informasi
pmap-io-rangesuntuk menentukan apakah pemetaan alamat fisik tertentu diizinkan - Entri
pmap-io-rangesyang umum diberi nama tag bermakna seperti PCIe, DART, atau DAPF, tetapi nama tag untuk area terkait kerentanan ini tampak mencolok berbeda dari entri lainnya
Pertanyaan tersisa dan implikasi keamanan
- Belum diketahui bagaimana penyerang mengetahui cara menggunakan fungsi hardware yang tidak dikenal ini
- Tujuan asli fungsi ini juga masih belum jelas
- Tidak diketahui apakah ini fitur yang dikembangkan Apple atau komponen pihak ketiga seperti ARM CoreSight
- Bahkan setelah pembaruan, misterinya tetap ada
- Penyerang memang dapat melakukan brute force terhadap nilai custom lookup table hanya melalui eksperimen
- Namun mereka tetap harus mengetahui keberadaan fungsi debugging cache yang kuat, penggunaan Hamming code, lokasi dan tujuan register MMIO terkait, serta urutan interaksinya
- Meski ada perlindungan berbasis hardware, jika terdapat fungsi hardware yang dapat melewatinya, perlindungan itu bisa menjadi tak berdaya di hadapan penyerang canggih
- Keamanan hardware jauh lebih sulit direkayasa balik dibanding software, tetapi sistem yang bergantung pada “security through obscurity” menjadi tidak aman begitu rahasianya terungkap
1 komentar
Opini Hacker News
Video presentasinya juga sekarang sudah diunggah: https://www.youtube.com/watch?v=7VWNUUldBEE
Isinya cukup mencengangkan. Penyalahgunaan MMIO berarti para penyerang punya kemampuan riset yang benar-benar luar biasa, atau mereka meretas Apple dan mendapatkan dokumen hardware internal; yang terakhir tampaknya lebih masuk akal
Sampai muncul S-box fungsi hash kustom, saya masih menganggap tim riset besar setingkat NSA mungkin saja bisa melakukannya, tetapi mulai bagian itu tampaknya Apple tahu fitur tersebut berbahaya dan sengaja menyembunyikannya, lalu apa pun identitasnya, bahkan melindunginya dengan semacam fungsi tanda tangan digital yang lemah
Seperti yang disorot tulisan blog itu, selain membongkar seluruh silikon dan melakukan reverse engineering, tidak ada cara yang jelas untuk menemukan “ketukan ajaib” yang tepat agar fitur ini bekerja. Pada node proses seperti ini, itu praktis tidak realistis, jadi yang tersisa adalah kemungkinan meretas pengembang dan mencuri dokumen internal
Cara mereka memakai rantai zero-day mahal yang panjang untuk membuka Safari tak terlihat, lalu memuat halaman web dengan rantai eksploit yang sama sekali berbeda untuk meretas perangkat lagi, juga terasa seperti organisasi raksasa dengan silo internal yang parah
Mengingat para penelitinya adalah orang Rusia dari Kaspersky, ini hampir pasti NSA, atau mungkin operasi GCHQ
Bagian lain yang menarik dari presentasi itu: malware-nya bisa menyalakan pelacakan iklan dan juga mendeteksi hosting iPhone cloud yang sering dipakai peneliti keamanan. Platform malware iOS/macOS ini tampaknya sudah dikembangkan lebih dari 10 tahun; bahkan menjalankan machine learning di perangkat untuk melakukan pengenalan objek dan OCR agar tidak perlu mengunggah byte foto, lalu hanya mengunggah label yang dihasilkan. Usahanya benar-benar besar, tetapi pada akhirnya tetap tidak cukup menghadapi para mahasiswa Rusia yang cerdas
Namun saya tidak sepenuhnya setuju dengan pernyataan pembicara bahwa “security by obscurity tidak berhasil”. Platform ini ada di lingkungan nyata selama 10 tahun, dan tidak ada yang tahu sudah berapa lama “fitur” hardware tersembunyi itu disalahgunakan. Jika fitur hardware itu didokumentasikan secara publik, ia akan ditemukan jauh, jauh lebih cepat
Bisa juga itu desain modular untuk adaptasi cepat, artinya strukturnya mungkin kurang tertarget
[1] https://social.treehouse.systems/@marcan/111655847458820583
Steve Weis merangkumnya paling baik di Twitter:
“Eksploit iMessage ini gila. Ada kerentanan TrueType yang sudah ada sejak tahun 90-an, 2 eksploit kernel, eksploit browser, dan bahkan fitur hardware tak terdokumentasi yang tidak dipakai di software yang dirilis”
https://x.com/sweis/status/1740092722487361809?s=46&t=E3U2EI...
Jika penasaran dengan presentasi para peneliti Kaspersky, video yang sudah dirapikan belum diunggah, tetapi rekaman streaming ulangnya bisa dilihat di sini:
https://streaming.media.ccc.de/37c3/relive/a91c6e01-49cf-422...
Presentasinya dimulai pada 26:20
Terkait presentasi 37c3, ada juga tulisan Fefe¹ dalam bahasa Jerman: https://blog.fefe.de/?ts=9b729398
Menurutnya, nilai rantai eksploit ini kemungkinan berada di kisaran 8 digit dolar
¹ https://en.wikipedia.org/wiki/Felix_von_Leitner
Sepertinya seseorang akan dipecat
Coresight bukan backdoor, melainkan fitur debug yang ada di semua CPU ARM. Ini tampaknya seperti ekstensi Coresight yang diperlukan agar bisa bekerja bersama fitur proteksi memori Apple
Walaupun tidak ada dokumentasi publik, ribuan insinyur Apple kemungkinan punya akses ke gdb yang dimodifikasi atau alat lain yang bisa memanfaatkannya
Jika perangkat berada dalam pengawasan, iMessage dapat dinonaktifkan melalui MDM lokal menggunakan Apple Configurator gratis dari macOS App Store: https://support.apple.com/guide/deployment/restrictions-for-...
Pada perangkat khusus Wi-Fi, aplikasi Messages akan disembunyikan
Pada perangkat yang memiliki Wi-Fi dan seluler, aplikasi Messages tetap terlihat, tetapi hanya layanan SMS/MMS yang dapat digunakan
Misalnya, ketika perangkat dipakai hanya dengan Wi-Fi untuk jangka waktu lama, SMS/MMS dan trafik radio seluler non-darurat dapat dinonaktifkan dengan SIM PIN
Namun ternyata iPad seluler pada dasarnya tidak menampilkan SMS selain yang dikirim oleh operator kartu SIM
Menarik bahwa nilai hash dari penulisan data yang semuanya nol adalah 0
Dan untuk satu bit, nilai hash menjadi satu nilai tunggal dari tabel S-box. Artinya, algoritme hash ini mungkin saja bisa direkayasa balik secara memadai tanpa dokumen internal
Sebenarnya, kalau ada orang mengatakan bahwa penulisan arbitrer tidak boleh terjadi karena bug, saya akan mengimplementasikannya seperti ini. Implementasi ini juga secara efektif mencegah penggunaan fitur ini ketika alamat buffer diketahui tetapi isinya tidak diketahui
Jika sistem di-reboot setiap kali nilai hash salah, keamanan 10-bit pun mungkin cukup untuk tujuan itu. Fitur debug Coresight dapat me-reboot sistem sepenuhnya jika diperlukan
Seberapa besar kemungkinan register MMIO ini ditemukan dengan pencarian brute-force terhadap semua alamat register?
Perbedaan timing saja mungkin sudah dapat menunjukkan bahwa alamat tersebut valid, dan hash-nya pada dasarnya hanya hash 20-bit sehingga mungkin bisa di-brute-force
Bagian yang kurang mudah dijelaskan adalah bagaimana tabel S-box kustom dipulihkan untuk menjalankan kode debug. Di sinilah indikasi ancaman orang dalam menjadi paling kuat, tetapi secara pribadi saya tidak menganggap itu menyingkirkan penjelasan masuk akal lainnya
Misalnya, penyerang bisa saja mengekstrak S-box dari firmware lama, patch pembaruan OTA, perangkat pengembangan pra-rilis (yang pada suatu waktu sangat mungkin bisa dibeli di eBay), rilis beta iOS, atau berbagai jalur kebocoran lain
Peneliti pada dasarnya mengatakan, “kami tidak menemukan tabel S-box ini di biner lain mana pun yang kami periksa.” Namun, mengingat tabel ini tampaknya khusus Apple, jumlah biner tempat ia mungkin muncul memang terbatas, jadi itu tidak terlalu mengejutkan. Seperti yang juga dikatakan peneliti, ini mencakup biner yang saat ini tidak publik tetapi mungkin pernah terdistribusi secara tidak sengaja. Sangat masuk akal bahwa para penyerang secara sistematis mencari kebocoran semacam ini dan pada suatu saat beruntung mendapatkannya, sementara peneliti belum tentu segera mendapatkan keberuntungan yang sama
Fakta bahwa para penyerang tidak mengetahui ekspresi Boolean itu lebih menunjukkan bahwa mereka merekayasa baliknya, bukan memiliki dokumentasinya
https://streaming.media.ccc.de/37c3/relive/11859
Jika disusun secara kronologis bersama isi presentasinya, jadinya seperti ini
September 2018: Apple A12 Bionic SOC, CPU pertama dengan MMIO yang tidak terdokumentasi, dirilis
Desember 2021: infrastruktur rantai exploit awal backuprabbit.com dibuat pada 2021-12-15T18:33:19Z, dan cloudsponcer.com pada 2021-12-17T16:33:50Z
April 2022: infrastruktur rantai exploit berikutnya, snoweeanalytics.com, dibuat pada 2022-04-20T15:09:17Z, yang menunjukkan bahwa exploit tersebut sudah dipersenjatai paling lambat pada tanggal ini
Desember 2023: tampaknya merupakan perkiraan waktu deteksi. Ini dihitung mundur dari periode analisis “setengah tahun” dan laporan Apple pada pertengahan 2023
Para pembicara mengatakan bahwa berdasarkan jejak di dalam kode, grup APT sumber asli telah menggunakan codebase serangan yang sama selama “10 tahun”, yakni sejak sekitar 2013, dan juga menggunakannya untuk menyerang laptop macOS. Termasuk bypass antivirus
Para pembicara juga menyinggung kemungkinan bahwa fitur debug bertanda tangan yang sangat “mirip backdoor” itu masuk ke dalam chip tanpa sepengetahuan Apple, misalnya oleh pengembang GPU
Jadi, kurang dari 3,5 tahun setelah chip rentan pertama masuk pasar, serangkaian MMIO debug Apple Coresight GPU yang tidak terdokumentasi dan membutuhkan pengetahuan nilai rahasia panjang berhasil dipersenjatai dan dieksploitasi oleh grup APT lama dengan riwayat lebih dari 10 tahun. Kaspersky mengatakan mereka “tidak berspekulasi”, tetapi secara pribadi saya melihat kecil kemungkinannya selain aktor negara besar
Kalau berspekulasi, karena Apple menerima bukti memadai bahwa sekitar 40 Apple ID terkait APT mengekspos identitasnya sendiri, identitasnya mungkin bisa dinilai dari ada tidaknya pengumuman terkait keamanan nasional AS setelah ini. Jika sunyi, mungkin itu NSA
https://media.ccc.de/v/37c3-11859-operation_triangulation_wh...