Tryb zarządzania systemem — System Management Mode

Tryb zarządzania systemem ( SMM , czasami nazywany ring-2 w odniesieniu do pierścieni ochronnych ) to tryb działania jednostek centralnych (CPU) x86, w którym wszystkie normalne wykonywanie, w tym system operacyjny , jest zawieszone. Alternatywny system oprogramowania, który zwykle znajduje się w oprogramowaniu układowym komputera , lub wspomagany sprzętowo debugger , jest następnie uruchamiany z wysokimi uprawnieniami.

Po raz pierwszy został wydany z Intel 386SL . Podczas gdy początkowo specjalne wersje SL były wymagane dla SMM, Intel zastosował SMM w swoich głównych procesorach 486 i Pentium w 1993 roku. AMD wdrożył SMM Intela z procesorami Am386 w 1991 roku. Jest on dostępny we wszystkich późniejszych mikroprocesorach w architekturze x86 .

Niektóre procesory ARM zawierają również tryb zarządzania dla oprogramowania układowego systemu (np. UEFI ).

Operacja

SMM to specjalny tryb operacyjny przeznaczony do obsługi funkcji systemowych, takich jak zarządzanie energią, sterowanie sprzętem systemowym lub zastrzeżony kod zaprojektowany przez producenta OEM. Jest przeznaczony do użytku tylko przez oprogramowanie układowe systemu ( BIOS lub UEFI ), a nie przez oprogramowanie aplikacji lub oprogramowanie systemowe ogólnego przeznaczenia. Główną zaletą SMM jest to, że oferuje odrębne i łatwo izolowane środowisko procesora, które działa w sposób przezroczysty dla systemu operacyjnego lub aplikacji wykonawczych i oprogramowania.

Aby osiągnąć przejrzystość, SMM narzuca pewne zasady. SMM można wprowadzić tylko przez SMI (przerwanie zarządzania systemem). Procesor wykonuje kod SMM w oddzielnej przestrzeni adresowej (SMRAM), która musi być niedostępna dla innych trybów pracy procesora przez oprogramowanie układowe .

Tryb zarządzania systemem może adresować do 4 GB pamięci jako ogromny tryb rzeczywisty . W procesorach x86-64 SMM może adresować >4GB pamięci jako tryb adresu rzeczywistego.

Stosowanie

Początkowo tryb zarządzania systemem był używany do wdrażania funkcji zarządzania energią i kontroli sprzętu, takich jak zaawansowane zarządzanie energią (APM). Jednak producenci systemu BIOS i producenci OEM polegali na SMM w przypadku nowszych funkcji, takich jak zaawansowana konfiguracja i interfejs zasilania (ACPI).

Niektóre zastosowania trybu zarządzania systemem to:

Tryb zarządzania systemem może również zostać wykorzystany do uruchamiania wysoce uprzywilejowanych rootkitów , jak pokazano w Black Hat 2008 i 2015.

Wejście do SMM

SMM jest wprowadzany przez SMI (przerwanie zarządzania systemem), które jest wywoływane przez:

  • Sygnalizacja sprzętu płyty głównej lub chipsetu za pośrednictwem wyznaczonego pinu SMI # układu procesora. Ten sygnał może być zdarzeniem niezależnym.
  • Oprogramowanie SMI wyzwalane przez oprogramowanie systemowe poprzez dostęp we/wy do lokalizacji uznanej za specjalną przez logikę płyty głównej (port 0B2h jest powszechny).
  • Zapis we/wy w lokalizacji, w której oprogramowanie układowe zażądało działania układu procesora.

Wpisując SMM, procesor szuka pierwszej instrukcji pod adresem SMBASE (zawartość rejestru SMBASE) + 8000H (domyślnie 38000H), używając rejestrów CS=3000H i EIP=8000H. Wartość rejestru CS (3000H) wynika z użycia adresów pamięci trybu rzeczywistego przez procesor w SMM. W tym przypadku CS jest wewnętrznie dodany z 0H na jego skrajnym prawym końcu.

Problemy

Z założenia system operacyjny nie może zastępować ani wyłączać interfejsu SMI. Z tego powodu jest celem złośliwych rootkitów, w tym „implantów” NSA, które mają indywidualne nazwy kodowe dla określonego sprzętu, takich jak SOUFFLETROUGH dla zapór sieciowych Juniper Networks , SCHOOLMONTANA dla routerów serii J tej samej firmy, DEITYBOUNCE dla DELL lub IRONCHEF dla serwerów HP Proliant .

Niewłaściwie zaprojektowany i niewystarczająco przetestowany kod BIOS-u SMM może przyjmować błędne założenia i nie działać poprawnie podczas przerywania niektórych innych trybów pracy x86, takich jak PAE lub 64-bitowy tryb długi . Według dokumentacji jądra Linuksa około 2004 r. takie błędne implementacje funkcji obsługi starszych urządzeń USB były częstą przyczyną awarii, na przykład na płytach głównych opartych na chipsecie Intel E7505 .

Ponieważ kod SMM (obsługa SMI) jest instalowany przez oprogramowanie układowe systemu ( BIOS ), system operacyjny i kod SMM mogą mieć oczekiwania dotyczące niekompatybilnych ustawień sprzętowych, na przykład różne pomysły dotyczące tego, jak powinien być zaawansowany programowalny kontroler przerwań (APIC) Ustawiać.

Operacje w SMM zabierają czas procesora aplikacjom, jądru systemu operacyjnego i hipernadzorcy , a efekty są zwiększone w przypadku procesorów wielordzeniowych, ponieważ każdy SMI powoduje, że wszystkie rdzenie przełączają tryby. Istnieje również pewien narzut związany z włączaniem i wyłączaniem SMM, ponieważ stan procesora musi być przechowywany w pamięci (SMRAM), a wszelkie pamięci podręczne z zapisem zwrotnym muszą zostać opróżnione. Może to zniszczyć zachowanie w czasie rzeczywistym i spowodować utratę tykania zegara . Jądra systemów Windows i Linux definiują „Limit czasu SMI” określający okres, w którym programy obsługi SMM muszą zwrócić kontrolę do systemu operacyjnego, w przeciwnym razie „ zawieszą się ” lub „ zawieszą się ”.

Moduł SMM może zakłócać zachowanie aplikacji czasu rzeczywistego o ograniczonych wymaganiach czasowych.

Analizator stanów logicznych mogą być wymagane w celu określenia, czy CPU weszła SMM (sprawdzanie stanu SMIACT # pin CPU). Odzyskanie kodu programu obsługi SMI w celu przeanalizowania go pod kątem błędów, luk w zabezpieczeniach i sekretów wymaga analizatora logicznego lub demontażu oprogramowania układowego systemu.

Zobacz też

Bibliografia

Dalsza lektura