Virtuális memóriakezelés Védelem. Memória védelem. Intel x68. Izsó Tamás október 18. Izsó Tamás Memória védelem/ 1

Hasonló dokumentumok
Virtuális memóriakezelés Védelem. Memória védelem. Intel X86. Izsó Tamás október 1. Izsó Tamás Memória védelem/ 1

Programozás alapjai. 10. előadás

Máté: Számítógép architektúrák

Operációs rendszerek III.

A 32 bites x86-os architektúra regiszterei

Operációs rendszerek. Az NT memóriakezelése

Számítógép architektúrák

Szegmentálás. Memória kezelési stratégia mely a felhasználó nézőpontját támogatja Például:

386 processzor címzés

Máté: Assembly programozás

Adatelérés és memóriakezelés

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Operációs rendszerek. Az NT folyamatok kezelése

Tamás Péter (D. 424) Mechatronika, Optika és Gépészeti Informatika Tanszék (D 407)

Számítógépek felépítése

Utolsó módosítás:

Digitális rendszerek. Utasításarchitektúra szintje

Számítógép Architektúrák

Debreceni Egyetem Matematikai és Informatikai Intézet. 13. Védelem

Assembly. Iványi Péter

Operációs rendszerek Memóriakezelés 1.1

Dr. Illés Zoltán

Előadás_#12. Előadás_12-1 -

A Számítógépek felépítése, mőködési módjai

8. Memória management

Utasításrendszer jellemzése (utasítás részei) 1. műveleti kód 2. operandusok 3. következő utasítás címe (elmaradhat)

Operációs rendszerek. UNIX fájlrendszer

Az assembly nyelv sor-orientált nyelv, tehát minden sorba pontosan egy utasítás kerül. Egy sor mezőkből áll a következőképpen:

Assembly Rekurzív függvények, EXE, C programok. Iványi Péter

Assembly. Iványi Péter

Az operációs rendszer szerkezete, szolgáltatásai

OPERÁCIÓS RENDSZEREK I. BEVEZETÉS Koczka Ferenc -

Operációs rendszerek. Folyamatok kezelése a UNIX-ban

Az interrupt Benesóczky Zoltán 2004

2016/08/31 02:45 1/6 Hardver alapok

Utolsó módosítás:

Vezérlésfolyam gráf és X86 utasításkészlet

Operációs rendszerek 1.

2017/12/16 21:33 1/7 Hardver alapok

OPERÁCIÓS RENDSZEREK. Elmélet

Fábián Zoltán Hálózatok elmélet

Máté: Számítógép architektúrák

Utolsó módosítás:

Archi2 Gyak. (Processzorok Utasításszintű Kezelése) 2014 ősz

assume CS:Code, DS:Data, SS:Stack Start mov dl, 100 mov dh, 100 push dx Rajz

Operációs rendszerek. A védelem célja. A fenyegetés forrásai. Védelmi tartományok. Belső biztonság. Tartalom

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Intel x86 utasításkészlet

PE/COFF fájl formátum

Processzorok Utasításszintű Kezelése tavasz

1. Az utasítás beolvasása a processzorba

Architektúra, megszakítási rendszerek

Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás

Intel x86 utasításkészlet + disassembler működése

Aritmetikai utasítások I.

Assembly programozás levelező tagozat

Operációs rendszerek. Windows NT. A Windows NT

Balaton Marcell Balázs. Assembly jegyzet. Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született.

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

A Számítógépek hardver elemei

Architektúra, címzési módok

Utolsó módosítás:

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Rootkitek. Előadó: Barta Csaba

Bevezetés a számítástechnikába

Memóriakezelés (Memory management)

Tamás Péter (D. 424) Mechatronika, Optika és Gépészeti Informatika Tanszék (D 407)

Operációs rendszerek. A Windows NT

Bevezetés az informatikába

OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS

Alkalmazások biztonsága

Magas szintű optimalizálás

Jelszavak helyes megválasztása, szótáras törés. Pánczél Zoltán

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

18. témakör. Jogosultságok (Windows és Linux jogosultságok összehasonlítása, helyi és megosztási jogosultságok)

Léteznek nagyon jó integrált szoftver termékek a feladatra. Ezek többnyire drágák, és az üzemeltetésük sem túl egyszerű.

Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

Virtualizáció. egy hardveren több virtuális rendszer működik egyszerre, virtuális gépekben futó önálló vendég (guest) operációs rendszerek formájában

A számítógép egységei

Máté: Assembly programozás

Operációs rendszerek

Paraméter átadás regisztereken keresztül

ARM (Advanced RISC Machine)

Laborsegédlet 3. Labor

Programozási nyelvek Java

SzA19. Az elágazások vizsgálata

Selling Platform Telepítési útmutató Gyakori hibák és megoldások

LOGSYS LOGSYS LCD KIJELZŐ MODUL FELHASZNÁLÓI ÚTMUTATÓ november 8. Verzió

Selling Platform Telepítési útmutató Gyakori hibák és megoldások

6. Tárkezelés. Operációs rendszerek. Bevezetés A program címeinek kötése. A címleképzés. A címek kötésének lehetőségei

Rekurzió. Dr. Iványi Péter

Virtualizációs Technológiák Bevezetés Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák

Kommunikációs rendszerek programozása. Switch-ek

Ügyviteli rendszerek hatékony fejlesztése Magic Xpa-val mobilos funkciókkal kiegészítve. Oktatók: Fülöp József, Smohai Ferenc, Nagy Csaba

Máté: Számítógép architektúrák

Yottacontrol I/O modulok beállítási segédlet

8. témakör. Memóriák 1. Számítógép sematikus felépítése: 2.A memória fogalma: 3.A memóriák csoportosítása:

Átírás:

Memória védelem Intel x68 Izsó Tamás 213. október 18. Izsó Tamás Memória védelem/ 1

Section 1 Virtuális memóriakezelés Izsó Tamás Memória védelem/ 2

Operációs rendszer hardver szintű támogatása Hardver szinten támogatott operációs rendszer feladatok: memória kezelés; szoftver modul védelem; multitaszk szervezés; kivételkezelés és interrupt hívás; multiprocesszoros (több magos processzorok) kezelés; gyorsítótár alkalmazás; hardver erőforrások és tápfeszültség ellenőrzése; program futásának a nyomkövetése és teljesítményfigyelés. Izsó Tamás Memória védelem/ 3

Windows memória kiosztás FFFFFFFF Windows OS Supervisor terület 8 7FFFF Processz 3. Processz 2. Processz 1. User terület User terület User terület Logikai cím Izsó Tamás Memória védelem/ 4

Lapozás elve (elnagyolva) Present 1 1 1 1 Present A processz Fizikai memória osztott memória Fix méretű lapok 1 1 B processz Izsó Tamás Memória védelem/ 5

Intel x86 processzor memóriakezelése szegmentálás lapozás Logikai cím Szegmes szelektor offset Lineáris címtartomány Globál destriptor table GDT Lineáris cím Dir Tábla Offszet Fizikai címtartomány Szegmens Leíró Szegmens Lin. cím Page directory Page Table Entry Lap Fizikai cím Entry Szegmens bázis cím Lap Szegmentálás Lapozás Izsó Tamás Memória védelem/ 6

Szegmentálás feladata A taszkok memória területének elkülönítése. A címtartományon kívül program hibából adódó hivatkozások megakadályozása. A rendszer és a felhasználói programok címtartományának a szétválasztása. Adat vagy kód kezdőcímének az áthelyezhetősége. Osztott memóriaterület szabályozott úton történő elérése. Osztott kódrészek hívása. Szegmens hozzáférések korlátozása. Izsó Tamás Memória védelem/ 7

Szegmens regiszter 15 3 2 1 INDEX T I RPL TÁBLA INDIKÁTOR = GDT 1 = LDT Requested Priveleg Level (RPL) szegmens szelektor látható rész takart rész szegmens szelektor bázis cím, méret, hozzáférési információk szegmens regiszterek CS SS DS ES FS GS Izsó Tamás Memória védelem/ 8

Flat modell Virtuális memóriakezelés Védelem Szegmentálást nem lehet kikapcsolni, csak a lapozást. Ugyanakkor be lehet állítani a szegmenseket úgy, mintha nem is léteznének. Egy-egy szegmensleíró a kódra és adatra. Báziscím -tól. Méret (limit) 4GByte Szegmens regiszterek CS DS Kód és adatszegmens leíró Lineáris címtartomány kód FFFFFFFFH nincs mem. SS ES Access Limit Base Address adat és stack H FS GS Izsó Tamás Memória védelem/ 9

Védett flat modell Virtuális memóriakezelés Védelem Szegmens regiszterek CS DS SS ES FS GS Segmens leíró Access Limit Base Address Access Limit Base Address Lineáris címtartomány Kód FFFFFFFFH nincs mem. Mem. I/O adat és stack H Izsó Tamás Memória védelem/ 1

Többszegmenses modell Szegmens regiszterek CS SS DS ES FS GS Szegmens leírók Access Limit Base Address Access Limit Base Address Access Limit Base Address Access Limit Base Address Access Limit Base Address Access Limit Base Address Access Limit Base Address Access Limit Base Address Access Limit Base Address Access Limit Base Address Lineáris címtartomány Stack Kód Adat Adat Adat Adat Izsó Tamás Memória védelem/ 11

Az x86 lapozási módok 32 bites Ebben az üzemmódban a lineáris cím és a fizikai cím egyaránt 32 bites. PAE Ebben az esetben a 32 bites lineáris címet 32 bitnél szélesebb vagy azzal egyenlő fizikai címre képezzük. Ez egy egzotikus címzési mód, mégis a Windows/XP az SP2-ben már ezt használja, ennek az okára később kitérünk. IA-32e 64 bites üzemmód esetén használatos. Izsó Tamás Memória védelem/ 12

32 bites lapozás 4KB lapmérettel 12 4-KByte P 1 Page Directory 1 Page Table Physical Ad PDE with PS= 2 PTE 2 32 CR3 Izsó Tamás Memória védelem/ 13

Section 2 Védelem Izsó Tamás Memória védelem/ 14

Védelem A védelem megszervezésnél a következő dolgokat kell átgondolni: védelem tárgya Információ aminek a hozzáférését egyeseknek megengedjük, korlátozzuk, vagy megtiltjuk. védelem alanya Aktív résztvevő, aki az információhoz a hozzáférést kezdeményezi. tevékenység Aktív résztvevő tevékenységi sorozata az információ megszerzésére. hozzáférési szabályok Leírják, hogy az egyes alanyok mely objektumokhoz férnek hozzá és melyekhez nem. Izsó Tamás Memória védelem/ 15

Hozzáférési szabályok DAC: Access Control tetszés szerinti hozzáférési jog biztosítása: Minden egyes felhasználó számára külön rendelkezhetünk a hozzáférési jogokról. Az információ birtokosa adja a jogokat. A DAC-ot rugalmassága miatt az operációs rendszerek előszeretettel használják DAC hátránya Nehéz globális szabályokat megkövetelni. Nem biztos forrásból származó program a felhasználó jogosultsága alapján megváltoztathatja a hozzáférési jogokat. Nem biztonságosan megírt program gyengeségeit kihasználva lehetőséget kap a támadó, a DAC szabályainak a módosítására. Izsó Tamás Memória védelem/ 16

Hozzáférési szabályok MAC: Mandatory Access Control Rendszer szintű adathozzáférési szabályokat, a felhasználó nem tudja megváltoztatni. A rendszerre van bízva a jogok hozzárendelése. Izsó Tamás Memória védelem/ 17

Szereplők védelem tárgya Memória, regiszterek, I/O eszközök védelem alanya Az azonosításhoz a felhasználó user ID vagy processz ID lenne a legalkalmasabb, de ezeket az operációs rendszer definiálja, és az alatta lévő hardver ezekről semmit sem tud. Ezért itt a futó processz kódszegmensére fogjuk a védelmet alkalmazni. tevékenység gépi utasítások sorozata. hozzáférési szabályok hogyan fogalmazzuk meg a szabályokat, hol tároljuk, hogy kényszerítsük ki a betartatását Izsó Tamás Memória védelem/ 18

Védelmi szintek (gyűrűk) MAC terminológiában címkéket jelent.. szint a legmagasabb szint, bár a legkisebb érték tartozik hozzá. Általában az operációs rendszer kernel programja használja, például memória lapozás, taszkok ütemezése stb. 1. szint a nagy prioritású készülék meghajtó programok futnak ezen a szinten. 2. szint az alacsonyabb prioritású meghajtó programok részére van fenntartva. 3. szint a felhasználói programok futtatásához. Izsó Tamás Memória védelem/ 19

Szegmentálás védelmi megoldások 31 24 23 22 21 2 18 16 15 14 13 12 11 8 7 Base 31:24 G D / B A SEG. D L V Limit P P S TYPE BASE 23:16 4 L 19:16 L 31 16 15 BASE ADDRESS 15: Segment Limit 15: Szegmensleíró Izsó Tamás Memória védelem/ 2

Szegmensleíró tartalma Segment Limit szegmens méret (2 bit) függ G-től. Base address Szegmens báziscíme, 4 GByte címezhető. S Hivatkozott szegmens kód, adat, vagy rendszerleíró tábla. Type Szegmens típusa, értelmezése függ S-től. DPL Szegmens privilégium szintje. P érvényes szegmensleíró van a memóriában D/B Kódnál operandus mérete, adatnál címtartomány iránya (expand down). G Szegmens méretének a mértékegysége byte/4kbyte. L A szegmens 64 bites utasításokat tartalmaz. AVL Operációs rendszer számára fenntartott flag. Izsó Tamás Memória védelem/ 21

Szegmens típusa Virtuális memóriakezelés Védelem típus értéke szegmens leírás Decimálisan 11 1 9 8 típus E W A Data Read-Only 1 1 Data Read-Only, accessed 2 1 Data Read/Write 3 1 1 Data Read/Write, accessed 4 1 Data Read-Only, expand-down 5 1 1 Data Read-Only, expand-down, accessed 6 1 1 Data Read/Write, expand-down 7 1 1 1 Data Read/Write, expand-down, accessed C R A 8 1 Code Execute-Only 9 1 1 Code Execute-Only, accessed 1 1 1 Code Execute/Read 11 1 1 1 Code Execute/Read, accessed 12 1 1 Code Execute-Only, conforming 13 1 1 1 Code Execute-Only, conforming, accessed 14 1 1 1 Code Execute/Read, conforming 15 1 1 1 1 Code Execute/Read, conforming, accessed Izsó Tamás Memória védelem/ 22

Általános védelmi eljárások Szegmens tartomány ellenőrzés ( Base address, Limits) Szegmens típus ellenőrzés (read, write, executable, stb.). Továbbá végrehajtható segmens nem írható, és olvasni is csak akkor lehet, ha az engedélyezve van. Szegmens regiszterek használata: CS végrehajtható, SS írható szegmensre hivatkozhat. DS, ES, FS, GS -be nem olvasható végrehajtható vagy rendszer szegmens nem tölthető. Utasítás szintű rendelkezések. Például call és jmp csak kód szegmensre, call gate, task gate, vagy TSS-re történhet. Privilegizált utasítások, stb. CS és SS regiszterbe nem tölthető a szegmens szelektor érték, a többibe igen, de ha hívatkozunk rá kivételdobás történik. Izsó Tamás Memória védelem/ 23

Védelmi eljárások különböző privilégium szintek között CPL Current Privilege Level (aktuális privilégium szint) ami a védelem alanyához tartozó címke. CPL-t az SS és a CS szegmens regiszterek nem látható része tartalmazza. CPL az aktuálisan futó processzhez tartozó privilégium szint. Normál állapotban a CPL megegyezik az aktuális utasítást tartalmazó kódszegmen DPL-jével. CPL változik, ha a program olyan kódszegmensen fut tovább, amelynek más a privilégium szintje. DPL Descriptor Privilege Level a védelem tárgyának a privilégium szintje. DPL-t a szegmensleíró tábla bejegyzésének a 13, és 14-ik bitje tartalmazza. Izsó Tamás Memória védelem/ 24

Nagyobb privilégiummal futó kód kihasználása 1 Kis privilégium szinttel rendelkező U kód átad egy olyan címet rendszerhívásnál S kódnak, amelyet meg akar változtatni, de neki nincs elég privilégiuma oda írni. 2 A meghívott S nagy privilégiummal ( érték) futó kódnak joga van a megadott címre írni, így véghezviszi U kártékony kód kérését. Hogyan védekezhetünk ez ellen? Izsó Tamás Memória védelem/ 25

RPL Request Privilege Level RPL-t az operációs rendszer állítja be. Adjust RPL Field of Segment Selector utasítás két paramétere a forrás és a cél segmens szelektora. A cél szegmens RPL-jét a forrás szegmens RPL-jéhez igazítja, ha az kisebb. Forrás szegmens a hívó eljárás szegmens szelektorának az RPL-je, a cél az adatot címző szegmensregiszter RLP-je. Hozzáférés engedélyezett, ha max(cpl, RPL) DPL. Tehát ha a hívónak joga volt az adott területre írni, akkor ez a nagyobb privilégiummal rendelkező kódnak is engedélyezett. Izsó Tamás Memória védelem/ 26

Privilégium ellenőrzése adat hivatkozáskor Kisebb privilégium futó kód (CPL) nem fér hozzá nagyobb privilégium szinttel rendelkező adathoz (DPL) Csak a DS, ES, FS, GS vagy SS regiszterek megváltoztatásánál kell erre figyelni. Ezeket a regisztereket csak a MOV, POP, LDS, LES, LFS, LGS, LSS utasításokkal lehet módosítani. Szabály: max(cpl, RPL) DPL. Izsó Tamás Memória védelem/ 27

Miért nem hívunk meg kisebb privilégiummal rendelkező kódot Könnyű átmenni az alacsonyabb privilégiummal rendelkező kódba, de nehéz onnan visszatérni. Áttérés után a kód nem érheti el a saját adatait, mivel CPL numerikus értéke nagyobb, mind a kód DPL értéke. Valóban szükség van erre? Izsó Tamás Memória védelem/ 28

Miért nem ugorhatunk nagyobb privilégiummal rendelkező kódba Biztonsági okokból nem tehetjük meg. Valóban szükség van rá? Igen, a device drivereknél, például hogy az USB eszközt lássa a felhasználói program. Megoldás call gate-tel, amit a következő fejezetben tárgyalunk. Izsó Tamás Memória védelem/ 29

Kódszegmens váltás A privilégium ellenőrzésénél felhasznált adatok. CS regiszter CPL Kód szegmens szegmens szelektora (Ez tartalmazza a hívó kódot) RPL Cél kódszegmens szegmens leíró Privilégium ellenőrzés DPL C Izsó Tamás Memória védelem/ 3

Szegmens conform típusának a felhasználása Nem conform(nem alkalmazkodó) kódszegmenst csak akkor lehet meghívni, ha CPL = DPL. Ebben az esetben RPL-nek kisebb szerepe van, csak arra kell figyelni, hogy az értéke kisebb vagy egyenlő legyen a CPL-lel. Conform tulajdonságú kódszegmens CPL DPL feltétel mellett meghívható. Ilyenkor az RPL nem számít. A függvény meghívása után a CPL értéke nem változik, ez az egyetlen olyan eset, hogy a CPL és az utasításokat tartalmazó szegmens DPL-je nem biztos, hogy azonos értékű. Nem jön létre stack váltás. Felhasználási lehetőség például a matematikai könyvtári függvények céljára. Izsó Tamás Memória védelem/ 31

OS meghívása Nagyobb privilégiummal rendelkező kódszegmenst, egyszerű call utasítással biztonsági okokból nem hívhatunk meg. Különböző interface-k léteznek, hogy a hívások minél ellenőrzöttebben történjenek. call gate szoftver interrupt SYSENTER/SYSEXIT Izsó Tamás Memória védelem/ 32

Call gate A call gate leiró is a GDT vagy a LDT-ban található. Required but not used by processor Descriptor Table Offset Segment Selector Offset Call-Gate Descripto + Base Base Base Code-Se Descripto Procedure Entry Point Izsó Tamás Memória védelem/ 33

call gate leíró adatai Meghívandó kód szegmens szelektora. Szegmensen belül az eljárás belépési címe. A hívó kódtól megkövetelt DPL privilégium szint. Stack váltás esetén: átadandó paraméterek száma, stack adatának a mérete. Lehetővé teszi, hogy 32 bites alkalmazás 16 bites programot hívjon meg. Izsó Tamás Memória védelem/ 34

Call gate ellenőrzés CS regiszter CPL Call gate szelektor RPL Privilégium ellenőrzés Call gate (leíró) DPL Cél kódszegmens leíró DPL Izsó Tamás Memória védelem/ 35

Call gate hozzáférési szabályok CPL DPL GATE RPL DPL GATE CALL utasítás végrehajtása csak a DPL cél CPL szabály esetén lehetséges, Nem conform szegmensbe ugrás JMP utasítással csak akkor lehetséges, ha DPL cél = CPL. Conform szegmensbe ugrás JMP utasítással csak akkor lehetséges, ha DPL cél CPL. Miért nem megengedett a kisebb privilégiummal rendelkező függvény hívása? Azért mert akkor a visszatérésnél lennének problémák. Izsó Tamás Memória védelem/ 36

Lapszintű hozzáférési szabályok A 4 privilegium szint a következőképpen képződik le a lap U/S bitjére: CPL =,1,2 érték supervisor mód. CPL = 3 felhasználó mód Típus védelem lap esetén csak írásra/olvasásra terjed ki. PAE és 64 bites lapozásnál végrehajtás letíltás (execute disable NX) is lehetséges. Csak olvasás van megengedve, ha R/W = Írás és olvasás is engedélyezett, ha R/W = 1 Inicializálás miatt a supervisor minden lapot írhat és olvashat, de csak akkor, ha a CR regiszter WP bitje. Különben neki is be kell tartani a játékszabályokat. Supervisor módú lapokat a user módú program sem írni sem olvasni nem tudja. Page Directory Table, és Page Table esetén az R/W és a U/S bitek használata azonos a fent leírtakkal. Izsó Tamás Memória védelem/ 37