Mayhem - geheue bit korrupsie aanval om sudo en OpenSSH verifikasie te omseil

Navorsers van Worcester Polytechnic Institute (VSA) het 'n nuwe tipe Mayhem-aanval bekendgestel wat die Rowhammer dinamiese RAM-bisvervormingstegniek gebruik om die waardes van stapelveranderlikes wat as vlae in die program gebruik word, te verander om te besluit of verifikasie- en sekuriteitskontroles geslaag het. Praktiese voorbeelde van die aanval word gedemonstreer om verifikasie in SUDO, OpenSSH en MySQL te omseil, asook om die resultaat van sekuriteitsverwante kontrole in die OpenSSL-biblioteek te verander.

Die aanval kan toegepas word op toepassings wat tjeks gebruik om waardes wat van nul verskil, te vergelyk. Voorbeeld van kwesbare kode: int auth = 0; ... // verifikasie kode wat die auth waarde verander in die geval van suksesvolle stawing if(auth != 0) return AUTH_SUCCESS; anders gee AUTH_FAILURE terug;

In die konteks van hierdie voorbeeld, vir 'n suksesvolle aanval is dit genoeg om enige bietjie in die geheue wat verband hou met die 32-bis authentiek veranderlike op die stapel te korrupteer. As enige bietjie in die veranderlike beskadig is, sal die waarde nie meer nul wees nie en die voorwaardelike operateur sal die suksesvolle voltooiing van verifikasie bepaal. Sulke valideringspatrone is redelik algemeen in toepassings en word byvoorbeeld gevind in SUDO, OpenSSH, MySQL en OpenSSL.

Mayhem - geheue-bietjie-vernietigende aanval om sudo- en OpenSSH-verifikasie te omseil

Die aanval kan ook toegepas word op vergelykings van die vorm "if(auth == 1)", maar in hierdie geval word die implementering daarvan meer ingewikkeld, aangesien dit nodig is om nie enige bietjie van 32 te verdraai nie, maar die laaste bietjie. Die metode kan ook gebruik word om die waardes van veranderlikes in verwerkerregisters te beïnvloed, aangesien die inhoud van die registers tydelik op die stapel gespoel kan word wanneer 'n konteksskakelaar, funksie-oproep of seinhanteerder afvuur. Gedurende die tydperk terwyl registerwaardes in die geheue is, kan vervormings in hierdie geheue ingebring word en die veranderde waarde sal na die register herstel word.

Mayhem - geheue-bietjie-vernietigende aanval om sudo- en OpenSSH-verifikasie te omseil

Om die stukkies te verdraai, word een van die wysigings van die RowHammer-klasaanval gebruik. Aangesien DRAM-geheue 'n tweedimensionele reeks selle is, wat elk uit 'n kapasitor en 'n transistor bestaan, lei die uitvoering van aaneenlopende lesings van dieselfde geheuegebied tot spanningskommelings en anomalieë wat 'n klein verlies aan lading in naburige selle veroorsaak. As die leesintensiteit hoog is, kan die naburige sel 'n voldoende groot hoeveelheid lading verloor en die volgende herlewingsiklus sal nie tyd hê om sy oorspronklike toestand te herstel nie, wat sal lei tot 'n verandering in die waarde van die data wat in die sel gestoor is . Om teen RowHammer te beskerm, het chipvervaardigers 'n TRR (Target Row Refresh)-meganisme bygevoeg, wat selkorrupsie in spesiale gevalle blokkeer, maar nie teen alle moontlike aanvalvariasies beskerm nie.

Om teen die Mayhem-aanval te beskerm, word dit aanbeveel om vergelykings te gebruik om nie verskille van nul of toeval tot een te evalueer nie, maar om passings na te gaan deur 'n ewekansige saadwaarde met nie-nul oktette te gebruik. In hierdie geval, om die gewenste waarde van die veranderlike in te stel, is dit nodig om 'n beduidende aantal bisse akkuraat te verdraai, wat onrealisties is, in teenstelling met die vervorming van een bis. Voorbeeld van nie-aanvalbare kode: int auth = 0xbe406d1a; ... // verifikasie kode wat die auth waarde stel na 0x23ab8701 in die geval van suksesvolle verifikasie if(auth == 0x23ab8701) return AUTH_SUCCESS; anders gee AUTH_FAILURE terug;

Die gespesifiseerde beskermingsmetode is reeds deur die sudo-ontwikkelaars gebruik en is ingesluit in vrystelling 1.9.15 as 'n oplossing vir die CVE-2023-42465 kwesbaarheid. Hulle beplan om 'n prototipe van die kode vir die uitvoering van die aanval te publiseer nadat regstellings aan die belangrikste kwesbare projekte gemaak is.

Bron: opennet.ru

Voeg 'n opmerking