Kerentanan di KVM memungkinkan eksekusi kode di luar sistem tamu pada prosesor AMD

Para peneliti dari tim Google Project Zero meluncurkan beberapa hari yang lalu dalam sebuah posting blog yang telah mengidentifikasi kerentanan (CVE-2021-29657) di hypervisor KVM (hypervisor berbasis Linux open source yang mendukung virtualisasi akselerasi perangkat keras pada x86, ARM, PowerPC, dan S/390) yang memungkinkan Anda untuk menghindari isolasi sistem tamu dan jalankan kode Anda di sisi lingkungan Host.

Posting itu menyebutkan bahwa masalahnya bermanifestasi dari kernel Linux 5.10-rc1 hingga v5.12-rc6, itu adalah, hanya mencakup kernel 5.10 dan 5.11 (Sebagian besar cabang distribusi yang stabil tidak terpengaruh oleh masalah tersebut.) Masalahnya hadir dalam mekanisme nested_svm_vmrun, diimplementasikan menggunakan ekstensi AMD SVM (Secure Virtual Machine) dan memungkinkan peluncuran sistem tamu bersarang.

Dalam posting blog ini, saya menjelaskan kerentanan dalam kode KVM khusus AMD dan membahas bagaimana bug ini dapat berubah menjadi pelarian mesin virtual yang lengkap. Sejauh yang saya tahu, ini adalah penulisan publik pertama dari pelarian tamu-ke-Host KVM yang tidak bergantung pada bug di komponen ruang pengguna seperti QEMU.

Bug yang dibahas ditetapkan CVE-2021-29657, memengaruhi versi kernel v5.10-rc1 hingga v5.12-rc6, dan telah ditambal pada akhir Maret 2021. Karena bug hanya dapat dieksploitasi di v5.10 dan ditemukan sekitar 5 bulan kemudian, sebagian besar penerapan KVM di dunia nyata seharusnya tidak terpengaruh. Saya masih berpikir bahwa masalahnya adalah studi kasus yang menarik dalam pekerjaan yang diperlukan untuk membangun pelarian tamu-ke-host yang stabil terhadap KVM dan saya harap artikel ini dapat menjelaskan bahwa kompromi hypervisor bukan hanya masalah teoretis.

Para peneliti menyebutkan bahwa untuk implementasi yang benar dari fungsi ini, hypervisor harus mencegat semua instruksi SVM berjalan di sistem tamu, meniru perilakunya dan menyinkronkan status dengan perangkat keras, yang merupakan tugas yang cukup sulit.

Setelah menganalisis implementasi KVM yang diusulkan, para penelitis mengalami kesalahan logika yang memungkinkan konten MSR (Pendaftaran khusus model) dari tuan rumah dipengaruhi dari sistem tamu, yang dapat digunakan untuk mengeksekusi kode di tingkat host.

Secara khusus, menjalankan operasi VMRUN dari tamu tingkat bersarang kedua (L2 diluncurkan dari tamu lain) mengarah ke panggilan kedua ke nested_svm_vmrun dan merusak struktur svm-> nested.hsave, yang dilapisi dengan data dari vmcb dari sistem tamu L2 .

Akibatnya, muncul situasi di mana pada tingkat tamu L2 dimungkinkan untuk mengosongkan memori dalam struktur svm-> nested.msrpm, yang menyimpan bit MSR, meskipun terus digunakan, dan mengakses MSR dari host lingkungan.

Ini berarti, misalnya, bahwa memori tamu dapat diperiksa dengan membuang memori yang dialokasikan dari proses ruang penggunanya atau bahwa batas sumber daya untuk waktu dan memori CPU dapat dengan mudah diterapkan. 

Selain itu, KVM dapat menurunkan sebagian besar pekerjaan yang terkait dengan emulasi perangkat ke komponen ruang pengguna.

Masalahnya ada dalam kode yang digunakan pada sistem dengan prosesor AMD (modul kvm-amd.ko) dan tidak muncul pada prosesor Intel.

 Di luar beberapa perangkat sensitif kinerja yang menangani penanganan interupsi, semua kode tingkat rendah yang kompleks untuk menyediakan disk virtual, jaringan, atau akses GPU dapat digunakan di ruang pengguna.  

Para peneliti selain mendeskripsikan masalah Mereka juga telah menyiapkan prototipe kerja eksploitasi yang memungkinkan menjalankan shell root dari lingkungan tamu di lingkungan host pada sistem dengan prosesor AMD Epyc 7351P dan kernel Linux 5.10.

Hal itu diamati ini adalah tamu pertama yang meng-host kerentanan di hypervisor KVM itu sendiri, tidak terkait dengan bug di komponen ruang pengguna seperti QEMU. Perbaikan diterima di kernel pada akhir Maret.

Akhirnya jika Anda tertarik untuk mengetahui lebih banyak tentang itu tentang catatan itu, Anda dapat memeriksa detailnya Di tautan berikut.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.