Modul de gestionare a sistemului
Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de
versiunea revizuită la 27 mai 2016; verificările necesită
10 modificări .
Modul de gestionare a sistemului (SMM ) - modul de execuție pe procesoarele x86 / x86-64 , în care execuția altui cod (inclusiv sistemele de operare și hypervisor ) este suspendată și este lansat un program special stocat în SM RAM în modul cel mai privilegiat.
Tehnologia SMM a fost implementată pentru prima dată în microprocesorul Intel 386 SL. Inițial, SMM rula doar pe procesoare speciale (SL), dar a fost introdus în 1992 în 80486 și Intel Pentium . AMD a implementat tehnologia în Enhanced Am486 ( 1994 ). Toate procesoarele x86/x86-64 mai recente îl acceptă.
Printre posibilele aplicații ale SMM:
Sistemul de operare rulează într-un „ Ring 0” de protecție; totuși, hypervisorul (în sistemele VT/AMD-v) este mai privilegiat, iar modul de execuție al hipervizorului este denumit în mod convențional „Ring −1”. În consecință, SMM, care este o prioritate mai mare decât hipervizorul, este numit condiționat „Ring −2” [5] [6] [7] . Codul care rulează în modul SMM are acces nerestricționat la toată memoria sistemului, inclusiv la memoria kernelului și la memoria hypervisorului.
Activare SMM
SMM este activat folosind întreruperi SMI ( sistem management întrerupere ), care apare:
- Pe un semnal de la chipset sau periferice de pe placa de bază. Este utilizat pinul de procesor dedicat SMI# [8] .
- Software SMI trimis de software-ul de sistem printr-un port I/O (numărul portului B2 [9] este adesea folosit ) [10] .
- Scrieți la o adresă I/O care este setată de firmware pentru a necesita activarea SMM.
La cea mai apropiată limită de instrucțiune după primirea semnalului SMI#, procesorul își stochează starea în memorie și trece la SMM. Instrucțiunea RSM (0F AA [9] ) [8] este utilizată pentru a ieși din SMM și a restabili starea procesorului .
Probleme
- Conform arhitecturii SMM, întreruperile SMI nu pot fi dezactivate de sistemul de operare.
- Pe chipset-urile mai vechi (înainte de 2006), bitul D_LOCK nu a fost setat pentru a proteja memoria SMM (ceea ce a permis crearea de malware SMM) [5]
- Deoarece handlerele SMM (handler SMI) sunt instalate din firmware-ul BIOS de bază [5] , este posibil ca setările așteptate ale perifericelor importante (de exemplu, APIC ) din sistemul de operare și programele SMM să nu se potrivească
- Lucrul în modul SMM suspendă sistemul de operare. Starea procesorului este stocată în SMRAM [8] și cache-urile de scriere înapoi trebuie să fie golite. Din acest motiv, cerințele timpului real pot fi încălcate. Sistemul de operare Windows și nucleul Linux au stabilit „SMI Timeout” - o perioadă de timp în care orice program SMM trebuie să returneze controlul sistemului de operare.
- Poate fi necesar un analizor logic digital (echipament suplimentar de depanare) pentru a determina intrarea procesorului la SMM. Când lucrați în SMM, semnalul procesorului SMIACT# [8] este setat .
- Preluarea codurilor de program SMM pentru analiză și depanare necesită, de asemenea, un analizor logic sau inginerie inversă a firmware-ului BIOS , deoarece memoria TSEG care stochează programele SMM nu este disponibilă pentru sistemul de operare în timpul execuției.
Vezi și
Note
- ↑ Loic Dufleot. „Probleme de securitate legate de modul de gestionare a sistemului Pentium”. Prezentat la CanSecWest 2006, Vancouver, Canada, 2006.
- ↑ Hackerii găsesc un nou loc pentru a ascunde rootkit-urile . Preluat la 2 mai 2011. Arhivat din original la 8 iunie 2011. (nedefinit)
- ↑ Sherri Sparks și Shawn Embleton. SMM Rootkits: O nouă generație de programe malware independente de SO. Prezentat la Black Hat USA, Las Vegas, NV, SUA, 2008.
- ↑ https://www.youtube.com/watch?v=X72LgcMpM9k&feature=player_detailpage#t=2070s Arhivat 25 iunie 2016 la Wayback Machine Google Tech Talks - Coreboot - 00:34:30
- ↑ 1 2 3 invisiblethingslab.com/resources/misc09/smm_cache_fun.pdf Rafal Wojtczuk, Joanna Rutkowska , „Atacarea memoriei SMM prin otrăvirea Intel® CPU Cache Poisoning”
- ↑ Inelul −1 vs. Ring −2: Containerizing Malicious SMM Interrupt Handlers pe AMD-V Arhivat 13 noiembrie 2013 la Wayback Machine , 2010
- ↑ Analiza aprofundată a modului de gestionare a sistemului x86 Arhivat 23 septembrie 2013. , Georg Wassen: „Dacă monitoare de mașini virtuale pot fi numite Ring −1, modul de gestionare a sistemului este Ring −2.”
- ↑ 1 2 3 4 Intel's System Management Mode de Robert R. Collins
- ↑ 1 2 Cod hexadecimal
- ↑ aprox. 5
Literatură
Link -uri