Retbleed minangka serangan anyar ing mekanisme eksekusi spekulatif saka CPU Intel lan AMD

Klompok peneliti saka ETH Zurich wis dikenali serangan anyar ing mekanisme eksekusi spekulatif transisi ora langsung ing CPU, kang ndadekake iku bisa kanggo extract informasi saka memori kernel utawa ngatur serangan ing sistem inang saka mesin virtual. Kerentanan kasebut kanthi jeneng kode Retbleed (CVE-2022-29900, CVE-2022-29901) lan cedhak karo serangan Spectre-v2. Bentenipun mudhun kanggo organisasi eksekusi spekulatif kode sewenang-wenang nalika ngolah instruksi "ret" (bali), sing njupuk alamat kanggo mlumpat saka tumpukan, tinimbang mlumpat ora langsung nggunakake instruksi "jmp", ngemot alamat saka memori utawa ndhaftar CPU.

Penyerang bisa nggawe kahanan kanggo prediksi transisi sing salah lan ngatur transisi spekulatif sing ditargetake menyang blok kode sing ora diwenehake dening logika eksekusi program. Pungkasane, prosesor bakal nemtokake manawa prediksi cabang kasebut ora dibenerake lan bakal mbalekake operasi kasebut menyang negara asline, nanging data sing diproses sajrone eksekusi spekulatif bakal ana ing cache lan buffer microarchitectural. Yen pamblokiran sing salah dieksekusi ngakses memori, eksekusi spekulatif bakal nyebabake data sing diwaca saka memori disimpen ing cache sing dienggo bareng.

Kanggo nemtokake data sing isih ana ing cache sawise operasi spekulatif, panyerang bisa nggunakake teknik saluran sisih kanggo nemtokake sisa data, kayata nganalisa owah-owahan wektu akses menyang data sing di-cache lan ora di-cache. Kanggo ngekstrak informasi kanthi sengaja saka wilayah ing tingkat hak istimewa liyane (contone, saka memori kernel), "gadget" digunakake - urutan perintah sing ana ing kernel sing cocog kanggo maca data kanthi spekulatif saka memori gumantung saka kahanan eksternal sing bisa dipengaruhi dening penyerang.

Kanggo nglindhungi saka serangan kelas Spectre klasik sing nggunakake instruksi lompat kondisional lan ora langsung, umume sistem operasi nggunakake teknik "retpoline", sing adhedhasar ngganti operasi lompat ora langsung karo instruksi "ret", sing prosesor nggunakake unit prediksi negara tumpukan kapisah. . ora nggunakake blok prediksi cabang. Nalika retpoline dikenalake ing 2018, dipercaya manawa manipulasi alamat kaya Spectre ora praktis kanggo cabang spekulatif nggunakake instruksi "ret".

Peneliti sing ngembangake metode serangan Retbleed nuduhake kemungkinan nggawe kahanan mikroarsitektur kanggo miwiti transisi spekulatif nggunakake instruksi "ret" lan nerbitake alat sing wis siap kanggo ngenali urutan instruksi (gadget) sing cocog kanggo ngeksploitasi kerentanan ing kernel Linux, ing kono kahanan kang kaya mangkono iku nyata.

Sajrone riset, eksploitasi kerja disiapake sing ngidini, ing sistem kanthi CPU Intel, ngekstrak data sewenang-wenang saka memori kernel saka proses sing ora duwe hak istimewa ing ruang pangguna kanthi kacepetan 219 bita per detik lan akurasi 98%. Ing prosesor AMD, efisiensi eksploitasi luwih dhuwur - tingkat bocor yaiku 3.9 KB per detik. Minangka conto praktis, kita nuduhake carane nggunakake eksploitasi sing diusulake kanggo nemtokake isi file /etc/shadow. Ing sistem kanthi CPU Intel, serangan kanggo nemtokake hash sandi pangguna root ditindakake sajrone 28 menit, lan ing sistem karo CPU AMD - ing 6 menit.

Serangan kasebut wis dikonfirmasi kanggo generasi 6-8 prosesor Intel sing dirilis sadurunge Q3 2019 (kalebu Skylake), lan prosesor AMD adhedhasar mikroarsitektur Zen 1, Zen 1+ lan Zen 2 sing dirilis sadurunge Q2021 3. Ing model prosesor sing luwih anyar kayata AMD ZenXNUMX lan Intel Alder Lake, uga ing prosesor ARM, masalah kasebut diblokir dening mekanisme perlindungan sing wis ana. Contone, nggunakake instruksi IBRS (Indirect Branch Restricted Speculation) mbantu nglindhungi saka serangan.

Sakumpulan owah-owahan wis disiapake kanggo kernel Linux lan hypervisor Xen, sing bakal mblokir masalah ing piranti lunak ing CPU lawas. Tembelan sing diusulake kanggo kernel Linux ngganti 68 file, nambah 1783 baris, lan mbusak 387 baris. Sayange, pangayoman kasebut nyebabake biaya overhead sing signifikan - ing teks sing ditindakake ing prosesor AMD lan Intel, penurunan kinerja dikira-kira saka 14% dadi 39%. Luwih becik nggunakake proteksi adhedhasar instruksi IBRS, kasedhiya ing CPU Intel generasi anyar lan didhukung diwiwiti karo kernel Linux 4.19.

Ing pemroses Intel, substitusi alamat kanggo mlumpat ora langsung spekulatif ditindakake amarga fitur sing katon nalika kebanjiran dumadi liwat wates ngisor (underflow) ing Return Stack Buffer. Nalika kahanan kasebut kedadeyan, instruksi "ret" wiwit nggunakake logika pilihan alamat sing padha karo sing digunakake kanggo lompat ora langsung normal. Luwih saka sewu panggonan wis ditemokake ing kernel Linux sing nggawe kahanan kanggo miwiti backflow kasebut lan bisa diakses liwat telpon sistem.

Ing prosesor AMD, eksekusi spekulatif instruksi "ret" ditindakake tanpa referensi menyang buffer khusus tumpukan (Return Address Stack) lan unit prediksi cabang nganggep instruksi "ret" ora minangka bali kontrol, nanging minangka cabang ora langsung. , lan, miturut, nggunakake data kanggo prediksi transisi ora langsung. Ing kahanan kasebut, meh kabeh operasi "ret" sing bisa digayuh liwat telpon sistem bisa dimanfaatake.

Kajaba iku, masalah liyane uga wis diidentifikasi ing CPU AMD (CVE-2022-23825, Kebingungan Tipe Cabang) sing ana gandhengane karo implementasi cabang fiktif - kahanan kanggo prediksi cabang bisa kedadeyan sanajan tanpa instruksi cabang sing dibutuhake, sing ngidini pengaruhe buffer prediksi cabang. tanpa instruksi "ret". Fitur iki Ngartekno complicates implementasine saka pangayoman lan mbutuhake reresik luwih aktif saka buffer prediksi cabang. Nambah pangayoman lengkap kanggo kernel samesthine kanggo nambah overhead dening 209%.

Source: opennet.ru

Add a comment