Tryb zarządzania systemem
Część serii o trybach |
mikroprocesorowych dla architektury x86 |
---|
|
Pierwsza obsługiwana platforma pokazana w nawiasach |
Tryb zarządzania systemem ( SMM , czasami nazywany pierścieniem −2 w odniesieniu do pierścieni ochronnych ) to tryb działania centralnych jednostek procesorowych (CPU) x86 , w którym wszystkie normalne działania, w tym system operacyjny , są zawieszone. Alternatywny system oprogramowania, który zwykle znajduje się w oprogramowaniu sprzętowym komputera lub debugger wspomagany sprzętowo , jest następnie uruchamiany z wysokimi uprawnieniami.
Po raz pierwszy został wydany z Intel 386SL . Chociaż początkowo dla SMM wymagane były specjalne wersje SL, Intel włączył SMM do swoich głównych procesorów 486 i Pentium w 1993 r. AMD wdrożyło SMM Intela z procesorami Am386 w 1991 r. Jest on dostępny we wszystkich późniejszych mikroprocesorach w architekturze x86 . [ potrzebne źródło ]
Niektóre procesory ARM zawierają również tryb zarządzania dla oprogramowania układowego systemu (takiego jak UEFI ).
Operacja
SMM to specjalny tryb operacyjny przeznaczony do obsługi funkcji ogólnosystemowych, takich jak zarządzanie energią, kontrola sprzętu systemowego lub zastrzeżony kod zaprojektowany przez producenta OEM. Jest przeznaczony do użytku wyłącznie przez oprogramowanie układowe systemu ( BIOS lub UEFI ), a nie przez oprogramowanie użytkowe 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 programowych. [ potrzebne źródło ]
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 CPU przez firmware .
Tryb zarządzania systemem może obsłużyć do 4 GB pamięci jako ogromny tryb rzeczywisty . W x86-64 SMM może adresować >4 GB pamięci w trybie adresu rzeczywistego.
Stosowanie
Początkowo tryb zarządzania systemem był używany do wdrażania funkcji zarządzania energią i sterowania sprzętem, takich jak zaawansowane zarządzanie energią (APM). Jednak producenci BIOS-ów 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:
- Obsługuj zdarzenia systemowe, takie jak błędy pamięci lub chipsetu
- Zarządzaj funkcjami bezpieczeństwa systemu, takimi jak wyłączanie w przypadku wysokiej temperatury procesora
- BIOS zarządzania systemem (SMBIOS)
- Zaawansowany interfejs konfiguracji i zasilania
- Kontroluj operacje zarządzania energią , takie jak zarządzanie modułem regulatora napięcia i LPCIO ( super I/O lub wbudowany kontroler )
- Emuluj mysz/klawiaturę USB jako mysz/klawiaturę PS/2 (często określane jako obsługa starszego typu USB )
- Scentralizuj konfigurację systemu, na przykład na komputerach przenośnych Toshiba i IBM/Lenovo
- Zarządzanie modułem zaufanej platformy (TPM)
- Specyficzne dla systemu BIOS programy sterujące sprzętem, w tym USB hotswap i Thunderbolt hotswap w czasie pracy systemu operacyjnego
rootkitów o wysokich uprawnieniach , jak pokazano na Black Hat 2008 i 2015.
Wejście do SM
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. Sygnał ten może być zdarzeniem niezależnym.
- Oprogramowanie SMI wyzwalane przez oprogramowanie systemowe poprzez dostęp I/O do lokalizacji uważanej za specjalną przez logikę płyty głównej (port 0B2h jest wspólny).
- Zapis we/wy do lokalizacji, w której oprogramowanie układowe zażądało działania układu procesora.
Wchodząc w SMM, procesor szuka pierwszej instrukcji pod adresem SMBASE (zawartość rejestru SMBASE) + 8000h (domyślnie 38000h), wykorzystując rejestry CS=3000h i EIP=8000h. Wartość rejestru CS (3000h) wynika z wykorzystania adresów pamięci trybu rzeczywistego przez procesor w trybie SMM. W tym przypadku CS jest wewnętrznie dołączany z 0h na swoim skrajnym prawym końcu.
Problemy
Z założenia system operacyjny nie może zastąpić ani wyłączyć interfejsu SMI. Z tego powodu jest celem dla złośliwych rootkitów, w tym „implantów” NSA , które mają indywidualne nazwy kodowe dla określonego sprzętu, na przykład SOUFFLETROUGH dla zapór 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 niedostatecznie przetestowany kod SMM BIOS może przyjąć błędne założenia i nie działać poprawnie podczas przerywania niektórych innych trybów operacyjnych x86, takich jak PAE lub 64-bitowy tryb długi . Zgodnie z dokumentacją jądra Linuksa około 2004 roku takie wadliwe implementacje funkcji obsługi starszego typu USB były częstą przyczyną awarii, na przykład na płytach głównych opartych na chipsecie Intel E7505 .
Ponieważ kod SMM (moduł obsługi SMI) jest instalowany przez oprogramowanie systemowe ( BIOS ), system operacyjny i kod SMM mogą mieć oczekiwania dotyczące niekompatybilnych ustawień sprzętowych, takie jak różne pomysły dotyczące tego, jak powinien wyglądać zaawansowany programowalny kontroler przerwań (APIC). organizować coś.
Operacje w SMM odciągają czas procesora od aplikacji, jądra systemu operacyjnego i hiperwizora , przy czym efekty są jeszcze większe w przypadku procesorów wielordzeniowych, ponieważ każdy SMI powoduje przełączanie trybów przez wszystkie rdzenie. Włączanie i wyłączanie SMM wiąże się również z pewnym obciążeniem, ponieważ stan procesora musi być przechowywany w pamięci (SMRAM), a wszelkie pamięci podręczne zapisu zwrotnego muszą zostać opróżnione. Może to zniszczyć zachowanie w czasie rzeczywistym i spowodować zagubienie tykania zegara . Jądra systemów Windows i Linux definiują ustawienie „Limit czasu SMI” — okres, w którym moduły obsługi SMM muszą przywrócić kontrolę do systemu operacyjnego, w przeciwnym razie „zawiesi się ” "lub" awaria ".
SMM może zakłócać działanie aplikacji czasu rzeczywistego z ograniczonymi wymaganiami czasowymi.
analizator stanów logicznych w celu ustalenia, czy procesor wszedł w tryb SMM (sprawdzenie stanu pinu SMIACT# procesora). Odzyskanie kodu obsługi SMI w celu przeanalizowania go pod kątem błędów, luk i tajemnic wymaga analizatora logicznego lub demontażu oprogramowania systemowego.
Zobacz też
- Coreboot – zawiera implementację modułu obsługi SMM/SMI typu open source dla niektórych chipsetów
- Intel 80486SL
- ŁADUJ WSZYSTKO
- MediaGX – procesor emulujący nieistniejący sprzęt poprzez SMM
- Pierścień −3
- Ujednolicony rozszerzalny interfejs oprogramowania sprzętowego (UEFI)
- Podstawowy system wejścia/wyjścia (BIOS)
Dalsza lektura
- patent US 5175853 , James Kardach; Gregory Mathews & Cau Nguyen i in., „Przejrzyste przerwanie systemowe”, opublikowane 29.12.1992, wydane 29.12.1992, przypisane do Intel Corporation
- AMD Hammer BIOS and Kernel Developer's Guide , rozdział 6 (zarchiwizowane z oryginału w dniu 7 grudnia 2008 r.)
- Podręcznik programisty architektury Intel 64 i IA-32, tom 3C , rozdział 34