Baru-baru ini, the Jurutera Google telah mengumumkan butiran tentang kelemahan kritikal yang dikenal pasti sebagai CVE-2024-56161. Dibaptiskan dengan nama Tanda Masuk, kegagalan ini membolehkan anda mengelak mekanisme pengesahan tandatangan digital semasa kemas kini mikrokod pada pemproses AMD menggunakan empat generasi pertama seni bina mikro Zen.
Tanda Masuk mempengaruhi pelbagai pemproses, membenarkan penyerang memintas kawalan keselamatan yang memastikan integriti kod mikro, yang berpotensi membuka pintu kepada pengubahsuaian berniat jahat pada tingkah laku perkakasan.
Mengenai kerentanan
Asal kelemahan ini terletak pada penggunaan algoritma AES-CMAC semasa pengesahan tandatangan digital dan bukannya fungsi cincang yang dipercayai. AMD menggunakan algoritma ini untuk menandatangani kod mikro, menggunakan kunci RSA peribadi dan menambah kunci awam pada tampung.
Proses pengesahan melibatkan pemproses membandingkan cincangan kunci awam yang dibenamkan semasa pembuatan dengan cincangan kunci yang dinyatakan dalam tampung. Walau bagaimanapun, sejak CMAC digunakan, yang sebenarnya bukan fungsi cincang tetapi kod pengesahan penghantaran mesej, pelanggaran keselamatan telah dibuka.
CMAC adalah berdasarkan algoritma AES dan menggunakan operasi XOR untuk menggabungkan blok data, tetapi kerana ia tidak direka bentuk untuk menjadi tahan perlanggaran, ia membenarkan penyerang yang mengetahui kunci penyulitan mengira nilai perantaraan yang mengimbangi perubahan dalam input, meninggalkan hasil operasi tidak berubah.
Kedua-dua Intel dan AMD mereka bentuk set arahan mikrokod berasaskan RISC yang unik, kedua-duanya tidak didokumenkan, tetapi secara konsepnya serupa dengan set arahan RISC lain seperti ARM atau RISC-V. Seperti perisian, melaksanakan perkakasan kompleks dengan betul adalah satu cabaran; Dari segi sejarah, ini telah membawa kepada pelbagai pepijat yang terkenal, seperti pepijat FDIV Intel dalam Pentium pada tahun 1994.
AMD membekalkan satu kunci penyulitan untuk AES-CMAC dalam semua pemprosesnya dari Zen 1 hingga Zen 4, yang bermaksud bahawa jika seseorang mengekstrak kunci ini daripada satu CPU, mereka boleh menggunakannya pada semua yang lain. Malah, penyelidik mendapati bahawa pemproses ini menggunakan kunci yang diketahui, diambil daripada contoh dalam garis panduan NIST SP 800-38B.
Ini telah membenarkan, secara teori, menghasilkan tampung palsu dengan menggantikan kunci awam patch dengan kunci yang menghasilkan cincangan yang sama, dan pilih perlanggaran untuk tandatangan digital. Perlanggaran sedemikian dicapai dengan menambahkan blok tambahan data yang kelihatan rawak pada mikrokod, supaya tampalan yang diubah suai mengekalkan tandatangan digital asal AMD.
Untuk mengatasi masalah iniUntuk meneroka cara baharu untuk memanipulasi mikrokod dalam pemproses AMD, jurutera Google Mereka membangunkan Zentool, koleksi alat gabungan untuk pemeriksaan tampalan mikrokod, termasuk pembongkaran terhad, penciptaan tampalan mikrokod menggunakan jumlah terhad pemasangan kejuruteraan terbalik.
Zentool telah direka untuk memudahkan analisis dan pengubahsuaian mikrokod, menawarkan satu siri arahan yang membenarkan daripada mengedit parameter dan menggantikan arahan kepada memuatkan mikrokod yang diubah suai ke dalam CPU dan membetulkan tandatangan digital tampung.
Sebagai contoh, arahan "zentool edit" membolehkan pengeditan parameter dalam fail mikrokod, manakala "zentool print" memaparkan maklumat terperinci tentang struktur dalaman mikrokod. Selain itu, «zentool load» memuatkan mikrokod ke dalam CPU dan «zentool resign» mengira semula tandatangan digital, dengan mengambil kira perubahan yang dibuat. Selain itu, pakej termasuk utiliti seperti mcas dan mcop, yang menyediakan fungsi pemasang dan pembongkar untuk bekerja secara langsung dengan mikrokod.
Keupayaan daripada Zentool membolehkan pembangun menyediakan dan menggunakan tampalan mereka sendiri pada pemproses AMD Zen Sebagai contoh ilustrasi, tampalan telah disediakan yang mengubah logik arahan RDRAND. Selepas menggunakan tampalan ini, arahan RDRAND berhenti menjana urutan rawak pseudo dan mula konsisten mengembalikan nombor 4, sekali gus menunjukkan kuasa mengubah suai mikrokod dan mengubah tingkah laku yang dijangkakan pemproses.
Perlu disebutkan bahawa Zentool disertakan dengan panduan terperinci tentang RISC86 microarchitecture yang digunakan dalam mikrokod AMD, serta nota pengajaran yang menerangkan cara membuat mikrokod tersuai. Panduan menunjukkan, antara lain, cara mereka bentuk arahan pemproses baharu, mengubah suai tingkah laku arahan sedia ada dan memuatkan perubahan tersebut terus ke dalam CPU.
Akhir sekali, jika anda berminat untuk mengetahui lebih lanjut mengenainya, anda boleh merujuk butiran di dalam pautan berikut.