Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
Prijevodi ove stranice:

Rowhammer napad

Sažetak

Povećanje kapaciteta memorijskih modula dovelo je do neželjenih pojava u kojima elektromagnetske interferencije uzrokovane čitanjem memorije mogu utjecati na konzistentnost sadržaja memorije. Takve pojave moguće je namjerno izazvati i iskoristiti ih kako bi se narušila sigurnost operacijskog sustava.

Ključne riječi: rowhammer; DRAM; napad;

Uvod

Tehnologija DRAM memorijskih modula ostvarila je veliki napredak u zadnja dva desetljeća, od drastičnog povećanja kapaciteta memorijskih modula do povećavanja takta rada. Veliki dio tog napretka leži u smanjivanju veličine memorijskih ćelija što omogućuje smještanje većeg broja ćelija na isti prostor čime se povećava kapacitet memorijskog modula i doprinosi smanjivanju cijene izrade takvih memorijskih modula. Međutim, povećavanje gustoće memorijskih ćelija unutar memorijskog modula sa sobom donosi niz neželjenih pojava koje utječu na pouzdanost, kvalitetu i možda najvažnije, sigurnost cijelog računalnog sustava. Rowhammer napad iskorištava elektromagnetske interferencije koje nastaju opetovanim adresiranjem pojedine memorijske lokacije unutar modula kako bi promijenio vrijednost bita u nekoj od susjednih ćelija i time potencijalno narušio sigurnost računalnog sustava.

Struktura DRAM memorijskih modula

Moderne memorijske module dijelimo u (većinom) dvije skupine: DRAM (dynamic RAM) i SRAM (static RAM). Obzirom da Rowhammer napad iskorištava mane u DRAM modulima, u nastavku neće biti dan opis SRAM modula.

Osnovna komponenta svakog DRAM memorijskog modula jest memorijska ćelija. Njena izvedba je vrlo jednostavna i sastoji se od jednog tranzistora i jednog kondenzatora. Ćelija pohranjuje jedan bit informacije pomoću naboja pohranjenog u kondenzatoru. Više ćelija povezano je na dvije iste linije, word line koji služi za pristup pojedinom nizu ćelija i digit line koji služi dohvaćanju sadržaja pojedinog niza ćelija. Kada se na word line dovede napon tranzistor u ćeliji propušta naboj iz kondenzatora na digit line, čime se na toj liniji postavlja vrijednost koja je bila u ćeliji. Upisivanje podataka u ćeliju ide obrnutim redoslijedom, potrebno je dovesti željenu vrijednost na digit line i potom dovesti napon na word line i održavati ga dovoljno dugo kako bi se kondenzator unutar ćelije napunio ili ispraznio.

Struktura DRAM ćelije

Važno je naglasiti da naboj pohranjen u kondenzatoru iščezava kroz određeno vrijeme. Ta činjenica uzrokuje određene probleme pri implementaciji takvih sklopova. Zbog potrebe za velikim memorijskim kapacitetima, kondenzatori u današnjim modulima moraju biti jako maleni što dodatno pospješuje probleme uzrokovane iščezavanjem naboja iz kondenzatora. Zbog male količine naboja pohranjene u ćelijama potrebno je na izlaz digit line-a dodati pojačalo koje će moći razlikovati vrijednosti 0 i 1 iz malih ulaznih napona.
Nadalje, brzina čitanja i pisanja u ćelije ograničena je brzinom punjenja i pražnjenja kondenzatora što ima velike posljedice za performanse DRAM modula.

Međutim, najveći problem jest osigurati konzistentnost stanja ćelije zbog čega je potrebno periodički osvježavati stanje ćelije. Osvježavanje ćelije postiže se čitanjem reda ćelija i vraćanjem pojačanog signala nazad na digit line. Tijekom te operacije svi pokušaji čitanja ili pisanja u taj niz ćelija se odbacuju, što opet ima negativne posljedice na performanse.

Graf nabijanja i pražnjenja kondenzatora

Najčešća organizacija DRAM-a jest grupiranje više nizova (odnosno redova) ćelija u polje odnosno tzv. bank. Međutim, takva polja se rijetko upotrebljavaju samostalno s obzirom na njihov malen kapacitet te se tako više polja grupira u tzv. rank. Upravljanje stanjem memorije prepuštenoj je memorijskom kontroleru, sklopu koji se tipično nalazi unutar procesora. Standard DDR, danas najzastupljeniji, propisuje nekoliko vrsta naredbi koje memorijski kontroler može koristiti kako bi upravljao DRAM modulom od kojih su najvažnije one za čitanje, pisanje i osvježavanje ćelija. Dodatno, standard garantira da će sadržaj memorije ostati konzistentan u periodu od barem 64 milisekunde. Tijekom tog perioda sve ćelije u svim poljima moraju biti osvježene.

Polje DRAM ćelija

Pristupanje sadržaju rank-a se odvija u tri koraka:

DRAM naredbaOpis
ACTIVATEPodiže napon na word line-u željene memorijske lokacije
READIščitava vrijednost pojedinog stupca
PRECHARGEOsvježava sadržaj ćelije s prethodno pročitanom vrijednošću


Analiza napada

Rowhammer napad oslanja se na neželjene pojave koje se manifestiraju prilikom elektromagnetskih interferencija između više komponenti u DRAM modulu. U znanstvenom radu u kojem je otkriven Rowhammer napad autori su utvrdili da opetovano adresiranje (odnosno podizanje napona na word line-u) niza ćelija uzrokuje brže pražnjenje kondenzatora u nekim susjednim ćelijama. Također je izneseno par hipoteza kojima se pokušalo objasniti tu pojavu:

  1. Mijenjanje napona na pojedinom word line-u može dovesti do induciranja napona u susjednim word line-ovima čime se na kratko vrijeme propušta napon iz kondenzatora unutar ćelije i pospješuje pražnjenje kondenzatora
  2. Premošćivanje pojedinih linija nastalo kao pogreška pri proizvodnom procesu pospješuje pražnjenje kondenzatora

Kako bi mogli demonstrirati napad, autori su osmislili kratki program koji opetovano čita sadržaj memorije:

x86 naredbaOpis
code1a:Deklaracija labele
mov (X), %eaxPremještanje sadržaja memorijske lokacije X u registar eax
mov (Y), %ebxPremještanje sadržaja memorijske lokacije Y u registar eax
clflush (X)Pražnjenje sadržaja memorijske lokacije X iz priručne memorije
clflush (Y)Pražnjenje sadržaja memorijske lokacije Y iz priručne memorije
mfenceOsigurava čekanje na izvršavanje gornjih naredbi
jmp code1aPreusmjerava tok izvođenja programa nazad na prvu naredbu u tablici

Adrese X i Y posebno su odabrane da odgovaraju nizovima ćelija unutar istog bank-a kako bi memorijski kontroler morao ispoštovati proceduru čitanja i “zatvaranja” niza ćelija. Nakon pokretanja navedenog programa kroz više milijuna iteracija, autori su primijetili veliku količinu ćelija čiji je sadržaj promijenjen. Kako bi produbili razumijevanje o ovoj vrsti napada, autori su testirali 129 DRAM modula od tri neimenovana proizvođača. Testiranja su ispitivala učestalost promjene sadržaja ćelija u ovisnosti o tri parametra:

  1. Aktivacijski interval - vrijeme čekanja između ponovnog adresiranja niza ćelija
  2. Interval osvježavanja - vrijeme unutar kojeg sadržaj svih ćelija mora biti osvježen
  3. Uzorak podataka - inicijalni sadržaj ćelija prije nego što se test pokrene

Utvrđeno je da broj uočenih pogrešaka pada s rastom aktivacijskog intervala, a raste s povećanjem intervala osvježavanja.
Autori navode da na svakih 10^9 ćelija otprilike 10^5 ćelija promijene sadržaj tijekom provođenja testova te da je otprilike 70% testiranih ćelija promijenilo sadržaj prilikom svih provođenja testova.


Obrana od napada Rowhammer

Napad Rowhammer predstavlja veliku opasnost zbog činjenice da se može izvršavati neprimijećeno i pomoću neprivilegiranog korisničkog računa. Zbog velike raširenosti x86 arhitekture i sve većih DRAM modula broj korisnika koji su ranjivi na ovaj napad drastično raste.

ECC (Error-Correcting Code) memorija nameće se kao potencijalno rješenje problema obrane. ECC DRAM moduli opremljeni su s dodatnim memorijskim čipovima kako bi mogli ispravljati jednostruke i detektirati dvostruke pogreške unutar jedne memorijske “riječi”. Međutim, napad Rowhammer često izaziva više pogrešaka unutar jedne riječi čime ovakva vrsta zaštite postaje beskorisna.

U radu u kojem je prvi put objavljen napad Rowhammer autori navode nekoliko potencijalnih rješenja koja su vezana uz parametre rada DRAM modula. Smanjivanje intervala osvježavanja uklonilo bi veliku većinu pogrešaka ali bi uvelike povećalo potrošnju energije i smanjilo performanse modula. Također bi bilo moguće provesti otkrivanje ćelija koje uzrokuju većinu pogrešaka i mapirati njihove adrese na druge, rezervne ćelije. Taj proces može provesti proizvođač ili krajnji korisnik. Međutim, dugotrajnost takvog procesa sprječava bilo kakvu praktičnu primjenu.

Kao najbolje rješenje autori predlažu novu tehniku, PARA (eng. Probabilistic Adjacent Row Activation). Tehnika se zasniva na probabilističkom osvježavanju susjednih nizova ćelija prilikom svakog pristupa nekom od nizova ćelija. Prilikom svakog pristupa nizu ćelija se uz neku malu vjerojatnost p osvježava sadržaj susjednog niza ćelija. Tako bi prilikom opetovanog pristupanja nizu ćelija vjerojatnost osvježavanja susjednih nizova ćelija rasla. Prednost ove tehnike je da ne zahtijeva nikakvo posebno sklopovlje za praćenje stanja ćelija već je dovoljno napraviti male izmjene unutar memorijskog kontrolera.

Varijacije napada Rowhammer

Ubrzo nakon objavljivanja napad Rowhammer je privukao veliku pažnju cijele industrije računalne sigurnosti i uzrokovao velike bojazni od potencijalnih šteta. Razvoj napada i njegova primjena na drugim platformama nije stala i ubrzo je došlo do razvoja raznih napada koji kao glavnu tehniku koriste napad Rowhammer.

Napad Rowhammer pretpostavlja da se kod koji uzrokuje neželjene promjene u memoriji izvodi na ciljnom računalu. Međutim, objavljivanjem napada Throwhammer pokazalo se da je u nekim slučajevima uzrokovati neželjene promijene u memoriji preko mreže. Throwhammer iskorištava mogućnost udaljenog direktnog pristupa memoriji odnosno RDMA (eng. Remote Direct Memory Access) kako bi slanjem velikog broja paketa uzrokovao neželjene promjene u memoriji. RDMA se široko upotrebljava u raspodijeljenim sustavima koji zahtijevaju visoke performanse. Ideja iza takvog pristupa jest maksimalno rasteretiti procesor i dozvoliti mrežnoj kartici direktan pristup unaprijed zadanom memorijskom polju kako bi se pospješila brzina kopiranja podataka. Autori rada u kojem je napad Throwhammer prvi put objavljen utvrdili su da je kroz period od 30 minuta moguće uzrokovati do nekoliko stotina jedinstvenih promjena vrijednosti ćelija. Takav pristup zahtijeva slanje milijuna paketa u sekundi i ne rezultira velikim brojem neželjenih promjena u memoriji.

Iako se originalna implementacija napada Rowhammer oslanjala na specifičnu naredbu unutar x86 arhitekture, pojavio se velik broj napada koji uspješno koriste Rowhammer na ARM platformama, prvenstveno mobilnim uređajima. Napad Drammer uspješno iskorištava Rowhammer napad na Android uređajima uz pomoć posebno osmišljenih tehnika pristupa memoriji kako bi zaobišao sigurnosne postavke operacijskog sustava i došao do administratorskog (eng. root) korisničkog računa. Napad je moguće izvršiti u cijelosti pomoću aplikacije koja ne zahtijeva nikakve posebne dozvole, što ugrožava jako veliki broj korisnika.

Napad Rowhammer prvenstveno se upotrebljava kako bi se promijenilo stanje memorije. Međutim, nedavno objavljen napad RAMBleed pokazuje da je moguće čitati sadržaj memorije uz pomoć napada Rowhammer. Autori su u radu demonstrirali napad pomoću čitanja 2048 bitnog privatnog RSA ključa kojeg koristi OpenSSH.

Zaključak

Napad Rowhammer ozbiljna je prijetnja velikom broju uređaja koja je pokrenula lavinu nove vrste napada koje se temelje na uzrokovanju neželjenih promjena stanja ćelija. Iako postoje tehnike obrane od takvih napada, one su često beskorisne ili produljuju vrijeme napada. Daljnjim proučavanjem raznih platformi iz perspektive ovakvih napada doći će do još više napada temeljenih na napadu Rowhammer.

Izvori

racfor_wiki/blockchain/rowhammer_napad.txt · Zadnja izmjena: 2023/06/19 18:17 (vanjsko uređivanje)
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0