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...
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
Condivisione di File
Two processes can share a mapped file.
Un file mappato simultaneamente in due processi:accesso più veloce, utilizzato nelle librerie condivise
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
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)
Gest. memoria nei processi Windows
• Layout di spazi di indirizzamento logici per 3 processi• Le aree bianche sono private • Le aree scure sono condivise
Gest. memoria nei processi Windows
• Aree mappate con le rispettive pagine su disco• Il file lib.dll è mappato in due spazi di
indirizzamento contemporaneamente
Gestione della sicurezza (Linux/Windows)
Gestione della sicurezza in LinuxGestione della sicurezza in Windows
2000Buchi nella sicurezza (all’interno del
sistema).Attacchi dall’esterno
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.
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
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.
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
Security Descriptor
Ogni oggetto possiede un security decriptor
SACL=System Access Control List (Log)
ACE=Access Control Element
API per la Sicurezza
Buchi nella sicurezza
• Cavalli di troia
• Login spoofing
• Porte segrete
• Bombe logiche
• Buffer overflow
Buffer Overflow
• (a) Il main è chiamato• (b) Il metodo A è chiamato• (c) Buffer overflow è mostrato in grigio