Kasper, skaner urządzeń do spekulacyjnego kodu w jądrze Linux

Grupa ujawnili badacze z Wolnego Uniwersytetu w Amsterdamie za pośrednictwem wpisu na blogu narzędzie o nazwie "Kacper" które podkreślają, że tak jest zaprojektowany do identyfikacji fragmentów kodu w jądrze Linux, którego można użyć do wykorzystania Luki klasy Spectre spowodowane wykonaniem kodu spekulacyjnego przez procesor.

Ci, którzy nie są świadomi tego typu ataków, powinni o tym wiedzieć podatności klas, takie jak Spectre v1 pozwalają określić zawartość pamięci, w kodzie uprzywilejowanym wymagany jest określony skrypt (gadżety), co prowadzi do spekulatywnego wykonania instrukcji.

Aby zoptymalizować, procesor uruchamia takie urządzenia w trybie spekulacyjnymlub następnie określa, że ​​przewidywanie rozgałęzień nie zostało uzasadnione i przywraca operacje do pierwotnego stanu, ale dane przetworzone podczas wykonywania spekulacyjnego znajdują się w buforach pamięci podręcznej i mikroarchitektury i są dostępne do ekstrakcji przy użyciu różnych metod określania danych resztkowych za pomocą kanały imprezowe.

Narzędzia do skanowania gadżetów na podstawie wzorów wcześniej dostępne za podatność Spectre wykazali bardzo wysoki odsetek wyników fałszywie dodatnich, podczas gdy wiele prawdziwych gadżetów zostało utraconych (eksperymenty wykazały, że 99% gadżetów wykrytych przez takie narzędzia nie mogło zostać użytych do ataków, a 33% działających urządzeń nie było w stanie doprowadzić do ataku).

Przedstawiamy Kasper, przejściowy (lub spekulacyjny) skaner urządzeń wykonawczych. Wykorzystuje zasady analizy korupcji do modelowania napastnika zdolnego do wykorzystania dowolnych luk w oprogramowaniu/sprzętu w tymczasowej ścieżce. 

O Kacper

Aby poprawić jakość identyfikacji problematycznych urządzeń, Kasper modeluje luki, które może wykorzystać atakujący na każdym etapie ataków klasy Spectre: problemy są modelowane, aby umożliwić kontrolę danych (na przykład zastąpienie danych atakującego strukturami mikroarchitektonicznymi, aby wpłynąć na późniejsze wykonanie spekulacyjne) za pomocą ataków klasy LVI, uzyskanie dostępu do poufnych informacji (na przykład, gdy bufor jest poza zakresem lub pamięć jest używana po jej zwolnieniu) i wyciekają poufne informacje (na przykład przez analizowanie stanu pamięci podręcznej procesora lub przy użyciu metody MDS ).

Modeluj atakującego zdolnego do kontrolowania danych (np. poprzez masaż pamięci lub wstrzykiwanie wartości LVI), uzyskując dostęp do sekretów (np. poprzez dostęp poza granicami lub użycie po free ) i ujawniać te sekrety (np. poprzez oparte na pamięci podręcznej, MDS- w oparciu o kanały ukryte lub oparte na rywalizacji o porty). 

Podczas wykonywania testu, kernel kontaktuje się z bibliotekami wykonawczymi przez Kasper i sprawdź, czy działają na poziomie LLVM. Podczas weryfikacji spekulacyjne wykonanie kodu jest emulowane przez mechanizm przywracania punktów kontrolnych, który w szczególności wykonuje niepoprawnie przewidywane rozwidlenie kodu, po czym powraca do pierwotnego stanu sprzed rozpoczęcia rozwidlenia.

Kasper próbuje również modelować różne luki w oprogramowaniu i sprzęcie, analizuje wpływ efektów architektonicznych i mikroarchitektonicznych oraz przeprowadza testy rozmycia możliwych działań napastnika. Do analizy przepływów wykonania używany jest port DataFlowSanitizer dla jądra Linux, a do testów fuzzingu zmodyfikowana wersja pakietu syzkaller.

W rezultacie Kasper odkrył 1.379 wcześniej nieznanych urządzeń w mocno utwardzonym jądrze Linuksa. Potwierdziliśmy nasze ustalenia, demonstrując kompleksową lukę sprawdzającą słuszność koncepcji dla jednego ze znalezionych urządzeń.

Podczas skanowania jądra Linuksa za pomocą Kaspera zidentyfikowano 1379 wcześniej nieznanych urządzeń, które mogły doprowadzić do wycieku danych podczas spekulacyjnego wykonywania instrukcji.

Należy zauważyć, że być może tylko niektóre z nich mogą stwarzać realne problemy, ale aby pokazać, że istnieje realne zagrożenie, a nie tylko teoretyczne, opracowano działający prototyp exploita dla jednego z problematycznych fragmentów kodu, co doprowadziło do wyciek informacji o pamięci jądra.

W końcu jeśli chcesz dowiedzieć się więcej na ten temat o Kasperze, powinieneś o tym wiedzieć kod źródłowy Jest rozpowszechniany na licencji Apache 2.0.

źródło: https://www.vusec.net


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.