Czy maszyna wirtualna (VM) może „zhakować” inną maszynę wirtualną działającą na tej samej maszynie fizycznej?

12

Pytania:

  • jeśli maszyna wirtualna jest uszkodzona (zhakowana), jakie mam ryzyko na innych maszynach wirtualnych działających na tej samej maszynie fizycznej?
  • Jakie są problemy bezpieczeństwa między maszynami wirtualnymi działającymi na tym samym hoście fizycznym?
  • Czy istnieje (czy można zrobić) listę tych (potencjalnych) słabości i / lub problemów?

Ostrzeżenie:

Wiem, że istnieje wiele typów / rozwiązań wirtualizacji i mogą mieć różne słabości. Jednak przede wszystkim szukam ogólnych problemów bezpieczeństwa związanych z technikami wirtualizacji, a nie konkretnego błędu dostawcy.

Proszę podać prawdziwe fakty, (poważne) badania, napotkane problemy lub wyjaśnienia techniczne. Być specyficznym. Nie (tylko) wyrażaj swojej opinii.

  • Przykłady:

Dwa lata temu słyszałem, że mogą istnieć problemy z bezpieczeństwem związane z MMU (myślę, że mam dostęp do pamięci głównej innych maszyn), ale nie wiem, czy jest to praktyczne zagrożenie na dzień dzisiejszy, czy tylko teoretyczne badanie Przedmiot.

EDYCJA: Znalazłem również ten atak „Flush + Reload”, który jest w stanie odzyskać tajne klucze GnuPG na tej samej maszynie fizycznej, wykorzystując pamięć podręczną procesora L3, nawet jeśli GnuPG działa na innej maszynie wirtualnej. Od tego czasu GnuPG zostało załatane.

Totor
źródło
2
@MichaelHampton (i inni +3000 przedstawicieli) Przepraszamy, nie zgadzam się na zamknięcie tego pytania. Nie oczekuję, ani nie szukam debaty, aby na nie odpowiedzieć, ale tylko prawdziwe fakty , cytowane badania, artykuły lub artykuły badawcze, dzielenie się doświadczonymi problemami, techniczne wyjaśnienia dotyczące izolacji, itp. Jak myślisz, jaka debata mogłaby się pojawić? Nie pytam, czy wirtualizacja jest „dobra” czy „zła” dla bezpieczeństwa, dokładnie zapytałam: „co ryzykuję” i „jakie problemy bezpieczeństwa”! Zmodyfikuj moje pytanie, jeśli uważasz, że może być bardziej szczegółowe, ale nie blokuj go.
Totor,
2
Myślę, że to uzasadnione pytanie. W przeszłości istniały uzasadnione obawy, więc należy się spodziewać obaw dotyczących bezpieczeństwa. informationweek.com/government/security/…
Stefan Lasiewski
3
Naprawdę nie jestem przeciwny ponownemu otwarciu pytania, ale myślę, że możesz uzyskać lepsze odpowiedzi w naszej siostrzanej witrynie Bezpieczeństwo informacji (a pytanie jest zbyt stare, aby przeprowadzić migrację).
Michael Hampton
@MichaelHampton Masz rację, rozważę pytanie, czy nie ma tu wystarczająco ładnych odpowiedzi. Dziękuję Ci.
Totor

Odpowiedzi:

9

Oczywiście możliwe jest wykorzystanie innej maszyny wirtualnej działającej na tym samym sprzęcie, z uwagi na działający exploit. Dodatkowo można istnieć. Twoje pytanie przytacza niektóre najnowsze prace, które je pokazują. Nie zamierzam udostępniać tutaj żadnych konkretnych exploitów ani PoC, ale chętnie powiem, jak można je stworzyć.

Exploity, które są używane w tym kontekście, są naturalnie różne od tych, które działają, gdy działasz na tym samym komputerze, na którym próbujesz wykorzystać usługę, i są one zwykle nieco trudniejsze ze względu na zwiększoną izolację. Jednak niektóre ogólne podejścia, które można wykorzystać do osiągnięcia takiego exploita, obejmują:

  • Zaatakuj hiperwizora . Jeśli można uzyskać dostatecznie uprzywilejowaną powłokę na hiperwizorze przy danej maszynie wirtualnej, można przejąć kontrolę nad dowolną maszyną wirtualną w systemie. Sposobem na osiągnięcie tego jest poszukiwanie przepływów danych, które istnieją z maszyny wirtualnej do hiperwizora i są wysoce zależne od hiperwizora; rzeczy takie jak parawirtualizowane sterowniki, udostępnianie schowka, wyświetlanie i ruch sieciowy zwykle tworzą ten typ kanału. Na przykład złośliwe wywołanie do parawirtualizowanego urządzenia sieciowego może doprowadzić do wykonania dowolnego kodu w kontekście hiperwizora odpowiedzialnego za przekazanie tego ruchu do fizycznego sterownika karty sieciowej.
  • Zaatakuj sprzęt na hoście . Wiele urządzeń zezwala na aktualizacje oprogramowania układowego, a jeśli zdarza się, że można uzyskać dostęp do tego mechanizmu z maszyny wirtualnej, możesz przesłać nowe oprogramowanie układowe, które sprzyja twoim zamiarom. Na przykład, jeśli masz prawo do aktualizacji oprogramowania układowego karty sieciowej, możesz spowodować, że powielą one ruch związany z jednym adresem MAC (ofiarą), ale z innym docelowym adresem MAC (twoim). Z tego powodu wiele hiperwizorów filtruje takie polecenia tam, gdzie to możliwe; ESXi filtruje aktualizacje mikrokodu procesora, gdy pochodzą z maszyny wirtualnej.
  • Zaatakuj architekturę hosta. Przywołany przez ciebie atak, zasadniczo kolejny atak polegający na ujawnieniu klucza oparty na czasie, robi to: wykorzystuje wpływ mechanizmu buforowania na czas operacji, aby rozpoznać dane używane przez ofiarę maszyny wirtualnej w jej operacjach. Podstawą wirtualizacji jest współdzielenie komponentów; w przypadku współdzielenia komponentu istnieje możliwość kanału bocznego. W zakresie, w jakim inna maszyna wirtualna na tym samym hoście może wpływać na zachowanie sprzętu podczas działania w kontekście maszyny wirtualnej ofiary, maszyna wirtualna ofiary jest kontrolowana przez atakującego. Przywołany atak wykorzystuje zdolność maszyny wirtualnej do kontrolowania zachowania pamięci podręcznej procesora (zasadniczo współużytkowanego stanu uniwersalnego), dzięki czemu czasy dostępu do pamięci ofiary dokładniej ujawniają dane, do których ma dostęp; wszędzie tam, gdzie istnieje wspólny stan globalny, istnieje również możliwość ujawnienia. Aby przejść do hipotetycznego przykładu, wyobraź sobie atak, który masuje VMFS ESXi i powoduje, że części woluminów wirtualnych odwołują się do tych samych fizycznych adresów dysków, lub atak, który powoduje, że system balonowania pamięci wierzy, że część pamięci może być współużytkowana, podczas gdy w rzeczywistości powinna być prywatny (jest to bardzo podobne do sposobu wykorzystania exploitów po wykorzystaniu lub podwójnej alokacji). Rozważ hipotetyczny MSR procesora (rejestr specyficzny dla modelu), który hiperwizor ignoruje, ale umożliwia dostęp; może to zostać wykorzystane do przekazywania danych między maszynami wirtualnymi, co zrywa izolację, jaką ma zapewnić hiperwizor. Rozważ także możliwość zastosowania kompresji, aby duplikaty komponentów dysków wirtualnych były przechowywane tylko raz - w niektórych konfiguracjach może istnieć (bardzo trudny) kanał boczny, w którym osoba atakująca może rozpoznać zawartość innych dysków wirtualnych, pisząc na własnym dysku i obserwując co robi hypervisor. Oczywiście hiperwizor ma się przed tym uchronić, a hipotetyczne przykłady byłyby krytycznymi błędami bezpieczeństwa, ale czasem te rzeczy wymykają się.
  • Zaatakuj bezpośrednio inną maszynę wirtualną . Jeśli masz hosta proksymalnego dla ofiary maszyny wirtualnej, możesz skorzystać ze swobodnej kontroli dostępu lub celowej komunikacji między maszynami wirtualnymi, w zależności od konfiguracji hosta i jakich założeń poczyniono podczas wdrażania kontroli dostępu. Jest to tylko nieznacznie istotne, ale należy o tym wspomnieć.

Z czasem pojawią się określone ataki, które zostaną załatane, więc klasyfikowanie określonego mechanizmu jako możliwego do wykorzystania, możliwego do wykorzystania tylko w warunkach laboratoryjnych lub niewykonalnego nigdy nie jest poprawne. Jak widać, ataki bywają zaangażowane i trudne, ale które z nich są wykonalne w danym momencie , szybko się zmieniają i musisz być przygotowany.

To powiedziawszy, wektory, o których wspomniałem powyżej (z możliwym wyjątkiem ostatniego w niektórych przypadkach) po prostu nie istnieją w środowisku bez metalu. Tak więc, biorąc pod uwagę, że bezpieczeństwo polega na ochronie przed exploitami, o których nie wiesz i które nie są na wolności, a także te, które zostały publicznie ujawnione, możesz zyskać trochę bezpieczeństwa, uruchamiając go na czystym metalu lub w przynajmniej w środowisku, w którym hiperwizor nie hostuje maszyn wirtualnych dla wszystkich.

Zasadniczo skuteczną strategią bezpiecznego programowania aplikacji byłoby założenie, że na komputerze działają inne procesy, które mogą być kontrolowane przez atakującego lub złośliwe, i używać technik programowania świadomych pod kątem wykorzystania, nawet jeśli uważasz, że inaczej nie zapewniasz takiego procesu istnieje na twojej maszynie wirtualnej. Jednak szczególnie w przypadku pierwszych dwóch kategorii pamiętaj, że wygrywa ten, kto pierwszy dotknie sprzętu.

Falcon Momot
źródło
Najlepsza odpowiedź, dziękuję! Czy możesz podać trochę więcej szczegółów na temat różnych rodzajów słabości „architektury hosta”? Ponadto nie szukam konkretnych exploitów i odpowiednio zredagowałem moje pytanie (chcę tylko uniknąć spekulacyjnych odpowiedzi).
Totor
Hej, jasne. Chwileczkę, a rozwinę się trochę.
Falcon Momot,
I zrobione. Odchodzi bardziej w stronę hipotetyczną niż chciałbym, ale powinien być ilustracyjny.
Falcon Momot,
W szczególności atak polegający na kradzieży klucza SSL / SSH działa na gości VM na tym samym hoście, ponieważ jest bezpośrednim atakiem na harmonogram CPU.
joshudson
13

Teoretycznie nie. Celem hiperwizora jest izolowanie maszyn wirtualnych od siebie.

W praktyce wystąpiły (i mogą być w przyszłości) błędy bezpieczeństwa w różnych hiperwizorach, które mogą pozwolić jednej maszynie wirtualnej wpłynąć na hiperwizora lub inne maszyny wirtualne na tym samym hoście. Środki bezpieczeństwa, takie jak sVirt (dla KVM / QEMU) mają na celu rozwiązanie tego problemu.

Michael Hampton
źródło
@RyanRies (i kce i MichaelHampton ) Dziękuję za te miłe odpowiedzi, ale czy mógłbyś być bardziej konkretny i techniczny, ponieważ pytanie prawdopodobnie zostanie ponownie zamknięte, jeśli nie będzie „prawdziwych faktów , cytowanych badań, prac badawczych, napotkanych problemów lub wyjaśnień technicznych „dotyczyły, ale głównie spekulacyjne lub niejasne odpowiedzi / porady. Zredagowałem odpowiednio moje pytanie.
Totor
8

Edycja: Myślałem, że ten temat został ukończony kilka miesięcy temu, ale właśnie został odnowiony, a teraz OP prosi o więcej „prawdziwych faktów, cytowanych badań” itp., Więc pomyślałem, do cholery.

Wykorzystania tego rodzaju to:

  1. Rzadko spotykany
  2. Wrażliwe z natury i dlatego nie są udostępniane jawnie, a gdy są, exploity zostały załatane przez sprzedawcę, zanim ktokolwiek na tej stronie dowie się o nich
  3. Skomplikowane i będą się różnić w zależności od dostawcy

Nie możemy powiedzieć, że nie można zhakować hiperwizora i uzyskać dostęp do innych maszyn wirtualnych. Nie możemy również określić ilościowego ryzyka, z wyjątkiem tego, że doświadczenie pokazuje nam, że jest dość niskie, biorąc pod uwagę, że nie znajdziesz wielu opowieści o atakach wykorzystujących exploity hypervisora.

Oto coś w rodzaju interesującego artykułu, który sugeruje, że przeprowadzono więcej niż kilka ataków opartych na hiperwizorach.

Jednak z uwagi na to, że technologia w większym stopniu niż kiedykolwiek opiera się na hiperwizorach, takie exploity zostałyby załatane i zabezpieczone przed większą pilnością niż jakikolwiek inny rodzaj exploita.

Oto fragment raportu na temat trendów i ryzyka w połowie roku IBM X-Force 2010:

(Otwórz ten obraz w nowej karcie, aby wyświetlić go w pełnym rozmiarze).

Raport śródrocznego trendu i ryzyka IBM X-Force 2010.

Zwróć uwagę na zmierzony procent luk w zabezpieczeniach „Escape to hypervisor”, co wydaje mi się dość przerażające. Oczywiście chcesz przeczytać resztę raportu, ponieważ zawiera on o wiele więcej danych na poparcie roszczeń.

Oto opowieść o możliwym exploicie przeprowadzonym na hiperwizorze Playstation 3, co jest zabawne. Może nie ma to tak dużego wpływu na Twoją firmę, chyba że Twoja firma to Sony, w którym to przypadku ma to ogromny wpływ.

Oto wspaniały artykuł od Erica Horschmana z VMware, w którym trochę mi się podoba, że ​​brzmi jak nastolatek, który często przyjmuje anty-Micro $, ale wciąż jest to dobry artykuł. W tym artykule znajdziesz ciekawostki takie jak to:

Mieszkańcy szklanego domu Microsoftu musieli rzucić nam inne kamienie. Microsoft wskazał CVE-2009-1244 jako przykład podatności na włamanie gościa w ESX i ESXi. Exploit związany z przełamywaniem gości to poważna sprawa, ale po raz kolejny Microsoft wprowadza w błąd faktów. VMware szybko zareagowało na załatanie tej luki w naszych produktach, a ESX był znacznie mniej dotknięty, niż Microsoft uwierzyłby:

Sprzeczanie się między konkurentami. Ale prawdopodobnie najbardziej klarowna rzecz, którą mówi w całym artykule, to:

Prawda jest taka, że ​​luki w zabezpieczeniach i exploity nigdy nie znikną całkowicie w przypadku oprogramowania korporacyjnego.

Ryan Ries
źródło
Co oznaczają te wartości procentowe na zdjęciu?
Totor
Jest to histogram wskazujący procent znalezionych sromów według typu w każdej klasie docelowej. Innymi słowy, 30,8% w górnym wierszu „Procent stacji roboczej” oznacza, że ​​30,8% wulgaryzowanych programów IBM X-Force mających wpływ na oprogramowanie do wirtualizacji stacji roboczych zaatakowało bezpośrednio system operacyjny hosta (np. Stacja robocza została zaatakowana, a ta miała niewiele lub nic zrobić z oprogramowaniem do wirtualizacji lub maszynami wirtualnymi na nim). I tak dalej.
Falcon Momot,
6

Zawsze cytowany Theo de Raddt z projektu OpenBSD:

Jesteś całkowicie złudzony, jeśli nie głupi, jeśli uważasz, że światowa kolekcja inżynierów oprogramowania, którzy nie potrafią pisać systemów operacyjnych lub aplikacji bez luk w zabezpieczeniach, może wtedy odwrócić się i nagle napisać warstwy wirtualizacji bez luk w zabezpieczeniach.


Trochę zapalny, ale jego punkt widzenia jest dobrze przyjęty. Teoretycznie wirtualizacja ma zapewnić pełną izolację między maszynami wirtualnymi a ich hostem. W praktyce zdarzają się luki w zabezpieczeniach, które pozwalają zaawansowanym atakującym obejść te zabezpieczenia i uzyskać dostęp do innych maszyn wirtualnych lub nawet gorzej ich hosta (patrz Badanie empiryczne dotyczące narażenia na bezpieczeństwo hostów wrogich środowisk zwirtualizowanych ). Jak wspomina Ryan Ries, tego rodzaju luki są dość rzadkie (co nie znaczy, że ich nie ma) i często nie są ujawniane przez dostawców, ale istnieją.

Jeśli obawiasz się możliwości wystąpienia tego rodzaju ataków (i myślę, że w pewnym stopniu powinieneś), radzę nie mieszać stref bezpieczeństwa na jednym wirtualnym hoście lub klastrze hostów wirtualnych. Na przykład - miałbyś dedykowany klaster dwóch hostów wirtualnych hosta dla maszyn wirtualnych DMZ, dedykowany klaster dla oprogramowania pośredniego i dedykowany klaster dla chronionych zasobów. W ten sposób, w przypadku wykorzystania luki w zabezpieczeniach, umożliwiającej atakującemu obalenie innych maszyn wirtualnych lub, co gorsza, samego hiperwizora, model bezpieczeństwa pozostaje nienaruszony.


źródło