Sicurezza informatica
A.A. 2019/2020
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
Modulo Low-Level Attacks
1 - Introduzione
2 - Buffer Overflow
3 -Lab Buffer overflow
4- Heap Overflow Lab Heap Overflow
5 -Use after Free (UAF)
6 -Lab UAF
Modulo Low-Level Security: Defense
1- Introduzione
2- Memory Safety
3- Type Safety + Avoid Exploitation
4- ROP Return Oriented Programming
5- ROP lab
6- CFI
Modulo Static and Dynamic Flow
1 - Introduzione
2- Static Analysis
3- Data Flow analysis
Modulo Symbolic Execution
1 - Introduzione
2 - Symbolic Execution
3 - Lab of Symbolic Execution
1 - Introduzione
2 - Buffer Overflow
3 -Lab Buffer overflow
4- Heap Overflow Lab Heap Overflow
5 -Use after Free (UAF)
6 -Lab UAF
Modulo Low-Level Security: Defense
1- Introduzione
2- Memory Safety
3- Type Safety + Avoid Exploitation
4- ROP Return Oriented Programming
5- ROP lab
6- CFI
Modulo Static and Dynamic Flow
1 - Introduzione
2- Static Analysis
3- Data Flow analysis
Modulo Symbolic Execution
1 - Introduzione
2 - Symbolic Execution
3 - Lab of Symbolic Execution
Prerequisiti
Al fine di poter trarre il massimo profitto dal corso gli studenti interessati a frequentarlo dovranno possedere i seguenti requisiti:
1 - Aver frequentato l'insegnamento di sistemi operativi.
2 - Aver frequentato l'insegnamento di Sicurezza 1
3 - Buona Conoscenza del linguaggio C
1 - Aver frequentato l'insegnamento di sistemi operativi.
2 - Aver frequentato l'insegnamento di Sicurezza 1
3 - Buona Conoscenza del linguaggio C
Metodi didattici
Didattica Frontale.
Materiale di riferimento
home page dell'insegnamento
http://security.di.unimi.it/sicurezza1920/sec2.shtmls
Github con esercizi
https://github.com/andrealan/Software-Security-Lab
Sito Ariel dell'insegnamento
https://alanzisi.ariel.ctu.unimi.it/v5/Home/
http://security.di.unimi.it/sicurezza1920/sec2.shtmls
Github con esercizi
https://github.com/andrealan/Software-Security-Lab
Sito Ariel dell'insegnamento
https://alanzisi.ariel.ctu.unimi.it/v5/Home/
Modalità di verifica dell’apprendimento e criteri di valutazione
L'esame consistera in un test con domande teoriche sul programma e una prova pratica che vertera` nella risoluzione di esercizi di sicurezza quali per esempio i Memory Errors.
Docente/i