Verificarea drepturilor de acces - ferestrele dispozitivului (hl

Verificați drepturile de acces

Modelul de securitate Windows necesită ca firul în prealabil - înainte de deschiderea obiectului - să indice ce operații va efectua pe acel obiect. Sistemul verifică tipul de acces solicitat de fir și, dacă este permis, devine un mâner care îi permite (și altor fire din același proces) să efectueze operații asupra obiectului. După cum se menționează în Capitolul 3, managerul de obiecte înregistrează drepturile de acces acordate pentru acest mâner în tabela descriptivă a procesului.







Unul dintre evenimentele care determină managerul de obiecte să verifice drepturile de acces este să deschidă procesul unui obiect existent după nume. Când un obiect este deschis prin nume, managerul de obiecte îl caută în spațiul său de nume. În cazul în care acest obiect nu are un spațiu de nume secundar (de exemplu, registru numele de spațiu aparținând configurația controlerului sau spațiu nume de sistem de fișiere aparținând conducătorului auto sistem de fișiere), managerul de obiect solicită o ObpCreateHandle funcție internă. După cum sugerează și numele, acesta creează un element în tabelul descriptor care este mapat la obiect. Cu toate acestea ObpCreateHandle solicită sistemul executiv ExCreateHandle și creează un descriptor numai dacă un alt manager obiect functie, ObpIncrementHandleCount, raportează că fluxul are un drept de acces la obiect. Este adevărat că controlul accesului în timp real este realizat de o altă funcție a managerului de obiecte, ObCheckObjectAccess, care returnează rezultatele verificării funcției ObpIncrementHandleCount.

ObpIncrementHandleCount transmite ObCheckObjectAccess identitate flux de protecție tipuri de obiecte deschizator au solicitat acces (a se citi, scrie, șterge, și așa mai departe. D.), iar indicatorul la obiect. ObCheckObjectAccess blochează mai întâi protecția obiectului și contextul protecției firului. obiect de protecție de blocare împiedică modificarea acestuia de către un alt fir în timpul verificării drepturilor de acces și a firului de protecție de blocare context împiedică un alt fir de același sau un alt proces pentru a schimba identitatea prima protecție a fluxului la verificarea drepturilor de acces ale acestuia. Apoi ObCheckObjectAccess apelează metoda de protecție a obiectului pentru a obține setările de protecție a obiectului (vezi capitolul 3 pentru o descriere a metodelor obiectului). Apelarea unei metode de protecție poate determina apelarea unei funcții de la o altă componentă a sistemului executiv, însă multe obiecte din sistemul de executare se bazează pe suportul standard de management al securității oferit de sistem.

Dacă componenta sistemului executiv, atunci când determină obiectul, nu va înlocui politica de securitate standard, aceasta marchează tipul acestor obiecte ca fiind o protecție standard. Ori de câte ori SRM invocă metoda de protecție a obiectului, mai întâi verifică dacă obiectul folosește o protecție standard. Un obiect cu informații despre protecția standard de protecție stochează în antetul său și oferă o metodă de protecție numită SeDefaultObjectMethod. Un obiect care nu utilizează protecție standard trebuie să mențină el însuși informații de protecție și să ofere propria sa metodă de protecție. Protecția standard utilizează obiecte cum ar fi mutexurile, evenimentele și semaphorele. Un exemplu de obiect cu protecție nonstandard este un fișier. Managerul de I / O care definește obiecte de tip "file" are un driver de sistem de fișiere care gestionează protecția fișierelor sale (sau decide să nu-l implementeze). Astfel, în cazul în care sistemul solicită informații referitoare la protecția „fișierul“ obiect care reprezintă un fișier de pe un volum NTFS, acesta devine aceste informații de la driverul de sistem de fișiere NTFS, care, la rândul său, le primește de la metoda de protecție a „fișierul“ obiect, aparținând controlerului IO. Rețineți că atunci când deschideți fișierul, ObCheckObjectAccess nu este executat, deoarece obiectele "file" se găsesc în spații de nume secundare; sistemul solicită metoda de protecție a obiectului "fișier" numai dacă solicită sau stabilește în mod voluntar setările de protecție a fișierelor (de exemplu, prin setările Windows SetFileSecurity sau GetFileSecurity).







După ce a primit informații despre protecția obiectului, ObCheckObjectAccess apelează funcția SRM SeAccessCheck, care se bazează pe întregul model de securitate Windows. Acceptă parametrii de protecție a obiectului, datele de identificare a protecției firului (primite de ObCheckObjectAccess) și tipul de acces solicitat de fir. SeAccessCheck returnează True sau False, în funcție de tipul de acces solicitat la fir.

Ulterior, firul poate încerca să scrie ceva în acest fișier prin intermediul funcției Windows WriteFile, trecând descriptorul de fișier ca parametru. Serviciul de sistem NtWriteFile, care WriteFile provoca prin Ntdll.dll, va apela la managerul de obiect funcția ObReferenceObjectByHandle, pentru a obține un pointer la „fișierul“ obiect în descriptor său. ObReferenceObjectByHandle acceptă tipul de acces solicitat ca parametru. După ce a găsit un element în tabela descriptivă care corespunde descriptorului dorit, ObReferenceObjectByHandle compară tipul de acces solicitat cu cel furnizat la deschiderea fișierului. În acest caz, ObReferenceObjectByHandle va indica faptul că operația de scriere ar trebui să eșueze deoarece firul de asteptare, la deschiderea fișierului, nu a primit dreptul de ao scrie.

Funcțiile de securitate Windows permit, de asemenea, aplicațiilor Windows să-și definească propriile obiecte private și să solicite servicii SRM pentru a se aplica acestor obiecte de securitate Windows. Multe funcții de mod kernel utilizate de managerul de obiecte și de alte componente ale sistemului executiv pentru protejarea obiectelor lor sunt exportate ca funcții de utilizator Windows. De exemplu, echivalentul SeAccessCheck pentru modul de utilizator este AccessCheck. Astfel, aplicațiile Windows pot aplica modelul de securitate Windows și pot fi integrate cu interfețele de autentificare și administrare ale acestui sistem de operare.

Esența modelului de protecție SRM reflectă o expresie matematică cu trei parametri de intrare: ID-ul protecției firului, tipul de acces solicitat și informațiile de protecție a obiectului. Rezultatul său este valoarea "da" sau "nu", care determină dacă modelul de securitate va furniza tipul de acces solicitat. În secțiunile următoare vom vorbi despre acești parametri de intrare și algoritmul de control al accesului în modelul de protecție.







Articole similare

Trimiteți-le prietenilor: