EPTI: Efficient Defence against Meltdown Attack for Unpatched VMs

Podobne dokumenty
Porównanie Meltdown i Spectre

Monitor maszyn wirtualnych

System pamięci. Pamięć wirtualna

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

Przegląd dostępnych hypervisorów. Jakub Wojtasz IT Solutions Architect

WZÓR UMOWY. Zawarta w Białymstoku, w dniu.. pomiędzy:

Parametry techniczne. Testy

Strojenie systemu Linux pod k¹tem serwera bazy danych Oracle 9i

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Przepełnienie bufora. SQL Injection Załączenie zewnętrznego kodu XSS. Nabycie uprawnień innego użytkownika/klienta/administratora

Test dysku Intel SSD DC S GB. Wpisany przez Mateusz Ponikowski Wtorek, 22 Październik :22

Wprowadzenie do informatyki

WIRTUALIZACJA. Kamil Frydel, Julia Romanowska, Maciej Sokołowski. 12 listopada 2007 WIRTUALIZACJA. Kamil Frydel, Julia Romanowska, Maciej Sokołowski

Wirtualizacja. Metody, zastosowania, przykłady

System pamięci. Pamięć wirtualna

NASI SPONSORZY I PARTNERZY

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Linux -- u mnie działa!

Czym jest wirtualizacja

System pamięci. Pamięć wirtualna

>>> >>> Ćwiczenie. Cloud computing

Tomasz Greszata - Koszalin

Koncepcja wirtualnej pracowni GIS w oparciu o oprogramowanie open source

Wymagania systemowe Dla przedsiębiorstw i średnich firm

Systemy Operacyjne Wirtualizacja

Mikroinformatyka. Wielozadaniowość

CyberGuru Wirtualizacja na platformie Hyper-V w pigułce. Prezentuje: Kamil Frankowicz

Dane bezpieczne w chmurze

1) Czym jest architektura systemu Windows 7 i jak się ją tworzy? 2) Jakie są poszczególne etapy uruchomienia systemu Windows 7?

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

[1/15] Chmury w Internecie. Wady i zalety przechowywania plików w chmurze

Wydajny Linux. Jakub Woźniak KN Sieci Komputerowych i Systemów Rozproszonych Tenesys

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Systemy operacyjne III

Przetwarzanie danych w chmurze

Prezentacja systemu RTLinux

Wirtualizacja baz danych a Dynamic Memory. Cezary Ołtuszyk coltuszyk.wordpress.com

Księgarnia PWN: Kevin Kenan - Kryptografia w bazach danych. Spis treści. Podziękowania O autorze Wprowadzenie... 15

System wspomagania zarządzania wirtualizacją

Emulacja maszyny. Program udaje zupełnie inną architekturę. Musi przetłumaczyć instrukcje emulowane na instrukcje platformy, na której działa

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

Podstawy Informatyki DMA - Układ bezpośredniego dostępu do pamięci

QEMU działa na procesorach procesorach: emuluje procesory: dostępne dla s.o. hosta:

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Konwersja maszyny fizycznej na wirtualną.

Architektura komputerów

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Wirtualizacja w praktyce.

Bazy danych - ciągłość działania, spójność danych i disaster recovery. Daniel Polek-Pawlak Jarosław Zdebik

SAS Institute TECHNICAL SUPPORT

Welcome to the waitless world. Inteligentna infrastruktura systemów Power S812LC i S822LC

Wirtualizacja zasobów informatycznych w pracowni komputerowej

Wirtualizacja. czyli trochę co innego niż rzeczy do tej pory omawiane

Nowoczesny dział IT w chmurze

Wymagania systemowe. Dla przedsiębiorstw i średnich firm

Instrukcja instalacji i użytkowania programu NFZPersonel

Service Pack 1 z poprawką krytyczną Wymagania systemowe Dla przedsiębiorstw i średnich firm

DHL CAS ORACLE Wymagania oraz instalacja

Dariusz Kozak ZESTAW URUCHOMIENIOWY MIKROKOMPUTERÓW JEDNOUKŁADOWYCH MCS-51 ZUX51. Loader LX51 INSTRUKCJA OBSŁUGI DK Wszystkie prawa zastrzeżone

Architektura komputerów

ARCHITEKTURA PROCESORA,

Wymagania systemowe dla Qlik Sense. Qlik Sense February 2018 Copyright QlikTech International AB. Wszelkie prawa zastrzeżone.

Mikroinformatyka. Tryb wirtualny

System komputerowy. System komputerowy

Wymagania sprzętowe i systemowe

SPOSOBY DYSTRYBUCJI OPROGRAMOWANIA PANDA

Wirtualizacja. wspomagana sprzętowo - zalety, wady, zagrożenia. Szymon Doroz & Bartosz Janiak & Przemysław Zych

Zadanie1. Wykorzystując serwis internetowy Wikipedii wyjaśnij następujące pojęcia: wirtualizacja, VirtualBox, Vmware, KVM, Virtual PC, Hyper-V.

Licencjonowanie w środowiskach wirtualnych

INSTRUKCJA I WSKAZÓWKI

OFERTA NA SYSTEM LIVE STREAMING

Instalacja aplikacji

Tworzenie maszyny wirtualnej

Kinowa Biblioteka Filmowa KINOSERWER. KinoSerwer

Nowy model subskrypcji, dobór produktów Red Hat i JBoss. Grzegorz Niezgoda

RedHat Enterprise Virtualization

Internet Security Multi-Device PL Box 2-Device 1Year KL1941PBBFS

Paweł Skrobanek. C-3, pok pawel.skrobanek.staff.iiar.pwr.wroc.pl

SYSTEMY INFORMACJI PRAWNEJ LEX i ABC - WYMAGANIA TECHNICZNE. SYSTEMY INFORMACJI PRAWNEJ LEX i ABC. WYMAGANIA TECHNICZNE ver. 1.11

Autor: inż. Wojciech Zatorski Opiekun pracy: dr inż. Krzysztof Małecki

7. zainstalowane oprogramowanie zarządzane stacje robocze

Narzędzie konfiguracji rozruchu

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/ / 22

Projektowanie i implementacja wysokowydajnych aplikacji w języku

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

... Podpis osoby - osób upoważnionych do składania oświadczeń woli w imieniu wykonawcy

1. Pamięć wirtualna. 2. Optymalizacja pliku pamięci wirtualnej

INSTRUKCJA KORZYSTANIA Z APLIKACJI

Dysk twardy kontra dysk SSDNow V+ serii 200 o pojemności 240GB firmy Kingston: test

Wymagania sprzętowe i systemowe

OCHRONA PRZED RANSOMWARE. Konfiguracja ustawień

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

ZAŁĄCZNIK NR 1.8 do PFU Serwery wraz z system do tworzenia kopii zapasowych i archiwizacji danych - wyposażenie serwerowni

Instalacja Ubuntu 12.12

System plików JFS. 1 Najważniejsze informacje. Mateusz Zakrzewski. 18 stycznia JFS to skrót od Journalled File System.

Trojan bankowy Emotet w wersji DGA

Działanie systemu operacyjnego

Transkrypt:

EPTI: Efficient Defence against Meltdown Attack for Unpatched VMs Zhichao Hua, Dong Du, Yubin Xia, Haibo Chen, Binyu Zang Institute of Parallel and Distributed Systems, Shanghai Jiao Tong University

Meltdown - krótkie przypomnienie Obecnie produkowane procesory Intela wykonują ok. 200 instrukcji do przodu względem instrukcji wskazywanej przez RIP (tzw. speculative execution). Jeżeli któraś z tych 200 instrukcji naruszy ochronę pamięci to wyjątek jest zgłaszany dopiero wtedy, gdy RIP dojdzie do tej instrukcji. Do tego czasu wykonanie programu nie zostaje przerwane.

Meltdown - krótkie przypomnienie Po zgłoszeniu przerwania wynik wykonania kolejnych instrukcji zostaje anulowany. Ale czy na pewno? Nie! Zostaje ślad w cache procesora, który można odczytać poprzez zmierzenie czasu dostępu do określonej strony. Anulowane instrukcje mogą korzystać z wartości odczytanej przez instrukcję, która wywołała wyjątek.

Meltdown - skutki Atakujący przy pomocy programu działającego w trybie użytkownika może odczytać dowolny bajt pamięci kernela. W kernelu Linux jest zmapowana cała pamięć fizyczna, więc atakujący może w ten sposób odczytać pamięć innych programów.

KPTI - ochrona przed Meltdown Każdy odczyt pamięci przechodzi przez tablicę stron. Stosujemy dwie tablice - jedną dla kernela, drugą dla procesu użytkownika (bez stron należących do kernela). Zmieniamy tablice przy przechodzeniu między trybami.

KPTI - wady Zmiana tablicy stron przy pomocy rejestru CR3 kosztuje 300 cykli procesora. Każda zmiana CR3 wymusza wyczyszczenie TLB, co jeszcze bardziej pogarsza wydajność. Wg. autorów pracy spadek może wynieść nawet 30%. W chwili publikacji pracy KPTI było dostępne od wersji 4.15 kernela Linux. Starsze wersje np. 4.4 jeszcze nie wspierają poprawki.

Problem Trzymamy serwery w wirtualizowanym środowisku, np. w chmurze Amazona. Nie możemy sobie pozwolić na aktualizację kernela do nowej wersji, np. dlatego, że oprogramowanie z którego korzystamy działa tylko na Ubuntu 12 albo nie możemy sobie pozwolić na długie przestoje. Chcemy być chronieni przed Meltdown. Nasza chmura wspiera live migration (na którą możemy sobie pozwolić) oraz korzysta ze stosunkowo nowych procesorów (Haswell, 2013).

Pomysł Nie możemy nic zrobić z maszyną wirtualną, ale może dałoby się poprawić nadzorcę (np. KVM), by chronił nasze serwery przed Meltdown? Wówczas moglibyśmy przemigrować wirtualki na serwer zapasowy, wgrać poprawiony KVM i ponownie uruchomić obrazy maszyn na oryginalnym serwerze. Wgrywaniem patcha zajmowałby się dostawca chmurowy, więc nie stanowiłoby to problemu dla użytkownika chmury.

EPT - Extended Page Table

EPT - Extended Page Table

EPT - Extended Page Table Dzięki EPT (Nested Page Tables u AMD) host nie musi monitorować i ręcznie podmieniać wpisów w tablicy stron maszyny wirtualnej. Host może udostępnić maszynie wirtualnej kilka EPT do wyboru. Guest może w dowolnym momencie wywołać instrukcję VMFUNC zmieniającą aktywne EPT, zarówno w trybie użytkownika jak i w trybie kernela. Zmiana EPT trwa 160 cykli i zachowuje EPT-TLB, zmiana CR3 kosztuje 300 cykli i czyści TLB wszystkich EPT.

EPTI - Extended Page Table Isolation KPTI polega na stworzeniu dwóch osobnych tablic stron, po jednej dla kernela i procesu w trybie użytkownika. W EPTI tworzymy EPT-k i EPT-u i poprawiamy w locie wejścia i wyjścia kernela w taki sposób, by przełączały pomiędzy nimi. Wejścia kernela można znaleźć przez tablicę przerwań i rejestry MSR. Wyjścia kernela muszą zawierać konkretne instrukcje, np. sysretq.

Konstrukcja EPT-u Kopiujemy oryginalne EPT. Bierzemy tablicę stron L4 gościa, której adres jest zapisany w CR3. Odczytujemy górną połowę tak otrzymanej tablicy. Są w niej zapisane adresy tablic L3, które zawierają mapowania należące do kernela. Modyfikujemy EPT-u w taki sposób, by otrzymane wyżej adresy tablic L3 prowadziły do strony wypełnionej zerami (czyli oznaczały brak mapowania). W ten sposób blokujemy dostęp do fragmentu tablicy stron tłumaczącego adresy wirtualne kernela. Robimy wyjątek dla strony zawierającej trampolinę przełączającą pomiędzy trybami kernela i użytkownika. Dzięki temu atakujący nie odczyta zawartości żadnego adresu wirtualnego należącego do kernela, bo nie będą podmapowane w tablicy stron.

Konstrukcja EPT-k Kopiujemy oryginalne EPT. Proces użytkownika może w każdej chwili przełączać pomiędzy EPT-k i EPT-u. Zatem wystarczy, żeby przed wykonaniem ataku Meltdown przełączył się na EPT-k i wtedy strony kernela znowu będą dla niego widoczne. Trik jest taki, by w EPT-k zamarkować strony użytkownika jako niewykonywalne. Dzięki temu po przełączeniu na EPT-k proces się zawiesi. Meltdown może czytać strony do których nie jest uprawniony, ale nie może pobierać kodu do wykonania, który jest oznaczony jako niewykonywalny.

Aktualizacja EPT Tablice stron na które wskazuje CR3 mogą się zmieniać w czasie, np. w trakcie alokowania nowej strony. Nadzorca musi reagować na takie zmiany. Nadzorca monitoruje zmiany rejestru CR3 i w razie potrzeby poprawia EPT. Nadzorca przechwytuje zmiany na najwyższym poziomie tablicy stron gościa w celu aktualizacji listy wyzerowanych stron w EPT-u. Możliwe optymalizacje: Nie przechwytywanie zmian wprowadzanych przez procesor przy oznaczaniu strony flagami Access i Dirty. Nie przechwytywanie wszystkich zmian CR3 (tj. ładowania już załadowanego adresu). Monitorowanie tablicy stron kernela na poziomie L3 zamiast L4.

Ewaluacja Maszyna: Intel Core i7-7700, 16GB RAM, Samsung 512GB SSD System gospodarza: Ubuntu 14.04, Linux 4.9.75 z zaimplementowanym EPTI w KVM Maszyna wirtualna: 4 vcpu, 8 GB RAM, Ubuntu 16.04, Linux 4.9.75

Ewaluacja Maszyna: Intel Core i7-7700, 16GB RAM, Samsung 512GB SSD System gospodarza: Ubuntu 14.04, Linux 4.9.75 z zaimplementowanym EPTI w KVM Maszyna wirtualna: 4 vcpu, 8 GB RAM, Ubuntu 16.04, Linux 4.9.75 Spoiler! W większości testów wydajnościowych KPTI wprowadza narzut 12%-20%, a EPTI 6%-12% względem czystego kernela.

Ewaluacja - ochrona przed Meltdown Sposób ataku - ordynarne czytanie pamięci kernela z zarejestrowanym handlerem przechwytującym SEGFAULTy Wykradana wartość to linux_proc_banner składowany w przestrzeni kernela Atak przeprowadzony z powodzeniem na systemie bez KPTI i EPTI Zarówno KPTI jak i EPTI chronią przed atakiem

LMBench Wniosek: EPTI ma mniejszy narzut niż KPTI

SPEC_CPU 2006 - aplikacje z grupy INT Wniosek: ani EPTI ani KPTI nie wprowadzają dużego narzutu w aplikacjach stricte obliczeniowych

Apache (ab - apache benchmark) Wniosek: EPTI wprowadza spory narzut, ale i tak sprawuje się lepiej albo porównywalnie do KPTI (w zależności od wariantu)

Apache (ab - apache benchmark) Wnioski: EPTI jest lepsze od KPTI. Im nowszy kernel tym lepszy wynik.

Nginx (ab - apache benchmark) Wniosek: EPTI jest szybsze od KPTI

System plików (fs_mark) Wnioski: EPTI (narzut 1,1%) jest szybsze od KPTI (narzut 6,5%). Różnica jest niezauważalna, bo czynnikiem dominującym jest czas IO dysku.

Redis (redis-benchmark) Wnioski: EPTI (średni narzut 6%, najgorszy 12%) jest szybsze od KPTI (średni narzut 12%, najgorszy ponad 20%).

PostgreSQL (pgbench) Wnioski: EPTI (narzut 4% w H-RO) jest szybsze od KPTI (narzut 12% w H-RO).

MongoDB (YCSB) Wnioski: EPTI (średni narzut 2%) jest szybsze od KPTI (średni narzut 7%).

Migracja VM Wnioski: EPTI potrzebuje 3 ms więcej, gdyż oprócz samej migracji należy przeprowadzić skanowanie pamięci, podmienić trampoliny i przygotować tablice EPT.

Podsumowanie Przewagi EPTI nad KPTI: Kompatybilność Wydajność - średni spadek wydajności w EPTI to 6%, w KPTI 11%, co daje zysk 45% Bezproblemowe wdrożenie Obecne braki w EPTI - brak wsparcia dla: architektury x86 systemu gościa pięciopoziomowych tablic stron Windows Modyfikacje, jakie EPTI czyni w obrazie maszyny wirtualnej nie są transparentne dla gościa, aczkolwiek nie wpływają na funkcje takie jak VMI czy sprawdzanie integralności kernela.