Linux kernel 4.16 wydany z łatą na pierwszy wariant ataku Spectre

Zeno

Bardzo aktywny
Fąfel
Dołączył
25 Grudnia 2012
Posty
3447
Reakcje/Polubienia
1583
Linux 4.16 to niemal 15 tys. commitów, ponad 12 tys. zmienionych plików, ponad 25 MB kodu źródłowego. W tych wszystkich zmianach najważniejsze są dłuższy czas pracy urządzeń zasilanych bateryjnie, łatka na pierwszy wariant ataku Spectre, lepsza praca linuksowych gości w VirtualBoksie, możliwość indywidualnego szyfrowania maszyn wirtualnych pod hiperwizorem KVM na procesorach AMD, oraz zwiększenie bezpieczeństwa kernela poprzez domyślne włączenie opcjonalnych dotychczas zabezpieczeń.(...)
Dłuższa praca z notebookiem
Nowa opcja konfiguracji kernela pozwala wreszcie na ustalanie polityk LPM (ATA Link Power Management). Pozwala to na czipsetach Intela kontrolować oszczędzanie energii przez dyski, zapewniając zmniejszenie jej zużycia o 1-1,5 W na jałowym biegu. Pozwala to wydłużyć pracę przeciętnego notebooka o nawet godzinę.
Spectre mniej straszne
Nowy kernel skuteczniej i bez takich strat w wydajności chroni przez pierwszym wariantem ataku Spectre (Bounds Check Bypass). Znaleziono potencjalnie podatne na Spectre fragmenty kodu i przepisano je tak, aby uniemożliwić spekulatywne wykonywanie, poprzez wywoływanie specjalnie do tego celu stworzonych makr. Teraz odczytanie zawartości pliku sys/devices/system/cpu/vulnerabilities/spectre_v1 zwraca ciąg __user pointer sanitization.
Prawdopodobnie na tych łatkach się nie skończy, poszukiwane są kolejne miejsca kernela mogące zostać zaatakowane przez Spectre, powstać ma opensource’owe narzędzie do automatycznego wskazywania takich lokalizacji.
Jeśli chodzi o drugą wersję ataku Spectre (Branch Target Injection), to wciąż korzysta się z techniki Return Trampoline (retpoline), która choć sprawdzała się w większości scenariuszy, zawodziła w przypadku wirtualizacji. W kernelu 4.16 retpoline zostało nieco ulepszone, wykorzystywane są też niektóre funkcje IBC (Indirect Branch Control), wprowadzone po ostatnich aktualizacjach mikrokodu procesorów Intela i AMD.
IBC zostało w całości przyjęte przez Windowsa, mimo jego poważnego wpływu na wydajność systemu, tymczasem większość linuksowych dystrybucji wolała trzymać się mniej kosztownej retpoline, mimo tego, że nie zapewniała ona bezpiecznej wirtualizacji i była niewystarczająca dla procesorów Skylake i późniejszych generacji. Teraz dzięki selektywnemu wybraniu niektórych mechanizmów IBC (dostępnych nawet bez wgrania mikrokodu) Linux eliminuje znane słabości repotline i pozwala bezpiecznie zwirtualizować Windowsa. Dodatkowo za pomocą jednego z mechanizmów z IBC chroni teraz też przed wymuszeniem zrzutu obrazu pamięci w razie awarii programu – w zrzutach takich może się pojawić wiele wrażliwych danych.
Nie oznacza to, że Spectre przestało być problemem – przykładowo Red Hat nie jest w ogóle przekonany do retpoline i od początku w RHEL-u stosuje wyłącznie zabezpieczenie IBC. Wciąż też pozostaje sporo do zrobienia w zakresie optymalizacji łatek nie tylko przeciw Spectre (szczególnie na innych niż x86-64 architekturach) ale też przeciwko Meltdown. Pozostają też problemy z 32-bitowymi systemami uruchamianymi na 64-bitowych procesorach, gdzie wydajność spadła najbardziej, a zabezpieczenia przed Meltdown wciąż nie wprowadzono. Niestety minie jeszcze sporo czasu, zanim deweloperzy będą mogli przestać się przejmować 32-bitową architekturą x86.
Domyślnie bezpieczniej
Oprócz zabezpieczeń przed Meltdown i Spectre, zadbano też o inne sprawy w tej dziedzinie. Wprowadzono od dawna rekomendowaną blokadę dostępu do pamięci fizycznej przez urządzenie /dev/mem.
Automatycznie jest także aktywowana ochrona stosu (Stack Protector), przynajmniej dla architektur i kompilatorów które to wspierają. Poczyniono także zmiany mające na celu zabezpieczenie wymiany danych między kernelem a przestrzenią użytkownika. (...)
więcej:
Zaloguj lub Zarejestruj się aby zobaczyć!
 
Do góry