Mayhem — napad koji iskrivljuje bitove u memoriji radi zaobilaženja autentifikacije u sudo i OpenSSH

Istraživači s Wuster Polytechnic Institute (Sjedinjene Američke Države) predstavili su novu vrstu napada Mayhem, koji koristi metodu izobličenja bitova u dinamičkoj radnoj memoriji Rowhammer za promjenu vrijednosti varijabli na stogu, koje se koriste u programu kao zastavice za donošenje odluka o uspješnosti autentifikacije i prolaznosti sigurnosnih provjera. Praktični primjeri primjene napada demonstrirani su zaobilaženjem autentifikacije u SUDO, OpenSSH i MySQL, kao i za promjenu rezultata provjera vezanih uz sigurnost u biblioteci OpenSSL.

Napad se može primijeniti na aplikacije u kojima se tijekom provjera koristi usporedba razlika vrijednosti od nule. Primjer ranjivog koda: int auth = 0; … // kod provjere koji mijenja vrijednost auth u slučaju uspješne autentifikacije if(auth != 0) return AUTH_SUCCESS; else return AUTH_FAILURE;

U kontekstu ovog primjera, za uspješan napad dovoljno je postići izobličenje bilo kojeg bita u memoriji koji se odnosi na 32-bitnu varijablu auth na stogu. Kada se izobliči bilo koji bit u varijabli, vrijednost više neće biti jednaka nuli i uvjetni operator odredit će uspješno prolaznu autentifikaciju. Slični obrasci provjere dovoljno su rasprostranjeni u aplikacijama i nalaze se, na primjer, u SUDO, OpenSSH, MySQL i OpenSSL.

Mayhem - napad koji iskrivljuje bitove u memoriji za zaobilaženje autentifikacije u sudo i OpenSSH

Napad se može primijeniti i na usporedbe poput 'if(auth == 1)', ali u tom slučaju njegovo izvođenje se komplicira, jer je potrebno izobličiti ne bilo koji bit od 32, već posljednji bit. Metoda se također može koristiti za utjecaj na vrijednosti varijabli u registrima procesora, budući da se sadržaj registara može privremeno prenijeti na stog prilikom prebacivanja konteksta, pozivanja funkcija ili aktiviranja obradnika signala. U vremenskom intervalu dok se registrarne vrijednosti nalaze u memoriji, moguće je izvršiti izobličenja u toj memoriji i u registar će biti vraćena izmijenjena vrijednost.

Mayhem - napad koji iskrivljuje bitove u memoriji za zaobilaženje autentifikacije u sudo i OpenSSH

Za iskakanje bitova koristi se jedna od modifikacija napada klase RowHammer. Kako DRAM memorija predstavlja dvodimenzionalnu mrežu ćelija, svaka od kojih se sastoji od kondenzatora i tranzistora, neprekidno čitanje istog područja memorije dovodi do fluktuacije napona i anomalija koje uzrokuju malu poteškoću sa nabojem susjednih ćelija. Ako je intenzitet čitanja velik, susjedna ćelija može izgubiti dovoljno veliki volumen naboja i sljedeći ciklus regeneracije ne uspijeva vratiti njezino prvobitno stanje, što dovodi do promjene vrijednosti pohranjenih u toj ćeliji. Kako bi se zaštitili od RowHammer, proizvođači čipova dodali su mehanizam TRR (Target Row Refresh), koji blokira iskrivljenje ćelija u posebnim slučajevima, ali ne štiti od svih mogućih varijanti napada.

Za zaštitu od Mayhem napada preporučuje se da se u poređenjima ne koristi ocjena razlika od nule ili podudarnost s jedinicom, već provjera podudarnosti koristeći nasumičnu vrijednost uzorka s nenultim oktetima. U ovom slučaju, za postavljanje potrebne vrijednosti varijable potrebno je precizno iskvariti značajan broj bitova, što nije realistično, za razliku od iskrivljenja jednog bita. Primjer koda koji nije podložan napadu: int auth = 0xbe406d1a; … // kod provjere, postavlja vrijednost auth na 0x23ab8701 u slučaju uspješne autentifikacije if(auth == 0x23ab8701) return AUTH_SUCCESS; else return AUTH_FAILURE;

Navedeni metod zaštite već su primijenili developeri sudo i uvrstili su ga u izdanju 1.9.15 kao ispravku ranjivosti CVE-2023-42465. Prototip koda za provođenje napada planiraju objaviti nakon što se izvrše ispravke u glavnim ranjivim projektima.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster