Esame luglio 2016

Domanda 1
...

Descrivere il funzionamento di un attacco basato su “Buffer Overflow”

Risposta 1
...

Un attacco basato su buffer overflow sfrutta il riempimento del buffer con lo scopo di accedere a zone della memoria critiche per i programmi. I programmi vulnerabili a buffer overflow sono programmi che non allocano il buffer in maniera appropriata e che lasciano la potenziale possibilità all'utente di riempierlo quanto vuole.
Funzioni in C vulnerabili a questo tipo di attacco sono: gets(), strcpy().
Un attaccante con buone conoscenza delle convenzioni di chiamata dell'architettura target, potrebbe riempire il buffer con lo scopo di modificare il valore di altre variabili, o addirittura dell'indirizzo di ritorno con il fine di far eseguire codice arbitrario.

Domanda 2
...

Dimostrare che, se X|Y e X|Z, allora X|(iY+jZ) per ogni intero i,j

Risposta 2
...

Se allora vuol dire che il resto della divisione tra e fa : il che vuol dire che .
La stessa cosa la si può dire di :

Il che vuol dire che

Riporto di seguito la dimostrazione del professore, ma la dimostrazione sopra è corretta
Se

Se

Ovvero è uguale ad una costante () ed il resto è sempre .

Domanda 3
...

Spiegare il funzionamento e lo scopo della “Anti-replay window” in una VPN con IPSEC

Risposta 3
...

L'anti-replay window è un elemento utilizzato da IPsec per evitare attacchi di duplicazione reply attack.
L'anti-replay window consente al ricevente IPsec di non ricevere pacchetti duplicati, questo scopo viene raggiunto attraverso i numeri di sequenza.
La finestra del ricevente IPsec ha una certa dimensione.
I pacchetti ricevuti dal destinatario IPsec possono avere:

  • un numero di sequenza compreso tra gli estremi della finestra e in questo caso questo può corrispondere al numero di sequenza di un pacchetto ricevuto (il pacchetto viene rifiutato) o non ricevuto (il pacchetto viene contrassegnato come ricevuto);
  • un numero di sequenza inferiore rispetto al limite inferiore della finestra: in questo caso i pacchetti vengono rifiutati;
  • un numero di sequenza maggiore rispetto al limite superiore della finestra: in questo caso la dimensione della finestra si estende sino al numero di sequenza del pacchetto appena ricevuto.
    Vengono utilizzati i bit 0 e 1 per contrassegnare i pacchetti come ricevuti o non ricevuti.