Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice...
-
Upload
tatiana-smith -
Category
Documents
-
view
218 -
download
0
Transcript of Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice...
![Page 1: Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.](https://reader035.fdocument.pub/reader035/viewer/2022062418/5542eb59497959361e8c4729/html5/thumbnails/1.jpg)
Organizzazione della Memoria (Unix)
• Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi che utilizzano lo stesso codice
• Data = variabili inizializzate• BSS = variabili non inizializzate
Process A
Process B
![Page 2: Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.](https://reader035.fdocument.pub/reader035/viewer/2022062418/5542eb59497959361e8c4729/html5/thumbnails/2.jpg)
Condivisione di File
Two processes can share a mapped file.
Un file mappato simultaneamente in due processi:accesso più veloce, utilizzato nelle librerie condivise
![Page 3: Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.](https://reader035.fdocument.pub/reader035/viewer/2022062418/5542eb59497959361e8c4729/html5/thumbnails/3.jpg)
System Call per la Gestione della Memoria
Non sono standard, al loro posto è usata una
chiamata di libreria di più alto livello del C:
malloc
![Page 4: Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.](https://reader035.fdocument.pub/reader035/viewer/2022062418/5542eb59497959361e8c4729/html5/thumbnails/4.jpg)
Utilizzo malloc
• Alloca una serie di byte in memoria.• Ha un utilizzo simile alla new di Java per dichiarare array
dinamici:
Esempio di allocazione di un vettore di 10 interi.
int * vett;
vett = (int *) malloc (10 * sizeof (int));
• sizeof (int) = byte occupati da un intero.• int * = puntatore ad interi (alla prima cella dell’area di
memoria degli interi)
![Page 5: Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.](https://reader035.fdocument.pub/reader035/viewer/2022062418/5542eb59497959361e8c4729/html5/thumbnails/5.jpg)
Gest. memoria nei processi Windows
• Layout di spazi di indirizzamento logici per 3 processi• Le aree bianche sono private • Le aree scure sono condivise
![Page 6: Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.](https://reader035.fdocument.pub/reader035/viewer/2022062418/5542eb59497959361e8c4729/html5/thumbnails/6.jpg)
Gest. memoria nei processi Windows
• Aree mappate con le rispettive pagine su disco• Il file lib.dll è mappato in due spazi di
indirizzamento contemporaneamente
![Page 7: Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.](https://reader035.fdocument.pub/reader035/viewer/2022062418/5542eb59497959361e8c4729/html5/thumbnails/7.jpg)
Gestione della sicurezza (Linux/Windows)
Gestione della sicurezza in LinuxGestione della sicurezza in Windows
2000Buchi nella sicurezza (all’interno del
sistema).Attacchi dall’esterno
![Page 8: Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.](https://reader035.fdocument.pub/reader035/viewer/2022062418/5542eb59497959361e8c4729/html5/thumbnails/8.jpg)
Sicurezza in Linux
Ogni file ha permessi di lettura, scrittura ed esecuzione.
Ogni file ha un owner (proprietario) con un proprio UID (Identificativo utente) e GID (Identificativo gruppo).
L’utente con UID 0 è detto root è può effettuare qualsiasi operazione sui file.
![Page 9: Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.](https://reader035.fdocument.pub/reader035/viewer/2022062418/5542eb59497959361e8c4729/html5/thumbnails/9.jpg)
System Calls per la protezione dei file
• s è un codice di errore.• uid e gid sono user ID e il group ID.• Le ultime tre chiamate sono eseguibili solo dal root
![Page 10: Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.](https://reader035.fdocument.pub/reader035/viewer/2022062418/5542eb59497959361e8c4729/html5/thumbnails/10.jpg)
Id effettivo e reale
Problema: un programma deve accedere a risorse possedute dal root.
Soluzione: settare il bit SETUID.
Se tale bit è settato chi esegue il programma acquista, solo per l’esecuzione, i diritti del proprietario del programma (il suo id effettivo diventa quello del proprietario).
chmod a+s pippo (setta per il file pippo il bit SETUID per tutti).
Attenzione: il programma non deve contenere buchi di sicurezza.
![Page 11: Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.](https://reader035.fdocument.pub/reader035/viewer/2022062418/5542eb59497959361e8c4729/html5/thumbnails/11.jpg)
Sicurezza in Windows 2000
Ogni processo in Windows possiede un Access Token SID=Security ID (ogni utente ha il suo). DACL = Discretionary Access Control List Restricted SIDs sono utenti che hanno permessi limitati sul file. Privilegi: alcuni privilegi speciali (anche di superuser possono essere dati al processo). Un thread può passare la sua access token ad un altro (impersonificazione).
Struttura di un access token
![Page 12: Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.](https://reader035.fdocument.pub/reader035/viewer/2022062418/5542eb59497959361e8c4729/html5/thumbnails/12.jpg)
Security Descriptor
Ogni oggetto possiede un security decriptor
SACL=System Access Control List (Log)
ACE=Access Control Element
![Page 13: Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.](https://reader035.fdocument.pub/reader035/viewer/2022062418/5542eb59497959361e8c4729/html5/thumbnails/13.jpg)
API per la Sicurezza
![Page 14: Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.](https://reader035.fdocument.pub/reader035/viewer/2022062418/5542eb59497959361e8c4729/html5/thumbnails/14.jpg)
Buchi nella sicurezza
• Cavalli di troia
• Login spoofing
• Porte segrete
• Bombe logiche
• Buffer overflow
![Page 15: Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.](https://reader035.fdocument.pub/reader035/viewer/2022062418/5542eb59497959361e8c4729/html5/thumbnails/15.jpg)
Buffer Overflow
• (a) Il main è chiamato• (b) Il metodo A è chiamato• (c) Buffer overflow è mostrato in grigio