Kami mungkin memiliki pemenang untuk Raspberry Pi dan Hextree RP2350 seharga $20.000 Tantangan Peretasantapi kami belum akan mengetahui secara resmi siapa pemenangnya hingga tanggal 14 Januari. Insinyur Aedan Cullen mengumumkan karyanya Meretas RP2350 presentasi di Kongres Komunikasi Chaos ke-38 baru-baru ini (38C3), dan ada a Repo GitHub sekarang diterbitkan untuk menemani video tersebut Di Sini. Cullen mempelajari RP2350 secara mendetail sebelum melakukan serangan kesalahan injeksi tegangan pada pin 53 chip RP2350, yang berhasil mengaktifkan inti RISC-V yang ‘dinonaktifkan secara permanen’ dan port akses debugnya, sehingga memungkinkan dia membaca rahasianya.
Raspberry Pi memperkenalkan RP2350 melalui Raspberry Pi Pico 2 sebagai penerus RP2040 – dengan fitur keamanan tambahan untuk menarik pelanggan komersial dan industri. Untuk mempublikasikan mikrokontroler baru, ia bekerja sama dengan Hextree untuk merancang Tantangan Peretasan RP2350, diumumkan di DEF CON pada bulan Agustus. Tantangan ini berakhir pada 31 Des 2024, namun kita harus menunggu hingga 14 Januari untuk pengumuman resmi pemenang. Cullen membuat presentasinya di 38C3 pada 27 Desember dan juga membagikan repo GitHub dengan garis besar proses peretasan dan kode Python. Namun, kami tidak tahu apakah Cullen adalah pemenangnya, jadi ini mungkin bukan metode hack pemenang $20K.
Secara khusus, RP2350 hadir dengan kuartet fitur keamanan baru, yang ingin ditonjolkan oleh Raspberry Pi. Ini adalah Boot Aman, TrustZone, Redundancy Coprocessor (RCP), dan Detektor Glitch. Pembuat tantangan menyembunyikan rahasia di salah satu chip yang ‘aman sepenuhnya’ ini, yang akan diberikan kepada peretas yang mengajukan permohonan, dan kisah sukses pertama yang dapat dibuktikan akan mendapatkan $20.000 dan pujian karena menjadi pemenang tantangan. Serangan yang menggunakan perangkat keras dan/atau perangkat lunak diperbolehkan berdasarkan peraturan kompetisi, jadi situasi ini bisa saja terjadi.
Raspberry Pi dan Hextree akan menyembunyikan rahasianya di memori OTP (One Time Programmable) RP2350 pada chip, yang dikatakan sebagai kode biner yang sudah disetel tetapi tidak akan pernah terlupakan. Picotool digunakan untuk menulis kode rahasia ke OTP. Kemudian memori OTP RP2350 dikunci di balik fitur perlindungan perangkat keras Page Locks, diatur ke status ‘tidak dapat diakses’ ’13:12′ sesuai tabel di atas. Firmware juga ditandatangani, dengan Boot Aman diaktifkan, dan mereka menonaktifkan fitur debug chip, sehingga pengintai tidak dapat mengetahui rahasianya melalui antarmuka Serial Wire Debug (SWD). Selanjutnya, semua bootkey lainnya dinonaktifkan, Detektor Glitch RP2350 dihidupkan dan kemudian disetel ke sensitivitas tertinggi. Kedengarannya seperti dikunci.
Cullen mengatakan dia memulai proses peretasannya dengan mempelajari lembar data RP2350 dan ketergantungan yang diuraikan dalam dokumentasi. Kemudian Cullen menelusuri cara RP2350 melakukan booting dan menetapkan pengaturan keamanannya, dengan perhatian khusus pada OTP.
Ide pertama Cullen adalah membuat OTP salah membaca pengaturan bit kritisnya, sehingga chip dapat bekerja dengan cara yang tidak aman. Cullen bahkan melakukan rontgen RP2350 sebagai bagian dari penyelidikannya dan memberi anotasi pada blok chip. Namun, dia menekankan bahwa ini hanya sekedar mengejar kepentingan dan tidak terlalu berperan untuk mengatasi tantangan tersebut.
Penelitian memaksa Cullen untuk fokus pada Pin 53, berlabel USB-OTP_VDD, karena terhubung ke fungsi OTP (dan USB). Mungkin seorang hacker bisa “mengacaukan catu daya ini secara eksternal” untuk mempengaruhi fungsi-fungsi ini, pikirnya. Jadi dia melepas chip tersebut dan mengisolasi Pin 53 (secara fisik memotong jejak PCB), sehingga siap untuk dirusak secara elektrik secara terpisah pada papan yang dipasang kembali.
Dengan pengaturan yang dimodifikasi perangkat keras ini, Cullen memeriksa Pin 53 untuk “menyuntikkan voltase apa pun yang saya inginkan” dan memeriksa apa yang terjadi. Papan RP2350 yang tidak terlindungi disimpan untuk perbandingan berdampingan. Setelah perangkat keras dipasang, dia mengamati apa yang biasanya terjadi ketika RP2350 yang diamankan dan tidak diamankan dinyalakan – menurut pembacaan probe pada osiloskop.
16 kelompok lonjakan terlihat, sesuai dengan 16 pembacaan OTP awal saat startup. Cullen kemudian menguji memasukkan gangguan daya ke Pin 53 pada titik-titik tertentu dalam proses booting. Yang mengecewakan, debugnya tetap terkunci. Selanjutnya, skrip Python digunakan untuk menyapu posisi input daya kesalahan melalui seluruh rentang pembacaan OTP 600 mikrodetik selama startup. Fungsi debug telah diperiksa tetapi tidak pernah tersedia. Jadi Cullen melihat ke papan RP2350 yang tidak terkunci lagi, dengan debugging diaktifkan, untuk mencari petunjuk.
Kemudian, sesuatu yang menarik diamati, ketika inti RISC-V muncul melalui kesalahan pada RP2350 yang tidak aman. Cullen kemudian menggunakan skrip lain untuk memeriksa di mana port akses debug RISC-V muncul. Teknik ini juga dapat dipicu pada RP2350 yang diamankan – dan debugger sekarang dapat dihubungkan ke RP2350 yang diamankan dan rahasia dibaca dari OTP!
Rahasia terbongkar
Inti RISC-V yang ‘dinonaktifkan secara permanen’ telah dibangunkan oleh kesalahan untuk mengaktifkan akses ini. Cullen menjelaskan alasan mendasar yang aneh mengapa kesalahan 0x00030033 berfungsi adalah karena ia menonaktifkan inti Arm dan RISC-V, tetapi instruksi penonaktifan Arm memiliki prioritas lebih tinggi, sehingga RISC-V tetap aktif. Yang penting kesalahannya berhasil menghapus Debug_Disable.
Untuk informasi lebih lanjut tentang latar belakang peretasan ini, khususnya melewati mekanisme pembacaan penjaga, kami menyarankan menonton video yang direkam selama 38c3 (tertaut di atas). Ada juga tanya jawab menarik di akhir sesi. Anda mungkin menemukan peserta menanyakan pertanyaan serupa dengan yang mungkin Anda miliki.
Cullen mengakhiri presentasinya dengan tiga poin penting:
- Faktor komunikasi manusia sangat besar. Sideense (perusahaan di balik teknologi memori OTP NV yang digunakan) tahu cara melakukan penjagaan dengan benar, dan RPi ketinggalan.
- “Permanen” bukanlah suatu hal kecuali jika melibatkan penghancuran chip. Ada beberapa tembaga di suatu tempat dengan setiap sinyal…
- Ingatlah untuk melakukan kesalahan di tempat yang tidak mereka beri tahukan kepada Anda.