Plundervolt adalah metode serangan baru pada prosesor Intel yang mempengaruhi teknologi SGX

Intel dirilis pembaruan mikrokode yang diperbaiki kerentanan (CVE-2019-14607), memungkinkan melalui manipulasi mekanisme kontrol tegangan dan frekuensi dinamis di CPU, memulai kerusakan pada konten sel data, termasuk di area yang digunakan untuk perhitungan di enclave Intel SGX yang terisolasi. Serangan ini disebut Plundervolt, dan berpotensi memungkinkan pengguna lokal meningkatkan hak istimewa mereka pada sistem, menyebabkan penolakan layanan, dan mendapatkan akses ke data sensitif.

Serangan ini berbahaya hanya dalam konteks manipulasi perhitungan di kantong SGX, karena memerlukan hak root pada sistem untuk dapat melaksanakannya. Dalam kasus yang paling sederhana, penyerang dapat mendistorsi informasi yang diproses di enklave, tetapi dalam skenario yang lebih kompleks, kemungkinan membuat ulang kunci pribadi yang disimpan di enklave yang digunakan untuk enkripsi menggunakan algoritma RSA-CRT dan AES-NI tidak ada. pengecualian. Teknik ini juga dapat digunakan untuk menghasilkan kesalahan pada algoritma yang awalnya benar untuk memicu kerentanan saat bekerja dengan memori, misalnya, untuk mengatur akses ke area di luar batas buffer yang dialokasikan.
Kode prototipe untuk melakukan serangan diterbitkan di GitHub

Inti dari metode ini adalah untuk menciptakan kondisi terjadinya kerusakan data yang tidak terduga selama perhitungan di SGX, yang tidak dilindungi oleh penggunaan enkripsi dan otentikasi memori di enclave. Untuk menimbulkan distorsi, ternyata dimungkinkan untuk menggunakan antarmuka perangkat lunak standar untuk mengontrol frekuensi dan tegangan, biasanya digunakan untuk mengurangi konsumsi daya selama waktu idle sistem dan mengaktifkan kinerja maksimum selama pekerjaan intensif. Karakteristik frekuensi dan voltase menjangkau seluruh chip, termasuk dampak komputasi dalam lingkungan yang terisolasi.

Dengan mengubah voltase, Anda dapat menciptakan kondisi di mana muatan tidak cukup untuk meregenerasi sel memori di dalam CPU, dan nilainya berubah. Perbedaan utama dari serangan BarisHammer adalah RowHammer memungkinkan Anda mengubah konten bit individual dalam memori DRAM dengan membaca data secara siklis dari sel tetangga, sedangkan Plundervolt memungkinkan Anda mengubah bit di dalam CPU ketika data telah dimuat dari memori untuk komputasi. Fitur ini memungkinkan Anda untuk melewati kontrol integritas dan mekanisme enkripsi yang digunakan di SGX untuk data di memori, karena nilai di memori tetap benar, namun dapat terdistorsi selama pengoperasian dengannya sebelum hasilnya ditulis ke memori.

Jika nilai yang dimodifikasi ini digunakan dalam proses perkalian proses enkripsi, outputnya ditolak dengan ciphertext yang salah. Memiliki kemampuan untuk menghubungi pengendali di SGX untuk mengenkripsi datanya, penyerang dapat, menyebabkan kegagalan, mengumpulkan statistik tentang perubahan dalam ciphertext keluaran dan, dalam beberapa menit, memulihkan nilai kunci yang disimpan di enclave. Teks masukan asli dan teks sandi keluaran yang benar diketahui, kuncinya tidak berubah, dan keluaran teks sandi yang salah menunjukkan bahwa beberapa bit telah terdistorsi ke nilai yang berlawanan.

Setelah menganalisis pasangan nilai ciphertext yang benar dan rusak yang terakumulasi selama berbagai kegagalan, menggunakan metode analisis kegagalan diferensial (DFA, Analisis Kesalahan Diferensial) Bisa meramalkan kemungkinan kunci yang digunakan untuk enkripsi simetris AES, dan kemudian, dengan menganalisis perpotongan kunci dalam kumpulan yang berbeda, tentukan kunci yang diinginkan.

Berbagai model prosesor Intel terpengaruh oleh masalah ini, termasuk CPU Intel Core dengan 6
Generasi ke-10, serta Xeon E3 generasi kelima dan keenam, Intel Xeon Scalable generasi pertama dan kedua, Xeon D,
Xeon W dan Xeon E.

Izinkan kami mengingatkan Anda bahwa teknologi SGX (Ekstensi Pelindung Perangkat Lunak) muncul di prosesor Intel Core generasi keenam (Skylake) dan menawarkan serangkaian instruksi yang memungkinkan aplikasi tingkat pengguna untuk mengalokasikan area memori tertutup - enklave, yang isinya tidak dapat dibaca atau dimodifikasi bahkan oleh kernel dan kode yang berjalan dalam mode ring0, SMM dan VMM. Tidak mungkin untuk mentransfer kendali ke kode di enklave menggunakan fungsi lompatan tradisional dan manipulasi dengan register dan tumpukan; untuk mentransfer kendali ke enklave, instruksi baru yang dibuat khusus digunakan yang melakukan pemeriksaan otoritas. Dalam hal ini, kode yang ditempatkan di enklave dapat menggunakan metode panggilan klasik untuk mengakses fungsi di dalam enklave dan instruksi khusus untuk memanggil fungsi eksternal. Enkripsi memori enclave digunakan untuk melindungi terhadap serangan perangkat keras seperti menghubungkan ke modul DRAM.

Sumber: opennet.ru

Tambah komentar