Sicurezza informatica
A.A. 2023/2024
Obiettivi formativi
In questo insegnamento verranno esplorate le foundation del software security. e considerate importanti vulnerabilita` software e attacchi low-level come heap overflow, use after free e buffer overflow. Verranno inoltre illustrate ed analizzate le techniche di difesa per prevenire e mitigare questi attacchi includendo meccanismi di testing avanzato e di program analysis come la symbolic execution e il fuzzing.
Risultati apprendimento attesi
Lo studente che avrà superato l'esame di questo insegnamento con successo sarà in grado di applicare tecniche di attacco di base sui low-level attacks come buffer overflow, heap overflow e use after free. Avra` compreso le tecniche di difesa generali dei sistemi e sarà in grado di applicare techniche avanzate di testing e program analysis su linguaggi C e C++. Lo studente che affronta questo insegnamento dovrà avere un background di base sulla programmazione, una conoscenza dei linguaggi C/C++ e degli algoritmi.
Periodo: Primo semestre
Modalità di valutazione: Esame
Giudizio di valutazione: voto verbalizzato in trentesimi
Corso singolo
Questo insegnamento non può essere seguito come corso singolo. Puoi trovare gli insegnamenti disponibili consultando il catalogo corsi singoli.
Programma e organizzazione didattica
Edizione unica
Responsabile
Periodo
Primo semestre
Programma
1) Modulo Low-Level Attacks
-Buffer Overflow
-Lab Buffer overflow
-Heap Overflow
-Lab Heap Overflow
-Use after Free (UAF)
-Lab UAF
2) Modulo Low-Level Security: Defense
- Memory Safety
- Type Safety + Avoid Exploitation
- ROP Return Oriented Programming
- ROP lab
- CFI
3) Modulo Static and Dynamic Flow Analysis
- Introduction
- Static Analysis
- Data Flow analysis
4) Modulo Symbolic Execution
- Symbolic Execution
- Lab of Symbolic Execution
-Buffer Overflow
-Lab Buffer overflow
-Heap Overflow
-Lab Heap Overflow
-Use after Free (UAF)
-Lab UAF
2) Modulo Low-Level Security: Defense
- Memory Safety
- Type Safety + Avoid Exploitation
- ROP Return Oriented Programming
- ROP lab
- CFI
3) Modulo Static and Dynamic Flow Analysis
- Introduction
- Static Analysis
- Data Flow analysis
4) Modulo Symbolic Execution
- Symbolic Execution
- Lab of Symbolic Execution
Prerequisiti
Al fine di massimizzare il valore ottenuto dal corso, gli studenti interessati a partecipare devono soddisfare i seguenti requisiti:
1- Possedere competenze di base nella gestione di un sistema operativo Linux/Windows.
2- Essere in grado di scrivere semplici programmi in linguaggio C.
3- Avere familiarità con l'uso di un emulatore come QEMU o VMware.
Si precisa che gli studenti che non soddisfano completamente questi requisiti possono comunque partecipare al corso. Tuttavia, saranno responsabili di acquisire autonomamente le conoscenze e le abilità menzionate in precedenza.
1- Possedere competenze di base nella gestione di un sistema operativo Linux/Windows.
2- Essere in grado di scrivere semplici programmi in linguaggio C.
3- Avere familiarità con l'uso di un emulatore come QEMU o VMware.
Si precisa che gli studenti che non soddisfano completamente questi requisiti possono comunque partecipare al corso. Tuttavia, saranno responsabili di acquisire autonomamente le conoscenze e le abilità menzionate in precedenza.
Metodi didattici
Le lezioni hanno una durata complessiva di 4 ore e vengono suddivise in due parti: una lezione teorica della durata di 2 ore e una lezione di laboratorio della durata di 2 ore.
Materiale di riferimento
Materiale di Riferimento:
- Sito Ariel di riferimento Sito del Corso (Ariel)
- GitHub repository Security Exercise/ Piattaforma di Training di Pwn-College
- Slide fornite dal docente
- paper in riferimento all'argomento della lezione
- Sito Ariel di riferimento Sito del Corso (Ariel)
- GitHub repository Security Exercise/ Piattaforma di Training di Pwn-College
- Slide fornite dal docente
- paper in riferimento all'argomento della lezione
Modalità di verifica dell’apprendimento e criteri di valutazione
Il criterio di valutazione sarà suddiviso in due parti: una parte scritta (quiz) che riguarderà gli aspetti teorici del corso e una parte pratica che consisterà in un'esercitazione pratica in cui gli studenti dovranno risolvere degli esercizi di exploitation già discussi durante le lezioni di laboratorio. La valutazione finale sarà ottenuta mediante una media ponderata dei due voti.
Siti didattici
Docente/i