Baru-baru ini, Insinyur Google telah mengumumkan rincian tentang kerentanan kritis yang diidentifikasi sebagai CVE-2024-56161. Dibaptis dengan nama MasukTanda, kegagalan ini memungkinkan untuk menghindari mekanisme verifikasi tanda tangan digital selama pembaruan mikrokode pada prosesor AMD menggunakan empat generasi pertama mikroarsitektur Zen.
MasukTanda mempengaruhi berbagai prosesor, memungkinkan penyerang melewati kontrol keamanan yang memastikan integritas kode mikro, sehingga berpotensi membuka peluang modifikasi berbahaya pada perilaku perangkat keras.
Tentang kerentanan
Asal mula kerentanan ini terletak pada penggunaan algoritma AES-CMAC selama verifikasi tanda tangan digital, bukan pada fungsi hash tepercaya. AMD menggunakan algoritma ini untuk menandatangani mikrokode, menggunakan kunci RSA pribadi dan menambahkan kunci publik ke patch.
Proses verifikasi melibatkan prosesor yang membandingkan hash kunci publik yang tertanam selama pembuatan dengan hash kunci yang ditentukan dalam patch. Namun, karena CMAC digunakan, yang sebenarnya bukan fungsi hash tetapi kode otentikasi transmisi pesan, pelanggaran keamanan telah terbuka.
CMAC didasarkan pada algoritma AES dan menggunakan operasi XOR untuk menggabungkan blok data, tetapi karena tidak dirancang agar tahan terhadap tabrakan, hal itu memungkinkan penyerang yang mengetahui kunci enkripsi untuk menghitung nilai antara yang mengkompensasi perubahan dalam input, sehingga hasil operasi tidak berubah.
Baik Intel maupun AMD merancang set instruksi mikrokode berbasis RISC yang unik, keduanya tidak terdokumentasi, tetapi secara konseptual serupa dengan set instruksi RISC lainnya seperti ARM atau RISC-V. Seperti halnya perangkat lunak, penerapan perangkat keras yang kompleks dengan benar merupakan suatu tantangan; Secara historis, hal ini telah menyebabkan banyak bug terkenal, seperti bug FDIV Intel di Pentium pada tahun 1994.
AMD menyediakan satu kunci enkripsi untuk AES-CMAC di semua prosesornya dari Zen 1 hingga Zen 4, yang berarti bahwa jika seseorang mengekstrak kunci ini dari satu CPU, mereka dapat menerapkannya ke semua CPU lainnya. Faktanya, para peneliti telah menemukan bahwa prosesor ini menggunakan kunci yang diketahui, yang diambil dari contoh dalam pedoman NIST SP 800-38B.
Hal ini memungkinkan, secara teori, untuk menghasilkan patch palsu dengan mengganti kunci publik patch dengan kunci yang menghasilkan hash yang sama, dan pilih tabrakan untuk tanda tangan digital. Tabrakan semacam itu terjadi dengan menambahkan blok data tambahan yang tampaknya acak ke mikro kode, sehingga patch yang dimodifikasi mempertahankan tanda tangan digital asli AMD.
Untuk mengatasi masalah iniUntuk mengeksplorasi cara baru untuk memanipulasi kode mikro di prosesor AMD, teknisi Google Mereka mengembangkan Zentool, kumpulan alat gabungan untuk pemeriksaan patch mikro kode, termasuk pembongkaran terbatas, pembuatan patch mikro kode menggunakan rekayasa balik perakitan dalam jumlah terbatas.
Zentool telah dirancang untuk memfasilitasi analisis dan modifikasi mikrokode, menawarkan serangkaian perintah yang memungkinkan mulai dari mengedit parameter dan mengganti instruksi hingga memuat mikro kode yang dimodifikasi ke dalam CPU dan mengoreksi tanda tangan digital patch.
Misalnya, perintah "zentool edit" memungkinkan pengeditan parameter dalam berkas mikro kode, sementara "zentool print" menampilkan informasi terperinci tentang struktur internal mikro kode. Selain itu, «zentool load» memuat mikro kode ke dalam CPU dan «zentool resign» menghitung ulang tanda tangan digital, dengan mempertimbangkan perubahan yang dibuat. Selain itu, paket tersebut menyertakan utilitas seperti mcas dan mcop, yang menyediakan fungsionalitas assembler dan disassembler untuk bekerja langsung dengan mikrokode.
Kemampuan dari Zentool memungkinkan pengembang untuk menyiapkan dan menerapkan patch mereka sendiri pada prosesor AMD Zen. Sebagai contoh ilustrasi, sebuah patch telah disiapkan yang memodifikasi logika instruksi RDRAND. Setelah menerapkan patch ini, instruksi RDRAND berhenti menghasilkan urutan pseudo-acak dan mulai secara konsisten mengembalikan angka 4, dengan demikian menunjukkan kekuatan memodifikasi mikro kode dan mengubah perilaku prosesor yang diharapkan.
Perlu disebutkan itu Zentool dilengkapi dengan panduan terperinci tentang mikroarsitektur RISC86 yang digunakan dalam mikro kode AMD, serta catatan petunjuk yang menjelaskan cara membuat mikro kode khusus. Panduan tersebut menunjukkan, antara lain, cara merancang instruksi prosesor baru, memodifikasi perilaku instruksi yang ada, dan memuat perubahan tersebut langsung ke dalam CPU.
Akhirnya, jika Anda tertarik untuk mengetahui lebih banyak tentangnya, Anda dapat berkonsultasi dengan detail di link berikut.