Zapscape, luka w zabezpieczeniach KVM umożliwiająca ucieczkę z maszyny wirtualnej i przejęcie kontroli nad hostem.

Kluczowe punkty:
  • Krytyczna wada KVM umożliwiająca atakującemu wydostanie się z maszyny wirtualnej (L1) i przejęcie pełnej kontroli nad serwerem hosta (L0).
  • Spowodowane jest błędem „użycie zwolnionej pamięci” w zarządzaniu Shadow MMU, występującym od jądra Linux 5.9.
  • Aby można było z niej korzystać, funkcja wirtualizacji zagnieżdżonej musi być włączona na serwerze.
  • Dotyczy procesorów AMD i Intel (te ostatnie wymagają udostępnionych możliwości przeglądania stron EPT na poziomie 4 i 5).
  • W ostatnich aktualizacjach jądra naprawiono: jako tymczasowe rozwiązanie zaleca się wyłączenie wirtualizacji zagnieżdżonej.

Zapscape

Niedawno opublikowano informacje o luce w zabezpieczeniach , która naraża serwery w chmurze na ryzyko. Luka ta umożliwia atakującym przejęcie pełnej kontroli nad maszyną fizyczną , co jest koszmarem dla dostawców infrastruktury chmurowej.

Zapscape, zarejestrowany pod identyfikatorem CVE-2026-64561, to krytyczna luka w zabezpieczeniach hiperwizora Linux KVM, która naraża na ryzyko, na jakie wiele platform nieświadomie naraża się, włączając zagnieżdżoną wirtualizację. Luka ta umożliwia atakującemu z uprawnieniami jądra w maszynie wirtualnej (L1) wykonywanie kodu z uprawnieniami roota w systemie hosta (L0), co przerywa izolację środowisk zwirtualizowanych.

Zapscape jest uważany za poważne zagrożenie. Nie tylko ułatwia ucieczkę z maszyny wirtualnej, ale także otwiera drogę lokalnej eskalacji uprawnień dla użytkowników hosta, którzy mają uprawnienia zapisu na urządzeniu /dev/kvm.

Chociaż organizacje takie jak Red Hat oceniły tę lukę w zabezpieczeniach, przyznając jej wynik CVSS na poziomie 7.0, skupiając się na niestabilności i możliwości odmowy usługi, publiczny dowód koncepcji (PoC) wskazuje na znacznie bardziej destrukcyjny zakres: utworzenie dowolnego pliku bezpośrednio w katalogu głównym hosta.

Chaos w jednostce zarządzania pamięcią

Sposób działania Zapscape jest ukryty w jednostce zarządzania pamięcią (MMU) KVM i sposobie, w jaki hiperwizor obsługuje tabele stron, gdy jeden gość (L1) działa jako hiperwizor dla innego podgościa (L2). Problem leży w logicznym błędzie kolejności podczas obsługi błędów stron. W ścieżkach kodu jądra, sprawdzanie „przestarzałego katalogu głównego” było wykonywane przed funkcją pobierania stron, a nie po niej.

Ta nieprawidłowa sekwencja uruchamia klasyczny scenariusz „użyj po zwolnieniu” . Podczas odzyskiwania KVM może usunąć używany katalog główny i oznaczyć go jako nieprawidłowy. Jednak ponieważ kontrola stanu została już przeprowadzona, system kontynuuje tworzenie mapowań pod katalogiem głównym, który nie jest już prawidłowy. Co ciekawe, ten problem z sortowaniem istniał w kodzie od 2008 roku, ale stał się krytyczny i podatny na wykorzystanie po wydaniu jądra Linux 5.9 w lipcu 2020 roku , kiedy wprowadzono dyrektywę, której egzekwowanie system po prostu przestał.

Wymagania i ograniczenia

Aby Zapscape był podatny na ataki, środowisko musi spełniać bardzo specyficzne wymagania. Po pierwsze, w module KVM należy włączyć wirtualizację zagnieżdżoną, co umożliwia architekturę trójwarstwową (L0, L1 i L2). Atakujący musi zainicjować atak z poziomu L1 , co wymaga uprawnień roota na tej maszynie wirtualnej. Następnie atakujący manipuluje trybami pamięci, podczas gdy aktywność pod-gościa L2 zmusza hosta L0 do zainicjowania pobierania stron kwot, co powoduje uszkodzenie pamięci.

Na poziomie sprzętowym warunki różnią się w zależności od producenta. W systemach AMD wykorzystujących zagnieżdżone tablice stron ( SVM ) luka jest bardziej oczywista i nie wymaga żadnych dodatkowych funkcji. Natomiast w przypadku procesorów Intela scenariusz wymaga , aby gość L1 dysponował cztero- i pięciopoziomowymi możliwościami pagewalkowania EPT . Ogranicza to wektor ataku na procesory Intel do nowszych architektur, a konkretnie od rodziny Ice Lake-SP.

Warto zauważyć, że chociaż publiczny dowód koncepcji zdołał przedostać się do hosta w kontrolowanych środowiskach, badacze bezpieczeństwa zgłosili, że w przypadku niektórych przekompilowanych jąder exploit po prostu powoduje awarię maszyny wirtualnej atakującego, co stanowi raczej odmowę usługi niż całkowite uniknięcie ataku.

Łagodzenie, poprawki i strategie

Ostateczne rozwiązanie problemu z Zapscape pojawiło się w repozytoriach Linuksa w lipcu ubiegłego roku wraz z poprawką korygującą kolejność walidacji. Ta poprawka przenosi sprawdzanie nieaktualnego katalogu głównego na czas po alokacji strony MMU, zapewniając, że hiperwizor nie utworzy aktywnych mapowań pod usuniętym katalogiem głównym. Poprawki te zostały już zaimplementowane w stabilnych gałęziach jądra i są szeroko rozpowszechniane przez różne dystrybucje.

Dla administratorów, którzy nie mogą natychmiast przeprowadzić aktualizacji, dostępne są bardzo skuteczne tymczasowe środki zaradcze. Priorytetem jest wyłączenie wirtualizacji zagnieżdżonej na wszystkich serwerach, na których nie jest to absolutnie konieczne, poprzez przekazanie parametru `nested=0` do modułów `kvm_amd` lub `kvm_intel` w plikach konfiguracyjnych modprobe. Ten środek zaradczy wymaga przeładowania modułu, co oznacza zatrzymanie wszystkich aktywnych maszyn wirtualnych.

Jeśli chcesz dowiedzieć się więcej, szczegóły znajdziesz pod poniższym linkiem.


Dodaj jako preferowane źródło w Google