Mayhem - memoria bit ustelkeria erasoa sudo eta OpenSSH autentifikazioa saihesteko

Worcester Polytechnic Institute-ko (AEB) ikertzaileek Mayhem eraso mota berri bat aurkeztu dute, Rowhammer RAM dinamikoaren bit distortsio teknika erabiltzen duena programan bandera gisa erabiltzen diren pila-aldagaien balioak aldatzeko, autentifikazioa eta segurtasun-egiaztapenak gainditu diren ala ez erabakitzeko. Erasoaren adibide praktikoak SUDO, OpenSSH eta MySQL-en autentifikazioa saihesten dutela frogatzen da, baita OpenSSL liburutegian segurtasunarekin lotutako egiaztapenen emaitza aldatzeko ere.

Erasoa zerotik desberdinak diren balioak alderatzeko egiaztapenak erabiltzen dituzten aplikazioetan aplika daiteke. Kode zaurgarriaren adibidea: int auth = 0; ... // autentifikazio-balioa aldatzen duen egiaztapen-kodea, autentifikazio arrakastatsua izanez gero if(auth != 0) return AUTH_SUCCESS; bestela AUTH_FAILURE itzuli;

Adibide honen testuinguruan, eraso arrakastatsu bat izateko nahikoa da pilako 32 biteko autentifikazio aldagaiarekin lotutako memoriako edozein bit hondatzea. Aldagaiaren edozein bit hondatuta badago, balioa ez da zero izango eta baldintzapeko operadoreak autentifikazioa arrakastaz amaitu dela zehaztuko du. Horrelako baliozkotze ereduak nahiko ohikoak dira aplikazioetan eta, adibidez, SUDO, OpenSSH, MySQL eta OpenSSL-en aurkitzen dira.

Mayhem - memoria bit ustelkeria erasoa sudo eta OpenSSH autentifikazioa saihesteko

Erasoa β€œif(auth == 1)” formako konparaketetan ere aplika daiteke, baina kasu honetan inplementazioa zaildu egiten da, beharrezkoa baita 32ko edozein bit desitxuratu, azken bit-a baizik. Metodoa prozesadore-erregistroetako aldagaien balioetan eragiteko ere erabil daiteke, izan ere, erregistroen edukia pilara aldi baterako hustu daiteke testuinguru-aldaketa, funtzio-deia edo seinale-kudeatzailea abiatzen denean. Erregistroaren balioak memorian dauden bitartean, memoria honetan distortsioak sar daitezke eta aldatutako balioa erregistrora berreskuratuko da.

Mayhem - memoria bit ustelkeria erasoa sudo eta OpenSSH autentifikazioa saihesteko

Bitak desitxuratzeko, RowHammer klaseko erasoaren aldaketetako bat erabiltzen da. DRAM memoria bi dimentsioko zelulen multzoa denez, bakoitza kondentsadore batez eta transistorez osatuta dagoenez, memoria-eskualde bereko etengabeko irakurketak egiteak tentsio gorabeherak eta anomaliak sortzen ditu aldameneko zeluletan karga-galera txiki bat eragiten dutenak. Irakurketa intentsitatea handia bada, aldameneko zelulak karga nahiko handia gal dezake eta hurrengo birsorkuntza-zikloak ez du astirik izango jatorrizko egoera berreskuratzeko, eta horrek gelaxkan gordetako datuen balioa aldatzea ekarriko du. . RowHammer-en aurka babesteko, txip-ekoizleek TRR (Target Row Refresh) mekanismo bat gehitu dute, kasu berezietan zelulen ustelkeria blokeatzen duena, baina ez du eraso posible guztien aurka babesten.

Mayhem-en erasoaren aurka babesteko, konparaketetan ez erabiltzea gomendatzen da zerorekiko desberdintasunen ebaluazioa edo batekiko kointzidentzia bat, baizik eta bat-etortze-egiaztapena, zero ez diren zortzikoteekin ausazko hazi-balioa erabiliz. Kasu honetan, aldagaiaren nahi den balioa ezartzeko, bit kopuru esanguratsu bat zehaztasunez desitxuratzea beharrezkoa da, hori ez da errealista, bit baten distortsioaren aldean. Eraso ezin daitekeen kodearen adibidea: int auth = 0xbe406d1a; ... // autentifikazio-balioa 0x23ab8701-ra ezartzen duen egiaztapen-kodea autentifikazio arrakastatsua izanez gero if(auth == 0x23ab8701) return AUTH_SUCCESS; bestela AUTH_FAILURE itzuli;

Zehaztutako babes-metodoa dagoeneko erabili dute sudo garatzaileek eta 1.9.15 bertsioan sartu zuten CVE-2023-42465 ahultasunaren konponbide gisa. Erasoa burutzeko kodearen prototipoa argitaratzeko asmoa dute proiektu ahulei nagusien konponketak egin ostean.

Iturria: opennet.ru

Gehitu iruzkin berria