Kości pamięci DDR3/DDR4 podatne na rowhammer – PoC: wykonanie kodu z uprawnieniami kernela

19 marca 2016, 20:39 | Aktualności | komentarze 2
: zin o bezpieczeństwie - pobierz w pdf/epub/mobi.

Pokazała się zupełnie nowa klasa realnie krytycznych i wykorzystywalnych w najnowszych kościach pamięci podatności. Już jakiś czas temu badacze z googlowego Projektu Zero zaprezentowali w pełni softwareowy atak na sprzęt – a dokładniej na kości pamięci. Efekt? Uzyskanie pełnych uprawnień w OS.

O potencjalnie dziwnych zachowaniach kości DDR3 wiadomo już od dłuższego czasu (~2010), ale to niedawno:

O co chodzi w podatności rowhammer? W skrócie, okazuje się że odpowiednio dobrane sekwencje odczytu pamięci z konkretnych komórek umożliwiają pewną zmianę innych fragmentów pamięci (tzw. bit-flipping), do których bazowy proces w ogóle nie powinien mieć dostępu:

(…) by repeatedly accessing two “aggressor” memory locations within the process’s virtual address space, they can cause bit flips in a third, “victim” location. The victim location is potentially outside the virtual address space of the process.

Wracając do konkretnych exploitów – już rok temu dla DDR3 Project Zero pokazał:

  • wyjście z sandboxa NaCL
  • przejęcie pełnej kontroli do maszyny działającej pod Linuksem (poprzez dostęp read/write do całej pamięci) – startując z nieuprawnionego procesu:

One exploit uses rowhammer-induced bit flips to gain kernel privileges on x86-64 Linux when run as an unprivileged userland process.

Ochrona?

Tutaj sytuacja cały czas wygląda krucho – wydaje się że producenci nowego sprzętu wprowadzają mechanizmy zabezpieczejące, ale różnie z tym bywa. Pomocne może być aktualizowanie BIOSu, czy używanie pamięci z kontrolą parzystości – ECC.

–Michał Sajdak

 

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Ja

    Niestety ten atak jest przereklamowany trwa dlugo i strasznie obciaza CPU co moze zostac latwo zauwazone lub atak przerwany resetem wykonanym przez wnerwionego uzytkownika :)

    Odpowiedz
  2. BloodMan

    Długo, czyli na przykład?
    (nie sprawdzałem i jakoś nie bardzo mam chęć nawet – dlatego pytam)…
    Ale jeśli będzie trwał kilka/naście godzin to spokojnie w ciągu nocy można wypruć niejeden serwer…

    Odpowiedz

Odpowiedz