A rosszindulatú támadások manapság egyre nagyobb gondot jelentenek a piac számára, és a számítógépek támadható felületei egyre csak nőnek. Nemrég felmerült, hogy az SSD-k is sérülékenyek bizonyos programkódok futtatásával, amire érdemes figyelni, mivel sokan már ilyen hardveren tárolják az adataikat.
Egy friss tanulmány szerint a kétlépcsős programozásra vonatkozó mechanizmust alkalmazó, MLC NAND flash lapkákat használó megoldások legalább két támadási formával szemben védtelenek. Sajnos a legtöbb MLC-s SSD ilyen, mivel a kétlépcsős programozást a kényszer szülte meg. A 40 nm-es node alatt lényegében ez a mechanizmus akadályozza meg, hogy egy cellába való írás megváltoztassa a másik cellában lévő információt.
Röviden összefoglalva a probléma abból adódik, hogy az MCL NAND flash lapkák cellái két bitnyi információt tárolnak. A kétlépcsős programozás miatt ezt két lapként tekintjük, mivel beszélhetünk legkisebb és legnagyobb helyiértékű bitről (LSB és MSB). A kétlépcsős programozás során az adott cella egy ideiglenes állapotot vesz fel, amelynek a küszöbfeszültsége nagyjából a végleges érték fele. Ez az ideiglenes LSB feszültség egy flash lapkában található pufferben kerül eltárolásra és újraprogramozás során megváltozik immáron a végleges állapotnak megfelelően, ami végül egy teljesen felprogramozott cellát fog eredményezni. A vezérlő több cellát figyelembe véve úgy dolgozza ki a NAND flash lapkák felprogramozását, hogy ezek a lépcsők átlapolásra kerüljenek, így az egyes szomszédos cellák végleges állapotának meghatározása lehetőleg ne eredményezzen hibás adatokat. Esetenként persze ez elkerülhetetlen, de a vezérlő tud róla, így korrigálja a hibát. A gond ott keletkezik, hogy az ideiglenes LSB feszültséget tároló puffer akár tartalmazhat hibákat is, és erről már a vezérlőnek fogalma sincs, következésképpen korrekcióra sem képes, hiszen az ominózus adatokat sosem látja. Átlagos körülmények között ez nem jelenthet gondot, de a támadások mindig valamilyen extrém körülményt valósítanak meg, ami már hibákhoz fog vezetni.
A lehetséges támadási formák közül az egyik a program interference névre keresztelt eljárás, amely arra kényszeríti az adattárolásra szolgáló lapkák vezérléséért felelős logikát, hogy a szokásosnál 4,9-szer több hibát vétsen, ami interferenciát okoz a környező memóriacellákban. Ez végeredményben az adatok károsodását okozhatja, vagy akár az SSD élettartama is csökkenhet, ha sikerül elérni az interferencia ismétlődését. Az egész egy picit hasonlít a rowhammer névre keresztelt sérülékenységre, abból a szempontból, hogy az SSD-re vonatkozó hiba kivitelezése sem szoftveres, hanem hardveres eredetű. Mint ismeretes a rowhammer támadás során, a DRAM memóriák esetében egy sort néhány milliszekundumig leginkább több százezres nagyságrendben végrehajtott hozzáférési művelettel kell elérni, és ekkor a szomszédos sorban megfordítható egy bitnyi információ. Ugyanakkor amíg a rowhammer támadás során ennek a megoldásnak a célja az adott géphez való hozzáférés megszerzése, addig az SSD-knél a program interference igazából csak rombolásra jó, de arra nagyon.
A kutatáshoz használt tesztrendszer (forrás: Bleeping Computer)
A másik lehetőség a read disturb nevű eljárás, amivel a programkód arra kényszeríti az SSD-t, hogy rendkívül sok olvasási műveletet hajtson végre nagyon rövid idő alatt. Ez egy read disturb errors néven illetett jelenséghez vezet, ami LSB és MSB hibát eredményez azokban a lapokban, amelyek már kiírásra kerültek a részlegesen programozott szóvezetékekre vagy később lesznek kiírva. Ez megakadályozza, hogy az adott SSD a jövőben megbízható módon tárolja az adatokat.
A tanulmány egyébként megoldási javaslatokkal is előáll, ami megbízhatóbb SSD-k fejlesztéséhez vezethet.