Inelele de protecție sunt o arhitectură de securitate a informațiilor și de toleranță la erori funcționale care implementează o separare hardware a nivelurilor de privilegii ale sistemului și ale utilizatorului. Structura privilegiilor poate fi descrisă ca mai multe cercuri concentrice. În acest caz, modul sistem (modul supervizor sau inelul zero, așa-numitul „ring 0”), care oferă acces maxim la resurse, este cercul interior, în timp ce modul de utilizator restricționat este cel exterior. În mod tradițional, familia de microprocesoare x86 oferă patru inele de protecție.
Arhitectura inelelor de protecție este de obicei opusă sistemelor bazate pe adresare obligatorie, care oferă acces la un obiect conform descrierii acestuia ( securitate bazată pe capacități ).
Suportul pentru mai multe inele de protecție a fost unul dintre conceptele revoluționare incluse în sistemul de operare Multics , precursorul sistemelor de operare asemănătoare UNIX de astăzi. Cu toate acestea, majoritatea sistemelor UNIX folosesc doar 2 inele, chiar dacă hardware-ul acceptă mai multe moduri CPU .
Multe arhitecturi moderne ale CPU (inclusiv arhitectura populară x86 ) includ o anumită formă de protecție. Dar, în ciuda acestui fapt, sistemul de operare Windows NT , precum și UNIX , nu utilizează pe deplin aceste caracteristici. Predecesorul Windows NT, OS/2 , a folosit trei inele: inelul 0 pentru codul kernelului și driverele de dispozitiv, inelul 2 pentru codul privilegiat (programe cu acces I/O) și inelul 3 pentru codul neprivilegiat (aproape toate programele utilizator).
Sistemul original Multics avea opt inele de protecție, dar multe sisteme moderne tind să aibă mai puține. Procesorul știe întotdeauna în ce inel se execută codul, datorită registrelor speciale ale mașinii. Pe unele sisteme, zonele memoriei virtuale sunt, de asemenea, asociate cu numere de inel, iar inelului mai privilegiat i se acordă drepturi speciale (cum ar fi adresarea memoriei reale, ocolirea mecanismului de memorie virtuală).
Mecanismul de inel restricționează sever căile prin care controlul poate fi transferat de la un inel la altul și, de asemenea, impune restricții asupra operațiunilor de acces la memorie care pot fi efectuate în cadrul inelului. Există de obicei anumite instrucțiuni (gateway) care transferă controlul de la un inel mai puțin sigur la unul mai sigur (cu număr mai mic); aceasta este cunoscută ca cerere de supervizor în multe sisteme de operare care utilizează o arhitectură inel. Acest mecanism este conceput pentru a limita posibilitatea unor breșe de securitate accidentale sau intenționate.
Protecția inelului poate fi combinată cu moduri procesor (modul master/kernel/privilegiat versus modul slave/utilizator/neprivilegiat) pe unele sisteme. Sistemele de operare care rulează pe hardware care acceptă aceste moduri pot utiliza ambele metode de protecție sau numai una dintre ele.
Utilizarea eficientă a arhitecturii inelului de protecție necesită o interacțiune strânsă între hardware și sistemul de operare. Sistemele de operare care sunt proiectate să ruleze pe un număr mare de platforme pot avea o implementare diferită a mecanismului inel pe fiecare platformă. Adesea, modelul de securitate este simplificat la două niveluri de acces: nivelul „kernel” și nivelul „utilizator”, chiar dacă hardware-ul oferă niveluri de execuție mai granulare.
Termenul de mod supervizor ( mod supervizor ) dezvoltatorii și producătorii de procesoare, de regulă, se referă la modul de funcționare cel mai privilegiat al procesorului. Cel mai adesea, acest mod este folosit pentru a executa codul nucleului sistemului de operare. De obicei, acest mod corespunde ca funcționalitate celui de-al 0-lea inel de protecție (Ring 0) în procesoarele x86, adică oferă acces nelimitat la toate capabilitățile procesorului, lucrând cu periferice și așa mai departe. Codul care funcționează în acest mod, de regulă, gestionează resursele hardware disponibile, împărțind utilizarea acestora între sarcini (procese) separate și așa mai departe, ceea ce a condus la acest nume de mod.
Unii dezvoltatori și producători de procesoare, cum ar fi ARM, nu folosesc clasificarea modurilor de operare a procesorului sub formă de inele de protecție. Cu toate acestea, majoritatea procesoarelor moderne (cu excepția celor mai simple) au de obicei mai multe moduri de funcționare care diferă unele de altele prin privilegiile disponibile în acest mod.
Unele procesoare moderne pot oferi un mod suplimentar de operare cunoscut sub numele de modul Hypervisor . De regulă, acest mod este implementat pentru a sprijini tehnologiile de virtualizare la nivel hardware. Acest lucru face posibilă realizarea nu numai a executării simultane a mai multor sarcini, ci și a executării simultane a mai multor sisteme de operare pe un singur procesor fără pierderi semnificative de performanță și fără schimbarea sistemelor de operare în sine. De regulă, atunci când utilizați acest mod, este posibil accesul complet la toate resursele din modul hypervisor. Într-un astfel de caz, modul supervizor nu mai este cel mai privilegiat și restricționează multe operațiuni privilegiate. Când sistemele de operare efectuează operațiuni privilegiate în modul supervizor, controlul este transferat către un program special - hypervisor . Hypervisorul arbitrează utilizarea resurselor hardware disponibile de către mai multe sisteme de operare în același mod în care sistemele de operare înșiși arbitrează resursele între mai multe sarcini. În esență, un hypervisor este de obicei un nucleu mic care gestionează alocarea resurselor pe mai multe sisteme de operare și rulează la un strat sub sistemele de operare în sine. Din această cauză, în terminologia x86, acest mod este adesea numit în mod condiționat inel −1 (Ring −1).
Modul de gestionare a sistemului este cel mai privilegiat mod de execuție pe procesoarele cu arhitectură x86 / x86-64 [1] (a apărut pentru prima dată în 386SL ). Modul SMM (numit condiționat „Ring -2”) este mai privilegiat decât „Ring 0” și hipervizorul hardware ( VT/AMD-v ) „Ring -1”. Acest mod suspendă executarea normală a codului și începe executarea codului special din RAM de sistem (SMRAM) care nu este disponibil în alte moduri. Acest cod accesează toată memoria de sistem, inclusiv memoria kernelului și a hypervisorului.
Joanna Rutkowska a publicat informații despre vulnerabilitatea Blue Pill , care permite executarea de cod arbitrar în modul SMM.
Modul SMM a fost implementat pentru prima dată în MP-urile 80386SL și i486SL. Începând cu Intel-486, acest mod a devenit un element obligatoriu al arhitecturii IA-32. Modul SMM este conceput pentru a efectua unele acțiuni cu posibilitatea de izolare completă a acestora de sistemul de operare. Procesorul intră în acest mod numai prin hardware pe semnalul SMI#. Nu există nicio modalitate software de a comuta la acest mod. Când are loc o întrerupere SMI, codul SMI al handlerului este executat într-un spațiu de adrese separat (SMRAM). Pe durata trecerii la modul SMI, contextul procesului întrerupt este păstrat. În timpul execuției handler-ului SMM, toate întreruperile sunt dezactivate. Codul de gestionare SMI poate rula numai în SMRAM.
În 2006, Loïc Duflot a introdus un atac foarte curios împotriva mecanismului straturilor de securitate OpenBSD care folosea modul SMM. La acel moment, modul SMM nu era protejat și era posibil să se scrie cod arbitrar în SMRAM. Dar atunci producătorii de sisteme au început să apere regimul SMM. Pentru a stoca codul executabil în SMM, a fost alocată o zonă de memorie specială, numită SMRAM, care a primit protecție specială de la chipset (Memory Controller Hub, mai exact). Pe majoritatea sistemelor moderne, este deja destul de netrivial să executați cod cu privilegii SMM. Pentru a face acest lucru, trebuie să găsiți o „gaură” în chipset sau BIOS (chiar dacă avem acces la nivel de kernel). De fapt, la Black Hat 2008 din Las Vegas, Sherri Sparks și Shawn Embleton au făcut o prezentare despre rootkit-urile SMM , dar au precizat că rootkit-urile lor pot fi încărcate numai pe sisteme mai vechi (înainte de 2006). De asemenea, la conferință a fost discutată și o „gaură” în BIOS-ul Intel care permitea executarea unui cod arbitrar în modul SMM. Apoi au fost descoperite încă două moduri de a intra în modul SMM pe diferite sisteme. Un alt atac, descoperit la sfârșitul anului 2008, a funcționat pe un număr mare de sisteme Intel (și posibil mașini cu BIOS-uri mai vechi).
Rootkiturile SMM (sau rootkit-urile ring-2) necesită acces la memoria SMM extrem de sigură, iar pe majoritatea sistemelor moderne un atacator va trebui să exploateze „găuri” (nu este banal de găsit).
Atacurile SMM sunt concepute pentru o anumită versiune de BIOS (sau linie BIOS) și o familie de chipset-uri, de exemplu, pentru seria a 3-a sau a 4-a de chipset-uri Intel (adică, atacurile asupra Q35 și Q45 sau atacurile asupra AMI și AWARD BIOS sunt diferite).
Invisible Things Lab a sugerat apelarea funcționalității tehnologiei Intel vPro/ Intel AMT inel -3. [2] În cadrul acestei tehnologii, chipset-urile care acceptă tehnologia vPro conțin un microprocesor independent ( arhitectura ARC 4), au o interfață separată la placa de rețea, acces exclusiv la o zonă RAM dedicată (16 MB), acces DMA la principalul BERBEC. Programele de pe acesta sunt executate independent de procesorul central, firmware-ul este stocat împreună cu codurile BIOS sau pe o memorie flash SPI similară (codul are o semnătură criptografică). O parte a firmware-ului este un server web încorporat. AMT este dezactivat implicit, dar o parte din cod încă funcționează în acest mod, chiar și atunci când AMT este dezactivat. Codul de apel -3 este activ chiar și în modul de alimentare S3 Sleep.
ale sistemelor de operare | Aspecte|||||
---|---|---|---|---|---|
| |||||
Tipuri |
| ||||
Nucleu |
| ||||
Managementul proceselor |
| ||||
Gestionarea și adresarea memoriei |
| ||||
Instrumente de încărcare și inițializare | |||||
coajă | |||||
Alte | |||||
Categorie Wikimedia Commons Wikibooks Wiktionar |
Tehnologii de procesoare digitale | |||||||||
---|---|---|---|---|---|---|---|---|---|
Arhitectură | |||||||||
Arhitectura set de instrucțiuni | |||||||||
cuvânt mașină | |||||||||
Paralelism |
| ||||||||
Implementări | |||||||||
Componente | |||||||||
Gestionare a energiei |