Zdalny atak na układy DRAM
Francuscy i austriaccy eksperci opublikowali dokument, w którym opisują, w jaki sposób można przeprowadzić zdalny atak na układy pamięci DRAM. Atak wykorzystuje znany od lat problem o nazwie "Rowhammer". Problem związany jest z gęstym upakowaniem komórek pamięci w układach DRAM, co powoduje, że są one niezwykle podatne na wewnętrzne zakłócenia. W ten sposób np. jeden proces może wpływac na zawartość pamięci innego procesu, do której nie powinien mieć dostępu.
Problem został opisany w 2003 roku przez Sudhakara Govindavajhala, a w 2014 roku szerzej badał go Yoongu Kim. W marcu bieżącego roku eksperci z Google'a stworzyli dwa działające szkodliwe kody, które wykorzystywały problem Rowhammer. Jeden z nich pozwalał na bezpośrednie odwoływanie się do wywołań systemowych OS-u, drugi zwiększał swe uprawnienia i zyskiwał dostęp do całości pamięci. W przypadku obu kodów trudność ataku polegała m.in. na tym, że szkodliwy kod musiał zostać zainstalowany na maszynie użytkownika przez kogoś z fizycznym dostępem do niej. Teraz opisano, w jaki sposób wykorzystać problem Rowhammer zdalnie.
Daniel Gruss i Stefan Mangard z Uniwersytetu Technologicznego w Grazu oraz Clementine Maurice z francuskiego Technicoloru przeprowadzili atak za pomocą JavaScriptu. Ofiarą kodu Rowhammer.js padł Firefox 39, jednak specjaliści zapewniają, że technika ataku jest uniwersalna, może zostać zaimplementowana do każdej architektury, języka oraz środowiska uruchomieniowego. Fakt, że atak jest tak uniwersalny i może być przeprowadzony zdalnie dramatycznie zwiększa liczbę potencjalnych ofiar. Na razie badacze nie stworzyli kodu, który - wykorzystując Rowhammer - dawałby dostęp na prawach administracyjnych. Jednak ich zdaniem powstanie takiego kodu to tylko kwestia czasu. Cyberprzestępcy z pewnością będą zainteresowani możliwościami, jakie daje problem Rowhammer. Eksperci skupiają się obecnie na określeniu, które układy i jakich producentów są podatne na atak.
Eksperci uważają, że do czasu, aż nie zostanie znalezione rozwiązanie problemu Rowhammer producenci przeglądarek powinni zaimplementować w nich narzędzia testujące, czy dany system jest podatny na błąd Rowhammer. Jeśli tak, przeglądarka powinna spowolnić przetwarzanie JavaScriptu, by zmniejszyć prawdopodobieństwo ataku.
Komentarze (5)
Przemek Kobel, 30 lipca 2015, 13:39
"Problem Rowhammer" to po prostu błąd sprzętowy niektórych układów pamięci (właściwie to powinno być traktowane jak uszkodzenie i reklamowane w sklepie). Układy te są zorganizowane w prostokątne siatki (wiersze/kolumny), a błąd polega na tym, że wielokrotne powtarzanie dostępu (czyli odczytu lub zapisu) do danych z jedego wiersza tej siatki może przełączyć stany bitów w sąsiednim wierszu. Na pierwszy rzut oka to może co najwyżej wywalić system (niebieski ekran itp), ale najwyraźniej udało się to zrobić w sposób kontrolowany. Rozwiązanie problemu to albo wymiana układów pamięci na w pełni sprawne, albo korzystanie z mechanizmu losowo przydzielającego pamięć dla procedur systemu operacyjnego i aplikacji. W źródle wspominają też o innych możliwościach, np. częstszym odświeżaniu zawartości pamięci (to taki wewnętrzny mechanizm w bebechach komputera, potrzebny odkąd wynaleziono układy DRAM)
Źródełko:
http://googleprojectzero.blogspot.com/2015/03/exploiting-dram-rowhammer-bug-to-gain.html
smoczeq, 30 lipca 2015, 13:54
Dzięki za wyjaśnienie. Byłem zbyt leniwy by poszukać
Czy to powinno być traktowane jak uszkodzenie to tego nie wiem. Wiem, na przykład, że pamięci NAND flash też mogą cierpieć z powodu read/write disturb. Producenci tych pamięci zalecają by zapisywać/odczytywać pamięć sekwencyjnie, blok po bloku. Jednak nie spotkałem się z tym by podlegało to wymianie.
Arlic, 31 lipca 2015, 00:19
Prawdopodobnie nie ma komercyjnych pamięci DRAM bez tego problemu.
wilk, 31 lipca 2015, 00:35
ECC, choć to także nie zawsze zadziała.
Przemek Kobel, 31 lipca 2015, 08:40
Ale całe komputery są. Prawdopodobnie decyduje kombinacja chipsetu i pamięci (od bardzo dawna nie przyglądałem się bebechom komputerów i nie wiem która część zajmuje się odświeżaniem - na czuja obstawiałbym, że robią to same układy pamięci, ale muszą być popędzane kontrolerem).
No dobrze, zerknąłem gdzieś i "czuj" mnie jeszcze nie myli:
https://en.wikipedia.org/wiki/Memory_refresh