Kerentanan dalam CPU AMD yang membolehkan anda memintas mekanisme perlindungan SEV (Secure Encrypted Virtualization)

Penyelidik di Pusat Keselamatan Maklumat Helmholtz (CISPA) telah menerbitkan kaedah serangan CacheWarp baharu untuk menjejaskan mekanisme keselamatan AMD SEV (Secure Encrypted Virtualization) yang digunakan dalam sistem virtualisasi untuk melindungi mesin maya daripada gangguan oleh hypervisor atau pentadbir sistem hos. Kaedah yang dicadangkan membenarkan penyerang dengan akses kepada hipervisor untuk melaksanakan kod pihak ketiga dan meningkatkan keistimewaan dalam mesin maya yang dilindungi menggunakan AMD SEV.

Serangan ini berdasarkan penggunaan kelemahan (CVE-2023-20592) yang disebabkan oleh operasi cache yang salah semasa pelaksanaan arahan pemproses INVD, dengan bantuan yang mungkin untuk mencapai ketidakpadanan data dalam memori dan cache , dan mekanisme pintasan untuk mengekalkan integriti memori mesin maya, dilaksanakan berdasarkan sambungan SEV-ES dan SEV-SNP. Kerentanan mempengaruhi pemproses AMD EPYC dari generasi pertama hingga ketiga.

Untuk pemproses AMD EPYC generasi ketiga (Zen 3), isu ini diselesaikan dalam kemas kini mikrokod November yang dikeluarkan semalam oleh AMD (pembetulan itu tidak mengakibatkan sebarang penurunan prestasi). Untuk generasi pertama dan kedua AMD EPYC (Zen 1 dan Zen 2), perlindungan tidak disediakan, kerana CPU ini tidak menyokong sambungan SEV-SNP, yang menyediakan kawalan integriti untuk mesin maya. Generasi keempat pemproses AMD AMD EPYC "Genoa" berdasarkan seni bina mikro "Zen 4" tidak terdedah.

Teknologi AMD SEV digunakan untuk pengasingan mesin maya oleh penyedia awan seperti Amazon Web Services (AWS), Google Cloud, Microsoft Azure dan Oracle Compute Infrastructure (OCI). Perlindungan AMD SEV dilaksanakan melalui penyulitan peringkat perkakasan memori mesin maya. Selain itu, sambungan SEV-ES (Encrypted State) melindungi daftar CPU. Hanya sistem tetamu semasa mempunyai akses kepada data yang disulitkan, dan apabila mesin maya lain dan hypervisor cuba mengakses memori ini, mereka menerima set data yang disulitkan.

Generasi ketiga pemproses AMD EPYC memperkenalkan sambungan tambahan, SEV-SNP (Secure Nested Paging), yang memastikan operasi selamat bagi jadual halaman memori bersarang. Selain penyulitan memori umum dan pengasingan daftar, SEV-SNP melaksanakan langkah tambahan untuk melindungi integriti memori dengan menghalang perubahan pada VM oleh hypervisor. Kekunci penyulitan diuruskan pada sisi pemproses PSP (Pemproses Keselamatan Platform) berasingan yang dibina ke dalam cip, dilaksanakan berdasarkan seni bina ARM.

Intipati kaedah serangan yang dicadangkan adalah menggunakan arahan INVD untuk membatalkan blok (baris) dalam cache halaman kotor tanpa membuang data terkumpul dalam cache ke dalam ingatan (tulis balik). Oleh itu, kaedah ini membolehkan anda mengusir data yang diubah daripada cache tanpa mengubah keadaan memori. Untuk menjalankan serangan, dicadangkan untuk menggunakan pengecualian perisian (suntikan kesalahan) untuk mengganggu operasi mesin maya di dua tempat: pertama sekali, penyerang memanggil arahan "wbnoinvd" untuk menetapkan semula semua operasi tulis memori yang terkumpul dalam cache, dan di tempat kedua memanggil arahan "invd" untuk mengembalikan operasi tulis yang tidak ditunjukkan dalam ingatan kepada keadaan lama.

Untuk menyemak kelemahan sistem anda, prototaip eksploitasi telah diterbitkan yang membolehkan anda memasukkan pengecualian ke dalam mesin maya yang dilindungi melalui AMD SEV dan melancarkan semula perubahan dalam VM yang belum ditetapkan semula ke memori. Rollback perubahan boleh digunakan untuk menukar aliran atur cara dengan mengembalikan alamat pemulangan lama pada tindanan, atau menggunakan parameter log masuk sesi lama yang telah disahkan sebelum ini dengan mengembalikan nilai atribut pengesahan.

Sebagai contoh, penyelidik menunjukkan kemungkinan menggunakan kaedah CacheWarp untuk menjalankan serangan Bellcore terhadap pelaksanaan algoritma RSA-CRT dalam perpustakaan ipp-crypto, yang memungkinkan untuk memulihkan kunci persendirian melalui penggantian ralat semasa mengira digital. tandatangan. Ia juga menunjukkan cara anda boleh menukar parameter pengesahan sesi kepada OpenSSH apabila menyambung dari jauh ke sistem tetamu, dan kemudian menukar keadaan pengesahan apabila menjalankan utiliti sudo untuk mendapatkan hak root dalam Ubuntu 20.04. Eksploit telah diuji pada sistem dengan pemproses AMD EPYC 7252, 7313P dan 7443.

Sumber: opennet.ru

Tambah komen