cerca
Tema d'Esame di Sicurezza e Privatezza - 02/07/2007
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Tema d'Esame di Sicurezza e Privatezza - 02/07/2007

Torna alla pagina di Sicurezza & Privatezza


 :: Appello d'esame di Sicurezza e Privatezza - 02/07/2007 ::

Domande

Rispondere brevemente ma in modo completo alle seguenti domande.

  1. In base alla politica Chinese wall un soggetto può trovarsi in una situazione in cui non è più in grado di eseguire alcuna operazione di scrittura. Si richiede di descrivere un semplice esempio che illustri questa situazione (l’esempio deve includere i dataset presenti nel sistema ed i relativi oggetti e le classi di conflitto di interesse).
  2. Si richiede di definire il principio del minimo privilegio. L’account root nei sistemi operativi Unix-based viola questa privilegio? Motivare la risposta.
  3. Nei sistemi operativi Unix-based la password prima di essere memorizzata viene combinata con un sale. A cosa serve il sale? L’uso del sale rende eventuali attacchi all’account di uno specifico utente più difficili rispetto ad attacchi simili eseguiti in sistemi dove il sale non viene usato? Motivare la risposta.
  4. Descrivere il metodo basato sulla matrice delle risorse condivise per l’identificazione di covert channel. Illustrare inoltre un esempio di possibile canale che può essere scoperto tramite tale tecnica.
  5. Descrivere il processo di creazione di un certificato digitale.
  6. Illustrare, tramite un esempio, perché le politiche discrezionarie sono vulnerabili a Trojan horse.
  7. Descrivere in modo preciso, illustrando anche il contenuto dello stack, in cosa consiste un attacco di overflow dello stack.

SOLUZIONE

1.
Nella politica Chinese Wall un utente può arrivare a non poter più eseguire la scrittura perché viene utilizzata la separazione dinamica dei privilegi: in principio non ci sono limitazioni per gli utenti, ma in seguito i privilegi vengono ristretti man mano che compiono operazioni, questo per evitare conflitti di interesse.
Esempio:

2.
Il principio del minimo privilegio sostiene che ogni processo relativo ad un programma deve essere eseguito solo con i privilegi che gli sono strettamente necessari.
Lo scopo del principio è quello di concedere il minimo numero di privilegi possibile per fare in modo di limitare la possibilità di abusi e danni per violazioni. Quindi ogni permesso non esplicitamente definito viene negato.
L'utente root nei sistemi unix viola questo principio perché ha accesso amministrativo al sistema e pertanto può accedere a qualunque file del sistema.

3.
Il sale è un numero di 12 bit che viene assegnato a ciascun utente(diverso per ciascun utente) e viene memorizzato in chiaro nel file delle password.
Il sale viene utilizzato per risolvere il problema dell'inserimento da parte degli utenti di password uguali che possono essere quindi confuse, poiché vengono crittate utilizzando la stessa chiave.
Quindi gli attacchi saranno più difficili perché il file delle password non sarà formato solamente dalle password crittate tutte allo stesso modo, ma dalla concatenazione del sale con la password. Non è quindi sufficiente aprire il file delle password perché queste ultime sono crittate tutte in modo diverso.

4.
La matrice delle risorse condivise sfrutta il fatto che la base di ogni covert channel sono le risorse condivise. Si costruisce una matrice M dove le righe sono le risorse e le colonne sono i processi.

  • M[i,j]: R se il processo j può leggere o osservare la risorsa i
  • M[i,j]: M se il processo j può creare o modificare o cancellare la risorsa i

Esempio:

E' un pattern sospetto perché la risorsa 2 è condivisa dal processo 2 e dal processo 4(modificata da uno e letta dall'altro). Il processo 2 legge il contenuto della risorsa 4 e la trasmette alla risorsa 2, il processo 4 quindi può leggere indirettamente l'informazione della risorsa 4, cosa che direttamente non potrebbe fare.
Bisogna completare la matrice con il flusso potenziale di informazione e cercare eventuali flussi indesiderati, in questo caso:

5.
La creazione di un certificato digitale avviene tramite queste fasi:

  • l'utente deve provare la propria identità alla CA (certification authority)
  • la CA verifica l'autenticità della chiave
    • coppia chiave pubblica/privata generata dalla CA
    • coppia chiave pubblica/privata generata dall'utente
  • la CA crea un certificato digitale inserendo la chiave pubblica e i dati identificativi dell'utente
  • la CA firma il certificato con la propria chiave privata

6.
Un Trojan Horse è un programma di utilità che contiene del codice nascosto che esegue funzioni non legittime. Il problema è che le politiche discrezionarie controllano solo gli accessi diretti, non effettuano nessun controllo su cosa accade all'informazione una volta rilasciata. Quindi tutto ciò che l'applicazione esegue(quindi anche il codice nascosto) dipende dall'identità dell'utente che ha invocato l'applicazione e dai suoi permessi.

Esempio:

Nell'esempio le istruzioni readMarket e writeStolen sono legittime perché ci si basa sull'identità di chi ha lanciato l'applicazione, cioè Jane. Quindi John rispettando la politica discrezionaria riesce ad ottenere informazioni non legittime.

7.
Un attacco di overflow dello stack porta al buffer overflow, cioè si inseriscono più dati di quanti il buffer ne possa contenere andando quindi a sovrascrivere zone di memoria adiacenti, quindi provocando il blocco del programma oppure il controllo del sistema.
Il contenuto dello stack è il seguente:

ed un eventuale buffer overflow comporterebbe la seguente modifica allo stack:

L'area sovrascritta può contenere un nuovo puntatore che indirizza ad una porzione di codice malizioso.

Note:

  • l'attaccante deve sapere esattamente la posizione nello stack in cui si troverà il buffer quando verrà chiamata la funzione
  • un overflow di un byte non comporta la variazione dell'indirizzo di ritorno, ma il puntatore al frame precedente.

Esercizio 2

Si consideri un sistema che applica una politica mandatoria per la segretezza dove l'insieme dei livelli è L={VC>C>P} e l'insieme delle categorie è C={Medical (M), Financial (F), Admin (A)}.
Supponendo che la classificazione delle variabili a, b, c, d, i sia:

λ(a)=<VC,{P}> ; λ(b)=<C,{C}> ; λ(c)=<P,{}> ; λ(d)=<VC,{M,A}> ; λ(i)=<C,{M,F}> .

x= a*b
SWITCH (i)

CASE 1: IF (c>=10) THEN {
y=c-10;
}
ELSE{ IF (x>0) THEN {
z=5;
}ELSE{
w=a-a;
}
}

DEFOULT: j=d-d+2;
}

Si richiede di determinare la classe minima da assegnare alle variabili x, y, z, w, j in modo tale da evitare flussi di informazioni non desiderati, cioè che violano la politica mandatoria per la sicurezza.

SOLUZIONE

  • Variabile x: x= LUB (λ(a), λ(b))
    dove λ(a)=<VC,{P}> e λ(b)=<C,{C}>.
    Il LUB fra queste due clearance è: <VC,{P,C}>.
  • Variabile y: y= LUB (λ(i), λ(c))
    dove λ(i)=<C,{M,F}> e λ(c)=<P,{}>.
    Il LUB fra queste due clearance è: <C,{M,F}>.
  • Variabile z: z= LUB (λ(x), λ(i), λ(c))
    dove λ(x)=<VC,{M,A}> , λ(i)=<C,{M,F}> , λ(c)=<P,{}>.
    Il LUB fra queste due clearance è: <VC,{M,A,F}>.
  • Variabile w: w= LUB (λ(i), λ(c), λ(x), λ(a))
    dove λ(i)=<C,{M,F}>, λ(c)=<P,{}>, λ(x)=<VC,{M,A}> e λ(a)=<VC,{P}>.
    Il LUB fra queste due clearance è: <VC,{M,F,A}>.
  • Variabile j: j=LUB λ(i)
    dove λ(i)=<C,{M,F}>. Il risultato è la classe stessa in quato il lub di una classe è la classe stessa.