NFsec Logo

Intel Memory Protection Extensions w 3.19

22/11/2015 w Bezpieczeństwo Brak komentarzy.  (artykuł nr 491, ilość słów: 253)

I

ntel w nowej mikroarchitekturze Skylake, która w sierpniu 2015 zastąpiła mikroarchitekturę Broadwell wprowadził rozszerzenie MPX – Memory Protection Extensions. MPX to rozszerzenie sprzętowe mające zapobiegać atakom przepełnienia bufora.

Działanie MPX polega na sprawdzaniu, czy adresy wskaźników do pamięci mieszczą się w określonych z góry granicach. Granice te są wyznaczane programowo podczas kompilacji przez kompilator (flaga -fmpx), na podstawie algorytmów zdefiniowanych w bibliotece podstawowych procedur języka (w tej chwili MPX jest dostępny tylko w C i C++). Podczas działania programu każdy nowy wskaźnik jest sprawdzany w tablicy granic, przechowywanej przez procesor w kilku specjalnych rejestrach. Jeśli jakiś kod spróbuje uzyskać dostęp do pamięci poza dozwolonym obszarem, procesor wygeneruje błąd dostępu do pamięci.

Wykorzystanie MPX wymaga co najmniej skompilowania narzędzia od nowa. Oprócz zwiększenia bezpieczeństwa MPX może teoretycznie ułatwić programowanie, bo programista ma mniej do debugowania – część rzeczy sprawdzą za niego kompilator i sam procesor. Ale kod skompilowany z MPX jest kompatybilny wstecz z procesorami bez obsługi MPX, a dla nich i tak trzeba programować i debugować starannie.

Oczywiście, testowanie każdego wskaźnika wiąże się z pewną utratą wydajności. Intel nie podaje, jak dużą, ale sugeruje użycie MPX tylko w ważnych dla bezpieczeństwa częściach kodu albo wbudowanie i domyślne wyłączenie MPX. Wtedy można włączyć MPX w przypadku odkrycia luki bezpieczeństwa, dopóki luka nie zostanie załatana aktualizacją oprogramowania.

Wsparcie dla MPX zostało dodane od wersji jądra 3.19.

Więcej informacji: Support for Skylake, Introduction to MPX, Architektura Skylake.

Kategorie K a t e g o r i e : Bezpieczeństwo

Tagi T a g i : , , , , ,

Komentowanie tego wpisu jest zablokowane.