Luka w eBPF umożliwia obejście ochrony przed atakami Spectre

Wczoraj opublikowaliśmy tutaj na blogu aktualności Aya, biblioteka do tworzenia sterowników eBPF w Rust i ma to na celu stworzenie bezpieczniejszych sterowników lub Projekt Prossimo w celu zapewnienia pamięci Jądro Linuksa z Rustem (dwa świetne projekty, o których będzie wiele do powiedzenia w nadchodzących miesiącach).

I w krótkim czasie zgłoszono różne luki w zabezpieczeniach w którym wykorzystaj błędy w eBPF i że jest to problem, w którym programiści jądra nie przestali pracować i być może Rust jest rozwiązaniem.

Powodem poruszenia tego tematu jest to, że niedawno pojawiła się wiadomość, że zidentyfikowali "Inna" podatność w jądrze Linux (CVE-2021-33624) dla obejście ochrony przed podatnościami klasy Spectre, gdyż pozwala to na wykorzystanie podsystemu eBPF do określenia zawartości pamięci w wyniku stworzenia warunków do spekulacji wykonania pewnych operacji.

Wspomina się, że luka jest to spowodowane awariami weryfikatora, który służy do wykrywania błędów i nieprawidłowej aktywności w programach BPF. Weryfikator wyświetla listę możliwych ścieżek wykonania kodu, ale ignoruje wszelkie opcje rozgałęzień, które nie są poprawne z punktu widzenia semantyki architektury zestawu instrukcji.

Podczas uruchamiania programu BPF opcje rozgałęzień, które nie zostały uwzględnione przez weryfikatora, mogą być błędnie przewidziane przez procesor i wykonywane w trybie spekulacyjnym.

W systemach, których dotyczy luka, nieuprzywilejowany program BPF może wykorzystać tę lukę do filtrowania zawartości pamięci dowolnego jądra (a tym samym całej pamięci fizycznej) przez kanał boczny.

Np. analizując operację „load” weryfikator zakłada, że ​​instrukcja korzysta z rejestru z adresem, którego wartość zawsze mieści się w określonych granicach, ale atakujący może stworzyć warunki pod którym procesor spekulacyjnie spróbuje przeprowadzić transakcję z adresem, który nie spełnia warunków weryfikacji.

Atak Widma wymaga obecności określonego skryptu w kodzie uprzywilejowanym, co prowadzi do spekulacyjnego wykonania instrukcji. Manipulując programami BPF, które są przekazywane do wykonania, możliwe jest generowanie takich instrukcji w eBPF oraz filtrowanie zawartości pamięci jądra i dowolnych obszarów pamięci fizycznej przez kanały boczne.

Ponadto, możesz zaznaczyć notatkę o wpływie na wydajność aktywów w celu ochrony przed lukami klasy Spectre.

Ta notatka podsumowuje wyniki Optymalizacja debuggera rr (Record and Replay), kiedyś stworzona przez Mozillę w celu debugowania trudnych do powtórzenia błędów w Firefoksie. Buforowanie wywołań systemowych służących do weryfikacji istnienia katalogów skróciło operację „źródeł rr” dla projektu testowego z 3 minut 19 sekund do 36 sekund.

Autor optymalizacji postanowił sprawdzić jak bardzo się zmieni? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? wydajność po wyłączeniu ochrony przed widmami. Po uruchomieniu systemu z parametrem „mitigations=off” czas wykonania „źródeł rr” bez optymalizacji wyniósł 2 minuty 5 sekund (1.6 razy szybciej) a z optymalizacją 33 sekundy (9% szybciej).

Ciekawie, wyłączenie ochrony Spectre nie tylko skrócił czas pracy run kodu na poziomie jądra 1.4 razy (od 2 min 9s do 1 min 32s), skróciło to również o połowę czas wykonania w przestrzeni użytkownika (od 1 min 9s do 33s), prawdopodobnie ze względu na spadek wydajności pamięci podręcznej procesora i TLB są resetowane po włączeniu ochrony Spectre.

Problem pojawił się od wydania jądra 4.15 i zostało naprawione w postaci łatek, które w tej chwili nadal nie docierają do wszystkich dystrybucji, dlatego zaleca się użytkownikom, aby w dzisiejszych czasach dokonywali odpowiednich aktualizacji, gdy tylko otrzymają powiadomienia.

Si chcesz wiedzieć więcej na ten tematmożesz sprawdzić szczegóły W poniższym linku.


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.