Organizzazione della Memoria (Unix)
Process A
Process B
• 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
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 Linux
Gestione della sicurezza in Windows
2000
Buchi 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
Struttura di un access token




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).
Security Descriptor
SACL=System Access
Control List (Log)
ACE=Access Control
Element
Ogni oggetto possiede un security decriptor
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
Scarica

Lucidi sulla gestione della sicurezza in Linux/Windows - ICAR-CNR