Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice...

15
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

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

Buffer Overflow

• (a) Il main è chiamato• (b) Il metodo A è chiamato• (c) Buffer overflow è mostrato in grigio