W procesorach AMD zidentyfikowano kolejną lukę umożliwiającą ataki Meltdown

Zespół badaczy z Politechniki w Grazu (Austria) i Centrum Bezpieczeństwa Informacji im. Helmholtza (CISPA) ujawnił informację o luce (CVE-2021-26318) we wszystkich procesorach AMD, która umożliwia przeprowadzenie operacji klasy Meltdown ataki typu side-channel (początkowo zakładano, że luka Meltdown nie dotyczy procesorów AMD). W praktyce atak może zostać wykorzystany do nawiązania ukrytych kanałów komunikacyjnych, monitorowania aktywności w jądrze lub uzyskania informacji o adresach w pamięci jądra w celu ominięcia ochrony KASLR przy wykorzystaniu luk w jądrze.

AMD uważa za niewłaściwe podejmowanie specjalnych działań w celu zablokowania problemu, gdyż podatność, podobnie jak podobny atak wykryty w sierpniu, jest mało przydatna w rzeczywistych warunkach, jest ograniczona obecnymi granicami przestrzeni adresowej procesu i wymaga obecności pewnych gotowe sekwencje instrukcji (gadżetów) w jądrze. Aby zademonstrować atak, badacze załadowali do własnego modułu jądra sztucznie dodany gadżet. W rzeczywistych warunkach atakujący mogą wykorzystać np. regularnie pojawiające się luki w podsystemie eBPF w celu podstawienia niezbędnych sekwencji.

Aby chronić się przed tym nowym typem ataku, firma AMD zaleciła stosowanie technik bezpiecznego kodowania, które pomagają blokować ataki Meltdown, takich jak użycie instrukcji LFENCE. Badacze, którzy zidentyfikowali problem, zalecają włączenie bardziej rygorystycznej izolacji tablicy stron pamięci (KPTI), która była wcześniej używana tylko w procesorach Intel.

Podczas eksperymentu naukowcom udało się wyciekać informacje z jądra do procesu w przestrzeni użytkownika z szybkością 52 bajtów na sekundę, biorąc pod uwagę obecność w jądrze gadżetu wykonującego operację „if (offset <data_len) tmp = LUT[dane[offset] * 4096];” . Zaproponowano kilka metod odzyskiwania informacji kanałami bocznymi, które trafiają do pamięci podręcznej podczas wykonywania spekulatywnego. Pierwsza metoda opiera się na analizie odchyleń w czasie wykonania instrukcji procesora „PREFETCH” (Prefetch+Time), a druga na zmianie zmiany zużycia energii podczas wykonywania „PREFETCH” (Prefetch+Power).

Przypomnijmy, że klasyczna podatność Meltdown polega na tym, że podczas spekulacyjnego wykonywania instrukcji procesor może uzyskać dostęp do prywatnego obszaru danych, a następnie odrzucić wynik, ponieważ ustawione uprawnienia zabraniają takiego dostępu z procesu użytkownika. W programie wykonywany spekulatywnie blok jest oddzielony od kodu głównego gałęzią warunkową, która w rzeczywistych warunkach zawsze uruchamia się, jednak ze względu na to, że instrukcja warunkowa wykorzystuje obliczoną wartość, której procesor nie zna podczas wyprzedzającego wykonywania kodu, wszystkie opcje oddziałów realizowane są spekulacyjnie.

Ponieważ operacje wykonywane spekulacyjnie korzystają z tej samej pamięci podręcznej, co instrukcje wykonywane normalnie, podczas wykonywania spekulatywnego możliwe jest ustawienie w pamięci podręcznej znaczników odzwierciedlających zawartość poszczególnych bitów w obszarze pamięci prywatnej, a następnie w normalnie wykonywanym kodzie określenie ich wartości poprzez synchronizację analiza dostępu do danych buforowanych i niebuforowanych.

Źródło: opennet.ru

Dodaj komentarz