Retbleed ialah serangan baharu terhadap mekanisme pelaksanaan spekulatif CPU Intel dan AMD

Sekumpulan penyelidik dari ETH Zurich telah mengenal pasti serangan baharu ke atas mekanisme pelaksanaan spekulatif peralihan tidak langsung dalam CPU, yang memungkinkan untuk mengekstrak maklumat daripada memori kernel atau mengatur serangan ke atas sistem hos daripada mesin maya. Kerentanan tersebut diberi nama kod Retbleed (CVE-2022-29900, CVE-2022-29901) dan bersifat dekat dengan serangan Specter-v2. Perbezaannya datang kepada organisasi pelaksanaan spekulatif kod sewenang-wenangnya apabila memproses arahan "ret" (kembali), yang mengambil alamat untuk melompat dari timbunan, bukannya lompatan tidak langsung menggunakan arahan "jmp", memuatkan alamat dari memori atau daftar CPU.

Penyerang boleh mencipta syarat untuk ramalan peralihan yang salah dan mengatur peralihan spekulatif yang disasarkan kepada blok kod yang tidak disediakan oleh logik pelaksanaan program. Akhirnya, pemproses akan menentukan bahawa ramalan cawangan tidak wajar dan akan melancarkan semula operasi kepada keadaan asalnya, tetapi data yang diproses semasa pelaksanaan spekulatif akan berakhir dalam cache dan penimbal mikroarkitektur. Jika blok yang dilaksanakan secara salah mengakses memori, maka pelaksanaan spekulatifnya akan membawa kepada data yang dibaca daripada memori disimpan dalam cache kongsi.

Untuk menentukan data yang tinggal dalam cache selepas operasi spekulatif, penyerang boleh menggunakan teknik saluran sisi untuk menentukan data baki, seperti menganalisis perubahan dalam masa akses kepada data cache dan tidak cache. Untuk mengekstrak maklumat secara sengaja dari kawasan pada tahap keistimewaan lain (contohnya, dari memori kernel), "alat" digunakan - urutan perintah yang terdapat dalam kernel yang sesuai untuk membaca data secara spekulatif dari memori bergantung pada keadaan luaran yang boleh dipengaruhi oleh penyerang.

Untuk melindungi daripada serangan kelas Spectre klasik yang menggunakan arahan lompat bersyarat dan tidak langsung, kebanyakan sistem pengendalian menggunakan teknik "retpoline", yang berdasarkan menggantikan operasi lompatan tidak langsung dengan arahan "ret", yang mana pemproses menggunakan unit ramalan keadaan tindanan yang berasingan. .tidak menggunakan blok ramalan cawangan. Apabila reppoline diperkenalkan pada 2018, dipercayai bahawa manipulasi alamat seperti Spectre tidak praktikal untuk percabangan spekulatif menggunakan arahan "ret".

Para penyelidik yang membangunkan kaedah serangan Retbleed menunjukkan kemungkinan mewujudkan keadaan mikroarkitektur untuk memulakan peralihan spekulatif menggunakan arahan "ret" dan menerbitkan alat siap sedia untuk mengenal pasti urutan arahan (alat) yang sesuai untuk mengeksploitasi kelemahan dalam kernel Linux, di mana keadaan sedemikian nyata.

Semasa penyelidikan, eksploitasi kerja telah disediakan yang membolehkan, pada sistem dengan CPU Intel, untuk mengekstrak data sewenang-wenang daripada memori kernel daripada proses yang tidak mempunyai hak istimewa dalam ruang pengguna pada kelajuan 219 bait sesaat dan ketepatan 98%. Pada pemproses AMD, kecekapan eksploitasi jauh lebih tinggiβ€”kadar kebocoran ialah 3.9 KB sesaat. Sebagai contoh praktikal, kami menunjukkan cara menggunakan eksploitasi yang dicadangkan untuk menentukan kandungan fail /etc/shadow. Pada sistem dengan CPU Intel, serangan untuk menentukan cincang kata laluan pengguna root telah dilakukan dalam masa 28 minit, dan pada sistem dengan CPU AMD - dalam 6 minit.

Serangan itu telah disahkan untuk generasi 6-8 pemproses Intel yang dikeluarkan sebelum Q3 2019 (termasuk Skylake), dan pemproses AMD berdasarkan Zen 1, Zen 1+ dan Zen 2 microarchitectures yang dikeluarkan sebelum Q2021 3. Dalam model pemproses yang lebih baharu seperti AMD ZenXNUMX dan Intel Alder Lake, serta dalam pemproses ARM, masalahnya disekat oleh mekanisme perlindungan sedia ada. Contohnya, menggunakan arahan IBRS (Indirect Branch Restricted Speculation) membantu melindungi daripada serangan.

Satu set perubahan telah disediakan untuk kernel Linux dan hypervisor Xen, yang akan menyekat masalah dalam perisian pada CPU lama. Tampalan yang dicadangkan untuk kernel Linux menukar 68 fail, menambah 1783 baris, dan memadam 387 baris. Malangnya, perlindungan membawa kepada kos overhed yang ketara - dalam teks yang dijalankan pada pemproses AMD dan Intel, penurunan prestasi dianggarkan daripada 14% kepada 39%. Adalah lebih baik untuk menggunakan perlindungan berdasarkan arahan IBRS, tersedia dalam CPU Intel generasi baharu dan disokong bermula dengan kernel Linux 4.19.

Pada pemproses Intel, penggantian alamat untuk lompatan tidak langsung spekulatif dilakukan terima kasih kepada ciri yang muncul apabila limpahan berlaku melalui sempadan bawah (aliran bawah) dalam Penampan Tindanan Kembali. Apabila keadaan sedemikian berlaku, arahan "ret" mula menggunakan logik pemilihan alamat yang serupa dengan yang digunakan untuk lompatan tidak langsung biasa. Lebih daripada seribu tempat telah ditemui dalam kernel Linux yang mewujudkan keadaan untuk memulakan aliran balik sedemikian dan boleh diakses melalui panggilan sistem.

Pada pemproses AMD, pelaksanaan spekulatif arahan "ret" dijalankan tanpa merujuk kepada penimbal khusus tindanan (Timbunan Alamat Kembali) dan unit ramalan cawangan menganggap arahan "ret" bukan sebagai pemulangan kawalan, tetapi sebagai cawangan tidak langsung , dan, dengan itu, menggunakan data untuk ramalan peralihan tidak langsung. Di bawah keadaan ini, hampir mana-mana operasi "ret" yang boleh dicapai melalui panggilan sistem boleh dieksploitasi.

Selain itu, isu lain juga telah dikenal pasti dalam CPU AMD (CVE-2022-23825, Kekeliruan Jenis Cawangan) yang berkaitan dengan pelaksanaan cawangan rekaan - syarat untuk ramalan cawangan boleh berlaku walaupun tanpa arahan cawangan yang diperlukan, yang membolehkan mempengaruhi penimbal ramalan cawangan tanpa arahan "ret". Ciri ini secara ketara merumitkan pelaksanaan perlindungan dan memerlukan pembersihan yang lebih aktif bagi penimbal ramalan cawangan. Menambah perlindungan penuh pada kernel dijangka meningkatkan overhed sebanyak 209%.

Sumber: opennet.ru

Tambah komen