Mayhem - aanval op geheugenbitcorruptie om sudo en OpenSSH-authenticatie te omzeilen

Onderzoekers van het Worcester Polytechnic Institute (VS) hebben een nieuw type Mayhem-aanval geïntroduceerd waarbij gebruik wordt gemaakt van de Rowhammer dynamic random access memory bit distortion-techniek om de waarden te veranderen van stapelvariabelen die als vlaggen in het programma worden gebruikt om te beslissen of authenticatie en veiligheidscontroles zijn uitgevoerd. geslaagd. Er wordt aangetoond dat praktische voorbeelden van de aanval authenticatie in SUDO, OpenSSH en MySQL omzeilen, en het resultaat van beveiligingsgerelateerde controles in de OpenSSL-bibliotheek veranderen.

De aanval kan worden toegepast op applicaties die controles gebruiken om waarden te vergelijken die afwijken van nul. Voorbeeld van kwetsbare code: int auth = 0; ... // verificatiecode die de auth-waarde verandert in geval van succesvolle authenticatie if(auth != 0) retourneert AUTH_SUCCESS; retourneer anders AUTH_FAILURE;

In de context van dit voorbeeld is het voor een succesvolle aanval voldoende om elk bit in het geheugen dat is gekoppeld aan de 32-bits auth-variabele op de stapel te beschadigen. Als een bit in de variabele beschadigd is, zal de waarde niet langer nul zijn en zal de voorwaardelijke operator de succesvolle voltooiing van de authenticatie bepalen. Dergelijke validatiepatronen komen vrij vaak voor in applicaties en zijn bijvoorbeeld te vinden in SUDO, OpenSSH, MySQL en OpenSSL.

Mayhem - geheugenbit-verminkingsaanval om sudo- en OpenSSH-authenticatie te omzeilen

De aanval kan ook worden toegepast op vergelijkingen van de vorm “if(auth == 1)”, maar in dit geval wordt de implementatie ervan ingewikkelder, omdat het nodig is om niet elk bit van 32 te vervormen, maar het laatste bit. De methode kan ook worden gebruikt om de waarden van variabelen in processorregisters te beïnvloeden, omdat de inhoud van de registers tijdelijk naar de stapel kan worden gespoeld wanneer een contextschakelaar, functieaanroep of signaalhandler wordt geactiveerd. Gedurende de periode dat registerwaarden zich in het geheugen bevinden, kunnen er vervormingen in dit geheugen worden geïntroduceerd en wordt de gewijzigde waarde in het register hersteld.

Mayhem - geheugenbit-verminkingsaanval om sudo- en OpenSSH-authenticatie te omzeilen

Om de bits te vervormen, wordt een van de wijzigingen van de klasse-aanval RowHammer gebruikt. Omdat het DRAM-geheugen een tweedimensionale reeks cellen is, elk bestaande uit een condensator en een transistor, resulteert het continu lezen van hetzelfde geheugengebied in spanningsschommelingen en afwijkingen die een klein ladingsverlies in aangrenzende cellen veroorzaken. Als de leesintensiteit hoog is, kan de naburige cel een voldoende grote hoeveelheid lading verliezen en zal de volgende regeneratiecyclus geen tijd hebben om de oorspronkelijke staat te herstellen, wat zal leiden tot een verandering in de waarde van de gegevens die in de cel zijn opgeslagen . Ter bescherming tegen RowHammer hebben chipfabrikanten een TRR-mechanisme (Target Row Refresh) toegevoegd, dat celcorruptie in speciale gevallen blokkeert, maar niet beschermt tegen alle mogelijke aanvalsvariaties.

Ter bescherming tegen de Mayhem-aanval wordt aanbevolen om bij vergelijkingen geen evaluatie te gebruiken van verschillen vanaf nul of een samenloop van omstandigheden met één, maar een matchcheck met behulp van een willekeurige zaadwaarde met niet-nul octetten. In dit geval is het, om de gewenste waarde van de variabele in te stellen, nodig om een ​​aanzienlijk aantal bits nauwkeurig te vervormen, wat onrealistisch is, in tegenstelling tot de vervorming van één bit. Voorbeeld van niet-aantastbare code: int auth = 0xbe406d1a; ... // verificatiecode die de auth-waarde instelt op 0x23ab8701 in geval van succesvolle authenticatie if(auth == 0x23ab8701) retourneert AUTH_SUCCESS; retourneer anders AUTH_FAILURE;

De opgegeven beveiligingsmethode is al gebruikt door de sudo-ontwikkelaars en is opgenomen in release 1.9.15 als oplossing voor de CVE-2023-42465-kwetsbaarheid. Ze zijn van plan een prototype van de code voor het uitvoeren van de aanval te publiceren nadat de belangrijkste kwetsbare projecten zijn gerepareerd.

Bron: opennet.ru

Voeg een reactie