Onderzoekers van de Vrije Universiteit Amsterdam zijn erin geslaagd succesvolle Rowhammer-aanvallen uit te voeren op ecc-geheugen. Tot nu toe werd gedacht dat error correcting code beschermde tegen Rowhammer.
De onderzoekers van VUSec, dat zich bij de VU op beveiliging richt, hebben hun methode ECCploit genoemd en de details over hun bevindingen in een overzicht gepubliceerd. Hun onderzoek begon met de vraag in hoeverre ecc daadwerkelijk beschermt tegen Rowhammer.
In 2015 verscheen Rowhammer: een manier om hammering van geheugencellen te misbruiken. Bij hammering weten onderzoekers een bit van 0 naar 1 of omgekeerd te flippen, door een bit op een andere locatie aan een groot aantal lees- en schrijfacties te onderwerpen. De aanval bleek op meerdere typen dram toe te passen en pc's, smartphones, virtuele machines en meer systemen waren er kwetsbaar voor. Bovendien verschenen er meerdere manieren om de aanvallen uit te voeren, waaronder via JavaScript.
Tot nu toe was de gedachte dat error correcting code beschermde tegen Rowhammer-aanvallen. Ecc-geheugen is dram voor zakelijke doeleinden, dat bescherming biedt tegen datacorruptie. Het geheugen kan flips van een enkele bit detecteren en corrigeren. Dit werkt door middel van 'woorden' van bijvoorbeeld 64 bits, met redundante controle-bits naast de data-bits. Ecc moet zo bescherming bieden tegen bitflips die veroorzaakt kunnen worden door achtergrondstraling, maar leek zo ook te beschermen tegen Rowhammer.
De VUSec-onderzoekers schrijven dat ecc ook twee bitflips per woord kan detecteren, maar dan code laat crashen. Om ecc te omzeilen zijn dus minimaal drie specifieke bitflips nodig, maar dat moet zo gebeuren dat niet eerst twee bitflips plaatsvinden, om een crash te voorkomen. Het onderzoeksteam nam een jaar de tijd om ecc-implementaties te ontleden. "Dit deel van het werk was gekkigheid, met ingevroren geheugenchips voor cold boot-aanvallen en injectienaalden die in geheugensockets gestoken werden om errors te veroorzaken", schrijven ze.
Op basis van hun experimenten slaagden ze erin gecontroleerd meerdere bitflip-pogingen binnen een ecc-woord op hetzelfde moment uit te voeren. Ook bedachten ze een manier om te detecteren welke bit het ecc corrigeerde, door middel van een timing side channel. Ze ondervonden namelijk dat het langer duurde om een locatie uit te lezen waar een bitflip gecorrigeerd was. Tenslotte moesten ze woorden vinden met drie bits die vatbaar waren om te flippen, zodat ze met één keer hameren die drie bits konden flippen en de ecc-bescherming konden omzeilen voor een geslaagde Rowhammer-aanval.
De onderzoekers gebruikten ddr3-geheugen van verschillende fabrikanten, maar denken dat de side channel-aanval ook bij ddr4 werkt. De aanval is ook op afstand uit te voeren, mits de aanvaller genoeg informatie heeft over de ecc-engine. Het team heeft de publicatie gecoördineerd met het Nederlandse NCSC en de volgnummers CVE-2018-18904, CVE-2018-18905 en CVE-2018-18906 zijn aan de kwetsbaarheden gehangen. Ze beschrijven de details in een draftpublicatie met de titel Exploiting Correcting Codes: On the Effectiveness of ECC Memory Against Rowhammer Attacks.