Bierzemy pod lupę błąd w procesorach Intela, AMD i ARM

Nie czekając, aż konkurencja wypuści aktualizacje, na łamach bloga Google Project Zero badaczeszczegółowo udokumentowali nagłośniony wczoraj, bardzo poważny błąd w procesorach.

Bierzemy pod lupę błąd w procesorach Intela, AMD i ARM

Przypomnijmy, że chodzi o błąd w architekturze niemal wszystkich procesorów, który może pozwolić aplikacjomdziałającym z uprawnieniami użytkownika do odczytania z pamięcinależącej do jądra systemu danych, do których nie powinny miećone dostępu – haseł, kluczy, zawartości plików zbuforowanych zdysku i innych sekretów, normalnie niewidocznych dla aplikacji. Teraz gdy Google ujawniło już szczegółyataków, możemy podsumować stan rzeczy.

Jak się okazuje,mamy właściwie do czynienia z trzema różnymi podatnościami.Pierwsze dwa otrzymały zbiorczą nazwę Spectre Attack, trzeci znanyjest od teraz pod nazwą Meltdown. Co mogą one zrobić Waszymkomputerom – i jaki sprzęt faktycznie jest na atak podatny?

Meltdown, czyli gruby problem

Zacznijmy odnajwiększego z zagrożeń, CVE-2017-5754, rogue data cache load(„złośliwe ładowanie danych z bufora”), które otrzymałonazwę Meltdown („krach”). To właśnie ono było rozważane wewczorajszych spekulacjach, za jego sprawą normalne aplikacje mogąodczytać niedostępną dla nich pamięć kernela. To właśnie onozostało też opisane w artykule Andersa Fogha z lipca zeszłegoroku, do którego linkowaliśmy. Teraz możemy zaprosićzainteresowanych do lektury artykułu*Meltdown *zespołu badaczy zcałego świata, w którym przedstawiono go w detalach.

W dużym uproszczeniu sztuczka polega na wykorzystaniu mechanizmupredykcji procesora, który próbuje zgadnąć, jaka instrukcjabędzie wykonana jako następna i pobiera dla niej dane. Jeśliprocesor zgadnie źle, to musi cofnąć tak uruchomiony kod iuruchomić to, co faktycznie znajdowało się w programie. Jednaknajwyraźniej cofnięcie nie jest doskonałe – w buforach pozostająfragmenty danych. Napastnik próbuje więc w normalnym procesieużytkownika zestawić takie instrukcje, które sprawią, żeprocesor będzie zgadując pobierał dane z obszaru chronionejpamięci, nie przeprowadzając tu żadnej kontroli uprawnieńdostępu.

Gdy więc normalnie próba odczytania bajtu pamięci z pamięcikernela przez zwykły proces powinna zwrócić wyjątek, bezpiecznieobsłużony przez system, to następne po niej instrukcje zostałyjuż wykonane bez takiej kontroli, pozostawiając w buforze zawartośćpobranego bajtu. Teraz sprytne operacje na buforach pozwalająodkryć, gdzie bajt został zachowany i go odczytać. W ten sposóbmożna bajt po bajcie odczytać całą zawartość pamięci kernela.

Komu zagraża Meltdown?

Na ten atak podatne są wszystkie procesory Intel x86wyprodukowane od 1995 roku, stosujące technikę out-of-orderexecution (wykonywania poza kolejnością) – za wyjątkiem starych,32-bitowych procesorów Atom, które jej nie stosowały. Na pewnopodatne są jednak wszystkie 64-bitowe procesory Core. Intel do tejpory nie przedstawił żadnych zaleceń, Google zademonstrowałotymczasem, jak na procesorze Haswell Xeon odczytać dane z pamięcikernela.

Podatne są też procesory ARM, stosowane powszechnie wsmartfonach, ale przecież nie tylko, korzysta z nich mnóstwourządzeń wbudowanych i końcówek Internetu Rzeczy. Atak Meltdownmożna przeprowadzić na czipach ARM z najnowszymi rdzeniamiCortex-A75, ale uwaga: starsze rdzenie, Cortex-A15, Cortex-A57 iCortex-A72 są podatne na odmianę Meltdownu, w której procesyużytkownika mogą uzyskać dostęp nie do pamięci kernela, ale dochronionych rejestrów systemów. ARM opublikowało już biuletynbezpieczeństwa, w której dokładnie opisano, co może się staći jak sobie z tym radzić.

Procesory AMD nie są podatne na ten atak. AMD opublikowało w tejsprawie oficjalnewyjaśnienia. Potwierdził to sam Linus Torvalds, wprowadzającdo linuksowego kernela łatkę – zostaje ona wyłączona, jeślirozpozna procesor czerwonych (X86_VENDOR_AMD).

Meltdown demo - Spying on passwords

Jak się zabezpieczyć przed Meltdown?

Jako że jest to luka sprzętowa, atak można wykonać nawszystkich systemach operacyjnych działających na podatnychprocesorach. Zabezpiecza się przed nim, przenosząc pamięć kernelaw oddzielną przestrzeń pamięci wirtualnej. Technika ta nosi nazwęKernel Page Table Isolation (KPTI) – i niestety wiąże się zesporym (sięgającym nawet 30%) spowolnieniem pracy systemu. Imwięcej oprogramowanie próbuje uzyskać dostępu do zasobówsprzętowych i systemowych, tym większe będzie spowolnienie.Najgorzej mają wszyscy ci, którzy obsługują duże bazy danych.

W systemach Windows 10 taka izolacja zostaje wprowadzona przezpaczkę KB4056892– załatany zostaje też podsystem Windowsa dla Linuksa. Sam Linuxdostał aktualizacje do kernela4.15, trwają prace nad backportowaniem jej do wspieranychkerneli, wasze dystrybucje dostarczą je tak szybko jak to możliwe.macOS został zabezpieczony już w grudniu w wydaniu systemuoznaczonym numerem 10.13.2.

Uważajcie na wszelkiego rodzaju chmury i hostingi. Amazon właśniezakończył w pospiechu aktualizację chmury EC2, ale Microsoftdopiero wprowadza poprawki do Azure. Jak będzie z różnymipomniejszymi firmami – to się dopiero okaże.

Spectre, czyli drugi problem

Drugi z opisanych ataków na procesory obejmuje dwie podatności: CVE-2017-575, bounds checkbypass, oraz CVE-2017-5715, branch target injection. Podobnie jakatak Meltdown, wynikają one z błędów w architekturze procesora.Spectre jest trudnym do przeprowadzenia atakiem, zarazem wydaje sięteż bardzo trudny do załatania – tak naprawdę to trzeba byłobytutaj przekompilowywać wszystkie aplikacje. Samo izolowanie pamięcikernela nic tu nie da.

Spectre pozwala bowiem napastnikowi, który uruchomił swójproces z uprawnieniami zwykłego użytkownika na wydobycie informacjiz innych procesów działających w systemie, ale też wydobycieinformacji z własnego procesu. Ma to sens choćby w wypadkuprzeglądarek, gdzie kod w JavaScripcie może nagle zacząćodczytywać ciasteczka logowania z pamięci. Szczegóły zostałyprzedstawione w artykulept. Spectre Attacks: Exploiting Speculative Execution.

Komu zagraża Spectre?

Na atak na pewno podatne są procesory Intela. Badacze odkryli, żena procesorach Haswell Xeon są w stanie odczytać zawartośćpamięci innych procesów. Co ciekawe, za pomocą tych ataków udałosię też odczytać z poziomu maszyny wirtualnej-gościa zawartośćpamięci linuksowego kernela na hoście w obszarze 4 GB. Atak byłjednak dość skomplikowany (wymagał trwającej od 10 do 30 minutinicjalizacji) i powolny (1500 bajtów na sekundę).

Procesory AMD też są podatne na atak Spectre i odczytaniepamięci z innych procesów. Na pewno działa on na rdzeniach warchitekturach wywodzących się z Bulldozera, w czipach AMD FX-8320oraz AMD PRO A8-9600. Dodatkowo jeśli czip AMD PRO działa wniestandardowej konfiguracji z włączoną optymalizacją JIT, zwykłyużytkownik może odczytać pamięć kernela. A co z czipami Ryzen?Niestety mamy złą wiadomość – badacze twierdzą, że Spectredziała też na Ryzenach.

Tak samo fatalnie wygląda sytuacja z procesorami ARM: podatne sąrdzenie Cortex-A8, Cortex-A9, Cortex-A15, Cortex-A17, Cortex-A57,Cortex-A72, Cortex-A73 i Cortex-A75, a także specjalistyczne rdzeniez serii R.

Jak się zabezpieczyć przed Spectre?

Tu sprawa robi się dość skomplikowana. Google twierdzi,że smartfony z Androidem i najnowszym zestawem łatek są w praktyceodporne na próby exploitowania Spectre, poprzez zablokowanie dostępudo precyzyjnych timerów, potrzebnych do przeprowadzenia takiegoataku. Podobne zabezpieczenia zostaną wprowadzone do przeglądarkiChrome od wersji 63 oraz chromebooków.

Badacze stawiają jednak pod znakiem zapytania skutecznośćtakich działań, pisząc, że choć można wprowadzić z poziomukompilatora instrukcje blokujące spekulatywne wykonywanie kodu, toznacząco to obniży wydajność. Trzeba to też zrobić zewszystkimi aplikacjami – a co, jeśli są stare i niewspierane?Wątpliwa jest także praktyczna wartość uaktualnień mikrokoduwydanych dla procesorów, w najlepszym razie można to uznać zatymczasową łatkę.

Być może najlepszym zabezpieczeniem jest… śmietnik.Amerykański CERT wydał oficjalnykomunikat, w którym przedstawia swoje rozwiązanie: należywymienić podatny na atak procesor. Ale które są niepodatne? Wostatnim czasie predykcyjne wykonywanie kodu bardzo się rozpleniło,w Ryzenach AMD chwaliło się wręcz jakąś sztuczną inteligencjądo przewidywania kolejnych instrukcji. Czy takie rozwiązania w ogólesą bezpieczne?

Niewykluczone, że w najbliższych latachsporo utracimy po prostu z wydajności procesorów. Branżapółprzewodnikowa całe lata ścigała się jedynie na wydajność ienergooszczędność. Jak widać, popełniono przy tym błędy, którenas wszystkich mogą drogo kosztować.

Podsumowanie

Meltdown(Rogue Data Cache Load)Spectre I(Bounds Check Bypass)Spectre II(Branch Target Injection)ReakcjaIntelpodatne modele od 1995 roku poza 32-bitowymi AtomamipodatnepodatnekomunikatprasowyAMDodpornepodatneznikome prawdopodobieństwo atakuobjaśnienie stanuzagrożeńARMCortex A-75 podatny, A-15, A-72 podatne na osłabioną wersjępodatne Cortex-A8 do A-75podatne Cortex-A8 do A-75biuletynbezpieczeństwa

Programy

Zobacz więcej
Wybrane dla Ciebie
Komentarze (228)