Mayhem - serangan korupsi bit memori kanggo ngliwati sudo lan otentikasi OpenSSH

Peneliti saka Worcester Polytechnic Institute (USA) wis ngenalake jinis serangan Mayhem anyar sing nggunakake teknik distorsi bit memori akses acak dinamis Rowhammer kanggo ngganti nilai variabel tumpukan sing digunakake minangka panji ing program kanggo mutusake manawa otentikasi lan pamriksan keamanan duwe. liwati. Conto praktis saka serangan kasebut dituduhake kanggo ngliwati otentikasi ing SUDO, OpenSSH lan MySQL, uga kanggo ngganti asil pamriksa sing gegandhengan karo keamanan ing perpustakaan OpenSSL.

Serangan kasebut bisa ditrapake kanggo aplikasi sing nggunakake pamriksa kanggo mbandhingake nilai sing beda karo nol. Conto kode sing rawan: int auth = 0; ... // kode verifikasi sing ngganti nilai otentikasi yen otentikasi sukses yen (auth! = 0) bali AUTH_SUCCESS; liya bali AUTH_FAILURE;

Ing konteks conto iki, kanggo serangan sukses iku cukup kanggo ngrusak sembarang dicokot ing memori gadhah variabel auth 32-dicokot ing tumpukan. Yen ana bit ing variabel sing rusak, nilai kasebut ora bakal nol maneh lan operator kondisional bakal nemtokake sukses rampung otentikasi. Pola validasi kasebut cukup umum ing aplikasi lan ditemokake, contone, ing SUDO, OpenSSH, MySQL lan OpenSSL.

Mayhem - serangan korupsi bit memori kanggo ngliwati sudo lan otentikasi OpenSSH

Serangan kasebut uga bisa ditrapake kanggo mbandhingake formulir "yen (auth == 1)", nanging ing kasus iki, implementasine dadi luwih rumit, amarga kudu distorsi ora mung 32, nanging sing pungkasan. Cara kasebut uga bisa digunakake kanggo pengaruhe nilai-nilai variabel ing registrasi prosesor, amarga isi registrasi bisa sementara disiram ing tumpukan nalika saklar konteks, panggilan fungsi, utawa panangan sinyal murub. Sajrone periode wektu nalika nilai registrasi ana ing memori, distorsi bisa ditepungake ing memori iki lan nilai sing diganti bakal dibalekake menyang registrasi.

Mayhem - serangan korupsi bit memori kanggo ngliwati sudo lan otentikasi OpenSSH

Kanggo ngrusak bit, salah sawijining modifikasi serangan kelas RowHammer digunakake. Wiwit memori DRAM punika Uploaded loro-dimensi saka sel, saben kasusun saka kapasitor lan transistor, nindakake terus diwaca saka wilayah memori padha asil ing fluktuasi voltase lan anomali sing nimbulakΓ© mundhut cilik daya ing sel tetanggan. Yen intensitas maca dhuwur, banjur sel tetanggan bisa kelangan jumlah daya sing cukup gedhe lan siklus regenerasi sabanjure ora duwe wektu kanggo mulihake kahanan asline, sing bakal nyebabake owah-owahan ing nilai data sing disimpen ing sel. . Kanggo nglindhungi RowHammer, pabrikan chip nambahake mekanisme TRR (Target Row Refresh), sing ngalangi korupsi sel ing kasus khusus, nanging ora nglindhungi kabeh variasi serangan sing bisa.

Kanggo nglindhungi saka serangan Mayhem, disaranake nggunakake bandingaken ora kanggo ngira-ngira beda saka nul utawa ketepakan kanggo siji, nanging kanggo mriksa cocog nggunakake Nilai winih acak karo non-nol oktet. Ing kasus iki, kanggo nyetel nilai sing dipengini saka variabel, perlu kanggo kanthi akurat ngowahi jumlah bit sing signifikan, sing ora realistis, beda karo distorsi siji bit. Conto kode sing ora bisa diserang: int auth = 0xbe406d1a; ... // kode verifikasi sing nyetel nilai auth kanggo 0x23ab8701 yen otentikasi sukses yen (auth == 0x23ab8701) bali AUTH_SUCCESS; liya bali AUTH_FAILURE;

Cara proteksi sing ditemtokake wis digunakake dening pangembang sudo lan kalebu ing release 1.9.15 minangka fix kanggo kerentanan CVE-2023-42465. Dheweke rencana nerbitake prototipe kode kanggo nindakake serangan kasebut sawise ndandani proyek sing rawan.

Source: opennet.ru

Add a comment