Czy to możliwe, że maszyna wirtualna taka jak VirtualBox ma „widmo” podatności? Myślę, że maszyna wirtualna może wykonuje poza kolejnością, ale moim zdaniem nie jest możliwe zerknięcie do pamięci podręcznej w celu odczytania wyniku.
Czy jest jakieś wyjaśnienie, w jaki sposób można odczytać pamięć podręczną wirtualnego procesora?
Spectre works on a different level ... In this attack, the attacker tricks the speculative execution to predictively execute instructions erroneously. In a nutshell, the predictor is coerced to predict a specific branch result that results in asking for an out-of-bound memory access that the victim process would not normally have requested resulting in incorrect speculative execution. Then by the side-channel, retrieves the value of this memory. In this way memory belonging to the victim process is leaked to the malicious process.
qemu
emulacja mogą być bezpieczniejsze, ponieważ nie jest to procesor sprzętowy , ale jest znacznie wolniejszy i różni się od wirtualizacji.Odpowiedzi:
Tak Spectre może przekraczać granice hosta / gościa, gościa / hosta i gościa / gościa, ponieważ jest to usterka na poziomie procesora, co oznacza, że potencjalnie wrażliwe informacje mogą przeciekać przez wszystko, co działa na rdzeniu procesora.
Większość wiadomości w Internecie mówi o tym, że dostawcy usług w chmurze są tym najbardziej dotknięci, ponieważ mają ogromne klastry systemów, które są zwirtualizowane i mogą potencjalnie zostać wykorzystane do ujawnienia poufnych informacji.
Większość dużych dostawców powinna już być załatana wady, najlepiej jak potrafią, ale będzie to problem, który będzie istniał przez jakiś czas.
Security.SE ma kanoniczne pytania i odpowiedzi na ten temat i wspomina o maszynach wirtualnych:
Maszyny wirtualne używają rzeczywistego procesora w systemie, a niektóre uprzywilejowane instrukcje są uwięzione i można je przekierować. Używa tych samych pamięci podręcznych i instrukcji, co host. Jest to zasadniczo kolejna warstwa fizycznego procesora w systemie.
Wirtualizacja jest szybka tylko dlatego, że wykorzystuje fizyczny procesor z jak najmniejszą abstrakcją i opiera się na sprzęcie procesora w celu zapewnienia izolacji. Rzeczy takie jak qemu mogą wykonywać emulację, co byłoby bezpieczniejsze, ponieważ nie jest to procesor sprzętowy, ale jest znacznie wolniejsze i różni się od wirtualizacji.
Z kanonicznego postu Security.se ponownie:
Ponieważ maszyna wirtualna działa na rzeczywistym sprzęcie CPU, wystarczy uruchomić określoną pętlę, aby „wyszkolić” spekulacyjny silnik wykonawczy. Następnie może użyć precyzyjnego pomiaru czasu, aby oglądać pamięci podręczne dla określonych wzorców dostępu wskazujących na proces hosta lub gościa (lub innej maszyny wirtualnej), który chce wykorzystać.
W ten sposób oznacza to, że maszynę można wykorzystać we wszystkich kierunkach. Od hosta do VM, od VM do hosta oraz od VM do VM.
Tak, nie jest to wcale łatwe i trudne do ściągnięcia, ponieważ rdzeń procesora VM może się zmienić na kaprys hosta, a host może z przyjemnością planować zadania na różnych rdzeniach, ale przez długi czas wystarczająca ilość informacji może zostać wyciekły, aby wydać tajny klucz do jakiegoś ważnego systemu lub konta. Biorąc pod uwagę wystarczającą ilość czasu i odpowiednio skryte oprogramowanie, wszystko jest potencjalnie otwarte.
Jeśli chcesz mieć „bezpieczną” maszynę wirtualną, musisz zagwarantować, że jej rdzenie są izolowane. Jedynym prawdziwym sposobem na zablokowanie tego ataku byłoby „wymuszenie” hosta i maszyn wirtualnych do używania tylko niektórych rdzeni, aby nigdy nie działały na tym samym sprzęcie, ale prowadziłoby to do skutecznego wzrostu kosztów, ponieważ nie byłbyś w stanie mieć tyle maszyn wirtualnych na danym hoście. Nigdy nie będziesz w stanie uniknąć większej liczby maszyn wirtualnych niż dostępnych rdzeni, co jest czymś, czego spodziewałbym się na serwerach „niskiego obciążenia”, ponieważ wiele systemów pozostaje bezczynnych przez 90% swojego życia.
źródło
gem5
Jeśli jesteś zainteresowany badaniem / odtwarzaniem luk wyłącznie przy użyciu emulacji, bez użycia procesora hosta, nie sądzę, aby QEMU było wystarczająco szczegółowe, aby je zaobserwować, ponieważ nie symuluje potoku procesora.
gem5 służy jednak do oszacowania wydajności systemu w badaniach i rozwoju i symuluje wystarczającą liczbę procesorów wewnętrznych, aby obserwować Spectre w całkowicie czystym i kontrolowanym środowisku.
Świetne demo x86_64 z wizualizacją zostało opublikowane na stronie : http://www.lowepower.com/jason/visualizing-spectre-with-gem5.html
Minusem gem5 jest to, że jest znacznie wolniejszy niż QEMU, symulacja jest bardziej szczegółowa.
źródło