Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

Intel/AMD/ARM – wszystko podatne (Meltdown & Spectre) – wykradanie pamięci z OS

04 stycznia 2018, 10:33 | Aktualności | komentarzy 29

FAQ: 1. Czy jestem podatny? Najprawdopodobniej tak.
To tłumaczenie pierwszego często zadawanego pytania dotyczącego podatności Meltdown & Spectre.

TL;DR – podatności sprzętowe w procesorach umożliwiające atak na aplikacje nie posiadające żadnych luk.

Możliwe jest wykradanie pamięci z systemu operacyjnego oraz z innych aplikacji. Jest częściowy patch softwareowy na poziomie OS (adresujący czytanie pamięci z OS).

Problem dotyka zarówno procesorów Intela / AMD jak i ARM (świat mobilny!) – choć potencjalne możliwości atakującego różnią się w zależności od platformy.

W szczególności 100% potwierdzenie podatności Meltdown mamy dla Intela i ARM. AMD oznajmia, że jest podatny tylko na tzw. wariant 1 Spectre (najmniej z wszystkich groźny) oraz częściowo wariant 2 Spectre (również mniej groźny niż Meltdown).

Do sprawy przygotowali się panowie z Google, zgodnie z założeniami – „pokaż exploit to ci uwierzę”. Zatem na start pokazano PoC-e (podatność Spectre) na procesory: Intel Haswell Xeon CPU, the AMD FX CPU, AMD PRO CPU, ARM Cortex A57.

Przykładowo:

(…) normal user privileges under a modern Linux kernel with a distro-standard config, can perform arbitrary reads in a 4GiB range in kernel virtual memory on the Intel Haswell Xeon CPU (…) kernel virtual memory can be read at a rate of around 2000 bytes per second.

Odczytywanie pamięci jądra z prędkością 2000 bajtów na sekundę może nie jest super optymalne, ale zobaczcie że można  wyciągnąć sporo (powyższy PoC – okno 4 GB pamięci).

W boju (przechodzimy teraz do Meltdown – czyli problem potwierdzony na Intelu i części ARM-ów) wygląda to mniej więcej tak jak na zrzucie poniżej (w tyle pamięć jądra – w dużym uproszczeniu pamięć OS) + w osobnym oknie odpalony exploit wykradający konkretny adres pamięci. Można też całość zobaczyć na poglądowym filmie.

Bum.

Inny ciekawy PoC to wykradanie haseł z password managera w innej instancji Firefoksa (zarówno FF jak i Ubuntu w zaktualizowanych wersjach):

Password Manager

I hasła w plaintext:

Hasła

Kolejny PoC został zaprezentowany dla wirtualizacji (wracamy na moment do Spectre) – wykradanie pamięci z pamięci głównej maszyny (host), posiadając dostęp tylko do guesta – nie brzmi dobrze (operatorzy cloudowi obgryzają w tym momencie paznokcie).

Prędkość odczytu to około 1500 bajtów na sekundę. Tutaj jednak Google przyznaje, że do testów użyło nieco już przestarzałej dystrybucji Debiana (operatorzy cloudowi przestają obgryzać paznokcie, szczególnie że tutaj  można znaleźć informacje, że pełna wirtualizacja nie powinna być zagrożona – problematyczna jest parawirtualizacja zapewniania np. przez XEN czy Dockera).

oryginalnej publikacji (Meltdown) wykonano testy na cloudach DigitalOcean i Amazona, gdzie raczej będą „świeże” dystrybucje Linuksa:

For the cloud setup, we tested Meltdown in virtual machines running on Intel Xeon CPUs hosted in the Amazon Elastic Compute Cloud as well as on DigitalOcean. Note that for ethical reasons we did not use Meltdown on addresses referring to physical memory of other tenants.

W cytowanej pracy jest mowa o całkiem niezłej prędkości wycieku danych dla testów właśnie w cloudzie (do 503KB/s)

Meltdown & Spectre

Czym w zasadzie różnią się te dwie podatności? W skrócie prowadzą do tego samego – odczyt pamięci, do której nie powinienem mieć dostępu. Meltdown umożliwia czytanie pamięci z OS, Spectre umożliwia odczyt pamięci pomiędzy aplikacjami.

Gadu gadu, ale jaka jest w zasadzie istota podatności Meltdown? Taka:

Meltdown is some form of race condition between the fetch of a memory address and the corresponding permission check for this address.

Owy race condition, z kolei bazuje na dużej optymalizacji w procesorach zwanej out-of-order execution. Zacytujmy większy fragment:

The root cause of the simplicity and strength of Meltdown are side effects caused by out-of-order execution. Out-of-order execution is an important performance feature of today’s processors in order to overcome latencies of busy execution units, e.g., a memory fetch unit needs to wait for data arrival from memory. Instead of stalling the execution, modern processors run operations out-of-order i.e., they look ahead and schedule subsequent operations to idle execution units of the processor.

Polecamy zresztą zapoznanie się z oryginalną publikacją – szczególnie pierwsze dwa rozdziały napisane są bardzo przystępnie.

Patche

Patche nie są jeszcze wszędzie dostępne (albo są wydawane w pośpiechu rodząc potencjalnie inne problemy). O samym Spectre zresztą możemy poczytać:

As it is not easy to fix, it will haunt us for quite some time.

–ms

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



Komentarze

  1. Mnie zastanawia czy atak można wykonać zdanie np. przez jakiś port. czy najpierw trzeba uzyskać dostęp do maszyny aby coś zrobić.? Jak to jest?

    Odpowiedz
    • Trzeba odpalić w jakiś sposób exploita na docelowym kompie. Po prostu go ściągnąć i odpalić ;) Albo wykorzystać bug np. w przeglądarce.

      Odpowiedz
      • 100% Arki we Wrzeszczu

        A co z JS?

        Odpowiedz
        • Kuba

          jednym z wektorów ataku może być złośliwy kod JavaScript umieszczony na stronie internetowej, który uzyska dostęp do danych z innych kart (domen) otwartych w przeglądarce. Można to efektywnie wykorzystać do kradzieży ciastek.

          Odpowiedz
    • oi

      atak można wykonać nawet za pomocą javascriptu ;)

      Odpowiedz
      • Zmijka

        Nie ma to jak podnieść kogoś na duchu ?

        Odpowiedz
        • czesław

          Nosisz czarny kapelusz czy mi się zdawało? ;-)

          Odpowiedz
  2. Mariusz

    Ja bym chetnie zobaczyl zmiany w wydajnosci procesorow AMD po patchu

    Odpowiedz
    • Xyzz

      Łatka w kernelu Linuxa wykrywa, czy procesor jest od AMD i gdy wykryje, że jest od AMD to łatka nie zostaje zastosowana. Bardzo eleganckie rozwiązanie.

      Jak jest z Windowsem to nie wiem – wglądu do maszyny z AMD i Windowsem / kodu łatki nie mam :-)

      Odpowiedz
      • Ktora latke na kernel masz na mysli? Jakis link?

        Odpowiedz
      • Jaka latke na kernel masz na mysli? Jakis link?

        Odpowiedz
        • Xyzz

          Łatka łatająca Meltdown to użycie KPTI – (CONFIG_PAGE_TABLE_ISOLATION=y). To załatwia sprawę i zostało wdrożone najszybciej na wszystkich wspieranych kernelach (od wersji 4.14.11-5 w górę oraz we wspieranych LTS-ach). Ciężko mi teraz znaleźć link do tego, jak dokładnie wygląda wyłączanie PTI na procesorach AMD.

          Łatki odpowiedzialne za Spectre wariantu drugiego – tu opcje są dwie. Albo wsparcie IBRS ze strony kernela + aktualizacja mikrokodu do styczniowej wersji (wydanej na Linuxy 8 stycznia 2018) albo kernel skompilowany z opcją retpoline (CONFIG_RETPOLINE=y) za pomocą wersji kompilatora obsługującego retpoline (https://github.com/hjl-tools/gcc/commit/23b517d4a67c02d3ef80b6109218f2aadad7bd7 ). Pierwsza opcja jest „w drodze” a druga opcja z flagą retpoline powoduje lekki spadek wydajności w stylu 1 do 2 procent.

          Łatka na 1 wersję Spectre (najtrudniejszą do wyexploitowania – może za to stanowić większe zagrożenie w kombinacji ze specyficzną konfiguracją kernela + innymi lukami bezpieczeństwa) – o oficjalnych patchach na tą podatność jeszcze nie słyszałem.

          Odpowiedz
        • Xyzz

          A, znalazłem jeszcze jeden link jak to „główni winowajcy” łatają w projekcie Clear Linux – https://github.com/clearlinux-pkgs/linux

          Jakieś patche na pierwszą wersję Spectre się pojawiają.

          Odpowiedz
    • Tomek

      Na Phenom II 955 spadło mi w Passmarku o około 11% dla CPU i około 8% dla operacji dyskowych. Win7 Prof. 64bit SP1.

      Odpowiedz
  3. Q

    A czy architektura RISC / PowerPC też jest podatna?

    Odpowiedz
    • Odpowiedz
      • Gość

        „Rozczajki”? Poważny serwis nie powinien tak grypsować …

        Odpowiedz
        • czasem lubimy być niepoważni, od zbytniej powagi to można zawału dostać :-)

          Odpowiedz
          • nowy

            Racja, jestem „nowy” w te klocki i trochę „luzu” nam nie zaszkodzi. Pozdrawiania dla MS – Pańskie szkolenie zrobiło na mnie duże i pozytywne wrażenie oraz wielki szacunek dla ogromu Pańskiej wiedzy.

          • Waher

            Albo i kija nie powiem gdzie można mieć, a po co? :)

            Zatem AS400 który jest tak na prawdę sercem większości systemów bankowych – również jest zagrożony? Liczymy do czasu wyjścia rozwiązania na skuteczność hermetyzacji środowiska, bo inaczej będą jaja… oj będą.

            Pytanie zatem brzmi jak go załatać, oraz jak do tematu podejdzie firma matka , czyt. IBM.

            Pozdrawiam!

        • Olek

          Powiedział człowiek, który jest tak grzeczny, że nie nazwał swoje imię. :)

          Odpowiedz
        • kaper

          Słusznie. Nie mówi się „rozczajka” tylko „rozkmina”.

          Odpowiedz
        • it

          Czaic, wyczaic, rozczaic. Jezyk polski pozwala na nowe konstrukcje jezykowe, ktore od razu sa zrozumiale dla sluchaczy/czytaczy. Przyklad? Np.: przyczajony, zaczajony maja inna konotacje. Wiec badz przyczajony i przyczaj jak najwiecej. Rozczjajac o co w tym chodzi i jak sie to ma..

          Odpowiedz
  4. Poziomka

    Ów

    Odpowiedz
  5. Gebels

    Najlepiej jechać na piracie i mieć w d###pie łatki i legalne systemy.

    Odpowiedz
  6. Synowie Przymierza Dupy z Kijem

    Jak temat wygląda z ar71xx(i pochodnych) w routerach na lede?

    Odpowiedz
  7. (Devil inside)

    Chcieliście szybkości to ją macie (-; A jak ma się sprawa AMD i ARM jeżeli chodzi o szybkość odczytu za pomocą spectree v1 i spectree v2 – czy są już exploity?

    Spadam na drzewo spekulować (-;

    Odpowiedz

Odpowiedz