Moduri CPU şi inele de protecţie Securitatea sistemelor şi a aplicaţiilor Cursul VIII. Arhitectura de securitate. Securitatea SO Windows Marius Joldoş U.T. Cluj-Napoca SSA cursul 08 - M. Joldos - T.U. Cluj 2 Moduri CPU şi inele de protecţie SO se protejeaza prin segmentarea compomentelor sale în inele Fiecare inel interior este mai privilegiat şi oferă servicii inelelor exterioare Numărul de inele într-un SO depinde de procesorul pe care lucrează. Codul dintr-un inel poate accesa doar alte obiecte din acelaşi inel sau să solicite servicii de la inelul de dedesubt pe baza unor standarde/api bine definite Moduri CPU şi inele de protecţie Cea mai comună arhitectură foloseşte 4 inele Ring 0 Nucleul SO Ring 1 Celelalte părţi ale SO Ring 2 Drivere de I/E şi utilităţi Ring 3 Aplicaţii (ex. Web browser) SSA cursul 08 - M. Joldos - T.U. Cluj 3 SSA cursul 08 - M. Joldos - T.U. Cluj 4
Moduri CPU şi inele de protecţie Inelele permit SO să plaseze componente diferite la nivele de securitate diferite. Cele de la acelaşi nivel sunt în acelaşi domeniu de execuţie Fiecare nivel mai apropiat de centru este mai de încredere Fiecare nivel interior oferă servicii unui nivel exterior (d.e. Un apel sistem) Termeni pentru arhitectura de securitate TCB Trusted Computing Base* - totalitatea combinaţiilor de mecanisme de protecţie dintr-un sistem de calcul Include hardware, software şi firmware. Acestea sunt parte a TCB deoarece sistemul este sigur (are încredere) că acestea vor impune politica de securitate şi nu o vor viola. TCB trebuie să impună regulile de securitate cu stricteţe şi să se asigure că componentele reacţionează de o manieră predictibilă SSA cursul 08 - M. Joldos - T.U. Cluj 5 SSA cursul 08 - M. Joldos - T.U. Cluj 6 Termeni de securitate Observaţi că TCB nu se adresează nivelului tehnic de securitate pe care îl oferă un sistem, ci doar nivelului de încredere pe care îl putem avea în sistem. Cale de încredere un canal de comunicare între utilizator/program şi nucleu. Exemplu: apasarea control-alt-delete în windows. Windows TCB specifică faptul că nimic nu poate intercepta acea secvenţă şi că la apasare îi spunem sistemului că dorim login etc. Perimetru de securitate Nu fiecare proces este în TCB Perimetrul de securitate este un perimetru imaginar care separă ce e de încredere de ce nu e Comunicaţiile între partea de încredere şi rest trebuie bine definite şi strict controlate SSA cursul 08 - M. Joldos - T.U. Cluj 7 SSA cursul 08 - M. Joldos - T.U. Cluj 8
Monitorul de referinţe Monitorul de referinţe: o maşină abstractă care mediază toate accesele subiecţilor la obiecte MR asigură că subiecţii au drepturile de acces necesare pentru obiect şi protejează obiectele de modificarea destructivă Pentru ca un sistem să aibă un nivel de încredere mai ridicat, el trebuie să solicite ca toţi subiecţii să fie autorizaţi înainte de a le permite accesul la un obiect. MR este un concept abstract, nu cod scris. Nucleul de securitate Nucleul de securitate este hardware, software şi firmware care intră în TCB şi implementeză şi impun conceptul de MR! Nucleul de securitate trebuie să ofere următoarele trei lucruri 1. Sa ofere izolare proceselor care realizează conceptul de MR (ele trebuie să fie inalterabile) 2. NS trebuie invocat pentru fiecare tentativă de acces şi trebuie să fie imposibil de evitat, de aceea trebuie să nu poată fi păcălit 3. Trebuie să fie suficient de mic pentru a fi testat şi verificat în totalitate SSA cursul 08 - M. Joldos - T.U. Cluj 9 SSA cursul 08 - M. Joldos - T.U. Cluj 10 Orange Book / TCSEC Trusted Computer System Evaluation Criteria (publicate ca o carte portocalie) create de către DoD. Nivelele de asigurare sunt folosite la evaluarea produselor. Nivelele sunt: A Verified Protection B Mandatory Protection C Discretionary Protection D Minimal Security TCSEC Un sistem este evaluat pe baza a 7 proprietăţi şi se dă o evaluare (A#-D#). Nivelul de rating dă scoruri ale proprietăţilor 1. Politica de securitate trebuie să fie explicită, bine definită şi impusă de mecanisme în sistem 2. Identificarea toţi subiecţii trebuie identificaţi 3. Etichete trebuie asociate corespunzător etichete de control al accesului cu obiectele SSA cursul 08 - M. Joldos - T.U. Cluj 11
TCSEC rezumat Focalizat pe grijile guvernului nu în mod necesar cele comerciale. Se interesează doar de So, nu de networking sau baze de date etc. Focalizat doar pe confidenţialitate Focalizat doar pe nivelele guvernamentale de clasificare a datelor Număr redus de evaluări Creat în 1985 şi retras în 2000 ITSEC Răspunsul european la TCSEC ITSEC evaluează Funcționalitatea şi asigurarea separat* Funcționalitarea face sistemul ce spune că face?. Asigurarea câtă încredere avem în metodele noastre de securitate şi în capacitatea lor de a performa consistent. Aceasta este testată de obicei prin examinarea practicilor de dezvoltare, documentare, gestiunea configuraţiilor şi testării. *Observaţi că atunci când un sistem are un rating de asigurare înseamna că are potențialul să furnizeze un anumit nivel de protecţie. Presupunând că este configurat corect SSA cursul 08 - M. Joldos - T.U. Cluj 13 SSA cursul 08 - M. Joldos - T.U. Cluj 14 ITSEC Două sisteme pot furniza aceeaşi funcţionalitate, dar cu asigurare diferită. De ex. Ele ar putea folosi acceaşi funcţionalitate pentru autentificare (d.e. Un cititor de amporente), dar unul dintre acestea a fost dezvoltat neglijent, ceea ce poate duce la funcţionarea inconsistentă a sistemului (bugs, comparare mai puţin strictă). Acesta ar obţine un rating mai scăzut Criteriile comune (Common Criteria) Noul standard internaţional Orange book a evaluat sistemele faţă de modelul Bell-LaPadula. CC, oferă mai multa flexibilitate. CC evaluează un produs în raport cu un profil de protecţie care este structurat să se adreseze cerinţelor/nevoilor din lumea reală Fiecare produs este mapat la un profil de protecţie (ce servicii oferă) şi este evaluat ca EAL1 EAL7 SSA cursul 08 - M. Joldos - T.U. Cluj 15 SSA cursul 08 - M. Joldos - T.U. Cluj 16 SSA cursul 08 - M. Joldos - T.U. Cluj 16
CC Se pot adauga profile de protecţie după cum apar nevoi şi se pot descrie supoziţiile despre mediu, obiectivele de securitate şi nivelele de asigurare aşteptate. Profilele de protecţie ale CC ofera flexibilitate pe care TCSEC nu o are. Un profil de protecţie are 5 secţiuni (cf. urmatoarea pagină) CC Elemente descriptive numele şi descrierea problemei de rezolvat Rationale justifică profilul şi dă exemple din lumea reală. Explică mediul şi supoziţiile despre folosire Cerinţe funcţionale stabileşte o graniţă de protecţie, descriind ameninţările pe care va încerca să le contracareze. Cerinţe de asigurare a dezvoltării cerinte specifice identificate pe care produsul sau sistemul va trebui să le satisfacă în timpul dezvoltării Evaluări ale cerintelor de asigurare stabilesc tipul şi intensitatea evaluărilor Un CC este ca o cerere de propuneri (RFP) din business. SSA cursul 08 - M. Joldos - T.U. Cluj 17 SSA cursul 08 - M. Joldos - T.U. Cluj 18 Microsoft Windows Momente importante în securitate: NT 3.51 (1993): network drivers and TCP/IP Windows 2000: Active Directory, Kerberos, arhitectura de securitate. Server 2003: politici de securitate, securitatea LAN şi fără fir Vista (2007): nu mai este admin-implicit, zid antifoc, DEP, ASLR Versiunile pe 64-biţi (Vista+): semnarea obligatorie a codului pentru nucleu Arhitectura SO Windows 15.05.2009 SSA cursul 11 - M. Joldos - T.U. Cluj 19 SSA cursul 08 - M. Joldos - T.U. Cluj 20
Componentele de securitate ale SO Windows În modul nucleu: Security Reference Monitor: verificare ACL În modul utilizator: Procesul de log-on (winlogon): logon utilizator Local Security Authority (LSA): verificarea şi schimbarea parolei, tokeni de acces, jurnale de audit (MS04-11 depăsire de zonă: viermele Sasser!) Security Accounts Manager (SAM): baza de date cu conturile, criptarea parolei User Account Control (UAC, Vista, 7): impunerea de privilegii limitate pentru utilizatori SSA cursul 08 - M. Joldos - T.U. Cluj 21 Windows Registry O bază de date ierarhică cu info system critică Perechi cheie-valoare, subchei, 11 tipuri de valori Un cuib (hive) din registry este un grup de chei, subchei şi valori Security-related registry hives: HKEY_LOCAL_MACHINE\SAM: baza de date SAM HKEY_LOCAL_MACHINE\Security: jurnale de securitate etc. HKEY_LOCAL_MACHINE\Software: căi spre programe! Riscuri de securitate: Intrări manipulate în registry Lipsa de chei legate de securitate din registry SSA cursul 08 - M. Joldos - T.U. Cluj 22 Domenii Windows Domeniu = colecţie de maşini care partajează conturi de utilizatori şi politici de securitate. Autentificarea pe domeniu este realizată de un controlor de domeniu (DC). Pentru a evita existenţa unui singur punct de defectare, DC poate fi replicat Active Directory Active directory (introdus în Windows 2000) și este un serviciu de directory asemănător cu LDAP pentru organizarea resurselor sistem: Utilizatori și grupuri Credențiale de securitate și certificate Resurse sistem (desktops, servers, printers) Politici de securitate Servicius DNS Gestiunea încrederii SSA cursul 08 - M. Joldos - T.U. Cluj 23 SSA cursul 08 - M. Joldos - T.U. Cluj 24
Structura Active Directory Controlul accesului în Windows Controlul accesului se aplică obiectelor: fişiere, chei şi cuiburi din registry keys şi obiecte din Active Directory. Există mai multe controale de acces pentrtu fişiere Există diferite mijloace pentru exprimarea politicilor de securitate: Grupuri Roluri Reguli de proprietate şi moştenire Drepturi de acces complexe SSA cursul 08 - M. Joldos - T.U. Cluj 25 SSA cursul 08 - M. Joldos - T.U. Cluj 26 Principals Principals sunt entităţi active în politicile de securitate Principals pot fi Utilizatori locali Aliasuri Utilizatori din domeniu Grupuri Maşini Principals au un nume care poate citi şi un identificator de securitate unic (SID) Principals locali sunt creaţi de o LSA, d.e. principal = MACHINE\principal Principals din domeniu sunt administraţi de DC, d.e. principal@domain = DOMAIN\principal Identificatori de securitate Un identificator de securitate (SID) este un cod unic generat de maşină de lungime variabilă, folosit la identificarea principals. Format: S-1-IA-SA-SA-SA-N, unde IA (identifier authority): caracterizează un emitent, d.e. World Authority (1) or Local Authority (2) SA (subauthority): identifiică un emitent de SID specific, d.e. un controlor de domeniu N: identificator relativ, unic pentru fiecare autoritate Exemple: Everyone (World): S-1-1-0 System: S-1-5-18 Administrator: S-1-5-21-<domain>-500 SSA cursul 08 - M. Joldos - T.U. Cluj 27 SSA cursul 08 - M. Joldos - T.U. Cluj 28
Principals folosiţi la controlul accesului SID: un principal luat individual Grup: o colecţie de principals gestionaţi de DC; grupurile au propriile lor SIDs şi pot fi imbricate Alias: un grup local gestionat de LSA; nu poate fi imbricat Aliasurile implementează rolurile logice: o aplicaţie poate defini un alias la care SIDs să fie asignate la rulare Subiecţii Subiecţii sunt entităţi active în primitivele SO. Subiecţii în Windows sunt procese şi fire de lucru. Credenţialele de securitate pentru un subiect sunt stocate într-un token. Tokenii ofera o mapare principal/subiect şi pot conţine atribute de securitate suplimentare. Tokenii se moştenesc (posibil cu restricţii) la crearea unui nou proces SSA cursul 08 - M. Joldos - T.U. Cluj 29 SSA cursul 08 - M. Joldos - T.U. Cluj 30 Conţinutul tokenilor Conţinutul de identitate şi autorizare SID utilizator, SIDs de grup, SIDs alias privilegii Valori implicite pentru obiecte noi securizabile SID utilizator, SID de grup, DACL Varii atribute logon SID Privilegii Un set de privilegii este definit de constante numerice din Winnt.h Privilegiile controlează accesul la resursele sistemului. Exemple de privilegii: Să încarce sau descarce un driver de dispozitiv Să zăvorască o pagină din memoria fizică Să creeze un cont pentru computer Să oprească sistemul Să modifice timpul sistem Privilegiile nu reprezintă drepturi de acces! SSA cursul 08 - M. Joldos - T.U. Cluj 31 SSA cursul 08 - M. Joldos - T.U. Cluj 32
Obiectele Objectele: entităţi pasive ale SO Exemple de obiecte Windows: Fişiere sau directoare Pipes Procese şi fire de lucru Mapări de fişiere Tokeni de acces Obiecte pentru gestiunea ferestrelor Chei din registry Imprimante Resurse partajate peste reţea Obiecte de sincronizare (events, mutexes, semaphores, and waitable timers) Obiecte job Obiecte Active Directory Securitatea obiectelor preconstruite este gestionată de SO Securitatea obiectelor private trebuie gestionată de aplicaţii Obiectele securizabile trebuie să aibă un descriptor de securitate SSA cursul 08 - M. Joldos - T.U. Cluj 33 Descriptorul de securitate Proprietar Grup primar DACL SACL Proprietar: un principal care deţine obiectul Grup primar: pentru compatibilitate POSIX (Portable Operating System Interface) DACL (discretionary ACL): specifică cui i se garantează accesul și cui i se interzice SACL: specifică o politică de audit de securitate SSA cursul 08 - M. Joldos - T.U. Cluj 34 Drepturi de acces Descriu ce poate face cineva cu un obiect Codificate ca mască pe 32 biţi Biţii de acces standard (biţii 16 23) sunt comuni la majoritatea tipurilor de obiecte DELETE READ_CONTROL: citirea descriptorului de securitate al obiectului SYNCHRONIZE: obiectul este folosit pentru sincronizare (nu la toate obiectele) WRITE_DAC: să schimbe DACL a obiectului WRITE_OWNER: să schimbe proprietarul Drepturile specifice obiectului (biţii 0 15) sunt specifici pentru fiecare clasă de obiecte Se pot specifica drepturi extinse pentru intrările în Active Directory. SSA cursul 08 - M. Joldos - T.U. Cluj 35 Drepturi de acces generice C.m.s. 4 biţi (28 31) reprezintă drepturi de acces generice: GENERIC_READ GENERIC_WRITE GENERIC_EXECUTE GENERIC_ALL Fiecare clasă de obiecte îşi mapează drepturile generice la drepturi specifice obiectului. Drepturile generice folosesc la simplificarea proiectului: oferă un nivel intermediar de descriere a drepturilor de acces. SSA cursul 08 - M. Joldos - T.U. Cluj 36
ACL în Windows DACL intr-un descriptor de securitate este o listă de intrări de control al accesului - Access Control Entries (ACE) ACE format: Tipul ACE : permisiuni pozitive sau negative Principal SID Masca pentru drepturile de acces Flag-uri de moștenire ACEs sunt prelucrate secvențial până când o intrare fie refuză toate drepturile de acces solicitate fie un set de ACEs garantează toate drepturile de acces solicitate SSA cursul 08 - M. Joldos - T.U. Cluj 37 Algoritmul de potrivire pentru ACE Pentru orice obiecte care nu au DACL, accesul este garantat întotdeauna. Pentru toate celelalte obiecte se compară secvențial tokenul ubiectului cu fiecare ACE după cum urmează: ACE nu conține un SID care se potrivește: trece peste și continuă. SID se potrivește și conține o permisiune negativă: refuză accesul și stop. SID se potrivește și conține o permisiune pozitivă: Dacă drepturile acumulate se potrivesc cu masca de acces, garantează accesul și stop. Altfel adaugă ACE la drepturile de acces acumulate și continuă. SSA cursul 08 - M. Joldos - T.U. Cluj 38 Exemplu de procesare ACE Moştenirea ACE La crearea unui obiect ACL-ul său este moștenit din cel al containerului care îl conține, d.e. dintr-un director. Doar ACEs care au un obiect care se potrivește se moștenesc SSA cursul 08 - M. Joldos - T.U. Cluj 39 SSA cursul 08 - M. Joldos - T.U. Cluj 40
Rezumat Sistemele MSWindows conțin mecanisme de securitatee complexe pentru conturile utilizatorilor, precum și pentru controlul accesului. DACLs permit controlul cu granuatie fină al accesului entităților atât în Windows însuși cât și în aplicații. Complexitatea mecanismelor de securitate Windows este și propriul inamic: configurarea neorespunzătoare precum și erorile de implementare pot conduce la incidente de securitate severe. 15.05.2009 SSA cursul 11 - M. Joldos - T.U. Cluj 41