Kerentanan pada CPU AMD yang memungkinkan Anda melewati mekanisme perlindungan SEV (Secure Encrypted Virtualization)

Para peneliti di Pusat Keamanan Informasi Helmholtz (CISPA) telah menerbitkan metode serangan CacheWarp baru untuk mengkompromikan mekanisme keamanan AMD SEV (Secure Encrypted Virtualization) yang digunakan dalam sistem virtualisasi untuk melindungi mesin virtual dari gangguan oleh hypervisor atau administrator sistem host. Metode yang diusulkan memungkinkan penyerang yang memiliki akses ke hypervisor untuk mengeksekusi kode pihak ketiga dan meningkatkan hak istimewa di mesin virtual yang dilindungi menggunakan AMD SEV.

Serangan ini didasarkan pada penggunaan kerentanan (CVE-2023-20592) yang disebabkan oleh pengoperasian cache yang salah selama eksekusi instruksi prosesor INVD, yang memungkinkan terjadinya ketidakcocokan data dalam memori dan cache. , dan mekanisme bypass untuk menjaga integritas memori mesin virtual, diimplementasikan berdasarkan ekstensi SEV-ES dan SEV-SNP. Kerentanan tersebut mempengaruhi prosesor AMD EPYC dari generasi pertama hingga ketiga.

Untuk prosesor AMD EPYC generasi ketiga (Zen 3), masalah ini diselesaikan dalam pembaruan mikrokode November yang dirilis kemarin oleh AMD (perbaikan tidak mengakibatkan penurunan kinerja apa pun). Untuk AMD EPYC generasi pertama dan kedua (Zen 1 dan Zen 2), perlindungan tidak diberikan, karena CPU ini tidak mendukung ekstensi SEV-SNP, yang menyediakan kontrol integritas untuk mesin virtual. Prosesor AMD AMD EPYC β€œGenoa” generasi keempat berdasarkan mikroarsitektur β€œZen 4” tidak rentan.

Teknologi AMD SEV digunakan untuk isolasi mesin virtual oleh penyedia cloud seperti Amazon Web Services (AWS), Google Cloud, Microsoft Azure dan Oracle Compute Infrastructure (OCI). Perlindungan AMD SEV diimplementasikan melalui enkripsi tingkat perangkat keras pada memori mesin virtual. Selain itu, ekstensi SEV-ES (Encrypted State) melindungi register CPU. Hanya sistem tamu saat ini yang memiliki akses ke data yang didekripsi, dan ketika mesin virtual lain dan hypervisor mencoba mengakses memori ini, mereka menerima kumpulan data terenkripsi.

Prosesor AMD EPYC generasi ketiga memperkenalkan ekstensi tambahan, SEV-SNP (Secure Nested Paging), yang memastikan pengoperasian tabel halaman memori bersarang dengan aman. Selain enkripsi memori umum dan isolasi register, SEV-SNP menerapkan langkah-langkah tambahan untuk melindungi integritas memori dengan mencegah perubahan pada VM oleh hypervisor. Kunci enkripsi dikelola di sisi prosesor PSP (Platform Security Processor) terpisah yang terpasang di dalam chip, diimplementasikan berdasarkan arsitektur ARM.

Inti dari metode serangan yang diusulkan adalah dengan menggunakan instruksi INVD untuk membatalkan blok (baris) di cache halaman kotor tanpa membuang data yang terkumpul di cache ke dalam memori (write-back). Dengan demikian, metode ini memungkinkan Anda untuk mengeluarkan data yang diubah dari cache tanpa mengubah status memori. Untuk melakukan serangan, diusulkan untuk menggunakan pengecualian perangkat lunak (injeksi kesalahan) untuk mengganggu pengoperasian mesin virtual di dua tempat: pertama, penyerang memanggil instruksi "wbnoinvd" untuk mengatur ulang semua operasi penulisan memori yang terakumulasi di cache, dan yang kedua memanggil instruksi β€œinvd” untuk mengembalikan operasi tulis yang tidak tercermin dalam memori ke keadaan lama.

Untuk memeriksa kerentanan sistem Anda, prototipe eksploitasi telah diterbitkan yang memungkinkan Anda memasukkan pengecualian ke dalam mesin virtual yang dilindungi melalui AMD SEV dan mengembalikan perubahan pada VM yang belum diatur ulang ke memori. Rollback perubahan dapat digunakan untuk mengubah alur program dengan mengembalikan alamat pengirim lama di tumpukan, atau menggunakan parameter login sesi lama yang sebelumnya diautentikasi dengan mengembalikan nilai atribut otentikasi.

Misalnya, peneliti menunjukkan kemungkinan menggunakan metode CacheWarp untuk melakukan serangan Bellcore pada implementasi algoritma RSA-CRT di perpustakaan ipp-crypto, yang memungkinkan untuk memulihkan kunci pribadi melalui substitusi kesalahan saat menghitung digital tanda tangan. Ini juga menunjukkan bagaimana Anda dapat mengubah parameter verifikasi sesi ke OpenSSH saat menghubungkan dari jarak jauh ke sistem tamu, dan kemudian mengubah status verifikasi saat menjalankan utilitas sudo untuk mendapatkan hak root di Ubuntu 20.04. Eksploitasi ini telah diuji pada sistem dengan prosesor AMD EPYC 7252, 7313P dan 7443.

Sumber: opennet.ru

Tambah komentar