Kerentanan dalam mekanisme MMIO prosesor Intel

Intel telah mengungkapkan informasi tentang kebocoran data kelas baru melalui struktur mikroarsitektur prosesor, yang memungkinkan, melalui manipulasi mekanisme MMIO (Memory Mapped Input Output), untuk menentukan informasi yang diproses pada inti CPU lainnya. Misalnya, kerentanan memungkinkan data diekstraksi dari proses lain, enklave Intel SGX, atau mesin virtual. Kerentanan hanya spesifik untuk CPU Intel; prosesor dari pabrikan lain tidak terpengaruh oleh kerentanan tersebut.

Kerentanan muncul di berbagai CPU Intel, termasuk prosesor berbasis mikroarsitektur Haswell, Skylake, IceLake, Broadwell, Lakefield, Kabylake, Cometlake dan Rocketlake, serta Xeon EP/EX, Scalable, dan beberapa prosesor server Atom. Untuk melakukan serangan, diperlukan akses ke MMIO, yang misalnya dapat diperoleh dalam sistem virtualisasi yang menyediakan kemampuan mengakses MMIO untuk sistem tamu yang dikendalikan oleh penyerang. Perbaikan mungkin juga diperlukan untuk sistem yang menggunakan enklave terisolasi Intel SGX (Software Guard Extensions).

Memblokir kerentanan memerlukan pembaruan mikrokode dan penggunaan metode perlindungan perangkat lunak tambahan berdasarkan penggunaan instruksi VERW untuk menghapus konten buffer mikroarsitektur saat kembali dari kernel ke ruang pengguna atau saat mentransfer kontrol ke sistem tamu. Perlindungan serupa juga digunakan untuk memblokir serangan kelas MDS (Microarchitectural Data Sampling), SRBDS (Special Register Buffer Data Sampling) dan TAA (Transactional Asynchronous Abort) yang diidentifikasi sebelumnya.

Di sisi mikrokode, perubahan yang diperlukan untuk menerapkan perlindungan diusulkan dalam pembaruan mikrokode bulan Mei untuk CPU Intel (IPU 2022.1). Di kernel Linux, perlindungan terhadap serangan kelas baru disertakan dalam rilis 5.18.5, 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284, dan 4.9.319. Untuk memeriksa paparan sistem terhadap kerentanan di MMIO dan mengevaluasi aktivitas mekanisme perlindungan tertentu, file β€œ/sys/devices/system/cpu/vulnerabilities/mmio_stale_data” telah ditambahkan ke kernel Linux. Untuk mengontrol penyertaan perlindungan, parameter boot kernel "mmio_stale_data" telah diterapkan, yang dapat mengambil nilai "penuh" (memungkinkan pembersihan buffer saat berpindah ke ruang pengguna dan di VM), "penuh,nosmt" ( sebagai β€œpenuh” + juga menonaktifkan SMT/Hyper-Threads) dan β€œmati” (perlindungan dinonaktifkan). Perbaikan terpisah ditawarkan untuk hypervisor Xen dan sistem operasi Qubes.

Inti dari kelas kerentanan yang teridentifikasi adalah bahwa beberapa operasi menyebabkan penyalinan atau pemindahan data yang tersisa setelah eksekusi pada inti CPU lain dari satu buffer mikroarsitektur ke buffer lainnya. Kerentanan dalam MMIO memungkinkan data sisa ini ditransfer dari buffer mikroarsitektur terisolasi ke register yang terlihat oleh aplikasi atau buffer CPU. Tiga metode telah diidentifikasi untuk mengekstraksi data sisa melalui MMIO:

  • DRPW (Device Register Partial Write, CVE-2022-21166) adalah masalah penanganan penulisan yang salah ke beberapa register MMIO. Jika ukuran data yang ditulis lebih kecil dari ukuran register, maka informasi sisa dari buffer pengisian juga disalin ke dalam register. Hasilnya, proses yang memulai operasi penulisan yang tidak lengkap ke register MMIO dapat memperoleh data yang tersisa di buffer mikroarsitektur dari operasi yang dilakukan pada inti CPU lainnya.
  • SBDS (Shared Buffers Data Sampling, CVE-2022-21125) adalah kebocoran data sisa dari buffer pengisian yang terikat kernel akibat pergerakan dari buffer perantara yang umum untuk semua kernel.
  • SBDR (Baca Data Buffer Bersama, CVE-2022-21123) - masalahnya mirip dengan SBDS, tetapi berbeda karena data sisa dapat berakhir di struktur CPU yang terlihat oleh aplikasi. Masalah SBDS dan SBDR hanya muncul pada prosesor untuk sistem klien dan pada keluarga server Intel Xeon E3.

Kerentanan dalam mekanisme MMIO prosesor Intel


Sumber: opennet.ru

Tambah komentar