Kerentanan dalam prosesor Intel menyebabkan kebocoran data melalui saluran pihak ketiga

Sekelompok peneliti dari universitas Cina dan Amerika telah mengidentifikasi kerentanan baru dalam prosesor Intel yang mengarah pada kebocoran informasi tentang hasil operasi spekulatif melalui saluran pihak ketiga, yang dapat digunakan, misalnya, untuk mengatur saluran komunikasi tersembunyi. antara proses atau mendeteksi kebocoran selama serangan Meltdown.

Inti dari kerentanan adalah bahwa perubahan dalam register prosesor EFLAGS, yang terjadi sebagai akibat dari eksekusi spekulatif instruksi, memengaruhi waktu eksekusi instruksi JCC selanjutnya (melompat ketika kondisi yang ditentukan terpenuhi). Operasi spekulatif tidak selesai dan hasilnya dibuang, tetapi perubahan EFLAGS yang dibuang dapat ditentukan dengan menganalisis waktu eksekusi instruksi JCC. Operasi perbandingan pra-lompatan yang dilakukan secara spekulatif, jika perbandingan berhasil, menghasilkan penundaan kecil yang dapat diukur dan digunakan sebagai fitur untuk mencocokkan konten.

Kerentanan dalam prosesor Intel menyebabkan kebocoran data melalui saluran pihak ketiga

Tidak seperti serangan serupa lainnya melalui saluran pihak ketiga, metode baru ini tidak menganalisis perubahan waktu akses ke data yang di-cache dan non-cache dan tidak memerlukan tahap mengatur ulang register EFLAGS ke keadaan awal, yang membuatnya sulit untuk mendeteksi dan memblokir serangan. Sebagai demonstrasi, para peneliti mengimplementasikan varian serangan Meltdown, menggunakan metode baru di dalamnya untuk mendapatkan informasi tentang hasil operasi spekulatif. Pengoperasian metode untuk mengatur kebocoran informasi selama serangan Meltdown telah berhasil didemonstrasikan pada sistem dengan CPU Intel Core i7-6700 dan i7-7700 di lingkungan dengan kernel Ubuntu 22.04 dan Linux 5.15. Pada sistem dengan CPU Intel i9-10980XE, serangan itu hanya berhasil sebagian.

Kerentanan Meltdown didasarkan pada fakta bahwa selama eksekusi instruksi spekulatif, prosesor dapat mengakses area data pribadi, dan kemudian membuang hasilnya, karena hak istimewa yang ditetapkan melarang akses tersebut dari proses pengguna. Dalam sebuah program, blok yang dieksekusi secara spekulatif dipisahkan dari kode utama dengan lompatan bersyarat, yang dalam kondisi nyata selalu menyala, tetapi karena pernyataan bersyarat menggunakan nilai yang dihitung yang tidak diketahui prosesor selama kode pre-emptive eksekusi, semua opsi percabangan dieksekusi secara spekulatif.

Dalam Meltdown versi klasik, karena cache yang sama digunakan untuk operasi yang dieksekusi secara spekulatif seperti untuk instruksi yang biasanya dieksekusi, dimungkinkan selama eksekusi spekulatif untuk menetapkan penanda dalam cache yang mencerminkan konten bit individu di area memori tertutup, dan kemudian dalam kode yang biasanya dieksekusi untuk menentukan artinya melalui analisis waktu akses ke data yang di-cache dan yang tidak di-cache. Varian baru menggunakan perubahan register EFLAGS sebagai penanda kebocoran. Dalam demo Covert Channel, satu proses memodulasi data yang dikirim untuk mengubah isi register EFLAGS, dan proses lain mengurai perubahan waktu eksekusi instruksi JCC untuk membuat ulang data yang dikirim oleh proses pertama.

Sumber: opennet.ru

Tambah komentar