Sviluppo di software sicuro

Avvisi

Informazioni generali del corso

Nome del corso: Sviluppo di software sicuro [262-027]
Docenti:

Mauro Andreolini

Corso di Studio: Laurea Magistrale di Informatica
Tipologia: Caratterizzante
CFU: 9
Periodo Didattico: secondo trimestre

Recapiti docenti:

Edizioni precedenti del corso

Edizione 2020-21: disponibile qui.

Obiettivi formativi

L'insegnamento si prefigge i seguenti obiettivi formativi:
  • acuire la sensibilità ai rischi insiti in applicazioni non sicure;
  • saper valutare il grado di sicurezza di una applicazione esistente;
  • saper irrobustire una applicazione esistente;
  • saper progettare ex-novo un software con caratteristiche di sicurezza (security/safety/privacy by design).

Programma del corso

  • Cenni storici.
  • Vulnerabilità principali nelle applicazioni.
  • Strumenti per l'analisi di software esistente.
  • Ciclo di sviluppo del software sicuro.

Programma di esame

Testi

Materiale didattico di riferimento

Dispense fornite dal docente.

Materiale didattico di approfondimento

Orario delle lezioni

  • Lunedì: h. 14:00-16:00 (Aula M0.2 Dip. Mat.)
  • Martedì: h. 9:00-11:00 (Aula M0.2 Dip. Mat.)
  • Mercoledì: h. 11:00-13:00 (Aula M0.2 Dip. Mat.)

Lucidi delle lezioni

Lezione 1: Introduzione al corso

Data: lunedì 28 febbraio 2022 14:00 - 16:00
Slide:

Lezione 2: Cenni storici

Data: lunedì 28 febbraio 2022 14:00 - 16:00
Data: martedì 1 marzo 2022 9:00 - 11:00
Data: mercoledì 2 marzo 2022 11:00 - 13:00
Slide: Approfondimenti:

Lezione 3: Definizioni

Data: mercoledì 2 marzo 2022 11:00 - 13:00
Slide:

Lezione 4: Vulnerabilità software

Data: lunedì 7 marzo 2022 14:00 - 16:00
Data: martedì 8 marzo 2022 9:00 - 11:00
Data: mercoledì 9 marzo 2022 11:00 - 13:00
Data: lunedì 14 marzo 2022 14:00 - 16:00
Data: martedì 15 marzo 2022 9:00 - 11:00
Data: mercoledì 16 marzo 2022 11:00 - 13:00
Data: lunedì 21 marzo 2022 14:00 - 16:00
Slide: Approfondimenti:

Lezione 5: Esecuzione con privilegi elevati

Data: martedì 22 marzo 2022 9:00 - 11:00
Data: mercoledì 23 marzo 2022 11:00 - 13:00
Data: lunedì 28 marzo 2022 14:00 - 16:00
Data: martedì 29 marzo 2022 9:00 - 11:00
Data: mercoledì 30 marzo 2022 11:00 - 13:00
Data: lunedì 4 aprile 2022 14:00 - 16:00
Data: martedì 5 aprile 2022 9:00 - 11:00
Slide: Esempi: Approfondimenti:

Lezione 6: Iniezione locale

Data: mercoledì 6 aprile 2022 11:00 - 13:00
Data: lunedì 11 aprile 2022 14:00 - 16:00
Data: martedì 12 aprile 2022 9:00 - 11:00
Slide: Esempi: Approfondimenti:

Lezione 7: Iniezione remota

Data: mercoledì 13 aprile 2022 11:00 - 13:00
Data: mercoledì 20 aprile 2022 11:00 - 13:00
Data: martedì 26 aprile 2022 9:00 - 11:00
Data: mercoledì 27 aprile 2022 11:00 - 13:00
Slide: Esempi:

Lezione 8: Corruzione della memoria

Data: mercoledì 27 aprile 2022 11:00 - 13:00
Data: lunedì 2 maggio 2022 14:00 - 16:00
Data: martedì 3 maggio 2022 9:00 - 11:00
Data: mercoledì 4 maggio 2022 11:00 - 13:00
Data: lunedì 9 maggio 2022 14:00 - 16:00
Data: martedì 10 maggio 2022 9:00 - 11:00
Data: mercoledì 11 maggio 2022 11:00 - 13:00
Slide: Esempi: Approfondimenti:

Lezione 9: Attacchi Web

Data: lunedì 16 maggio 2022 14:00 - 16:00
Slide: Esempi:

Hall of Fame studenti (in ordine alfabetico e di data)

Nome studente Data Motivazione Punteggio parziale Punteggio totale
Alessia Golfieri venerdì 18 marzo 2022, 14:51:47

Lezione 4-vulnerabilita-software.pdf, slide 248-253: il punteggio Attack Surface nello scenario di attacco esterno è sbagliato per via di un errore di inserimento dei punteggi da parte del docente. Nello specifico, i punteggi di RP (ovvero 0.7) e RL (ovvero 0.9) sono stati inseriti nelle celle che riguardano le sigle relative alle risposte (RU per la metrica RP e S per la metrica RL) e non nelle celle del punteggio, lasciando così il punteggio a zero. La conseguenza è una diminuzione importante del sottopunteggio Attack Surface.

Le slide ed il foglio di calcolo sono stati corretti.

3/3 3/3
Rebecca Righetti mercoledì 20 aprile 2022, 12:37:38

Lezione 5-esecuzione-privilegi-elevati.pdf, slide 30: l'espressione "L'esecuzione durante l'esecuzione" è sbagliata; quella corretta è "L'elevazione durante l'esecuzione".

Le slide sono state corrette di conseguenza.

3/3 3/3
Rebecca Righetti lunedì 2 maggio 2022, 20:00:29

Lezione 5-esecuzione-privilegi-elevati.pdf, slide 107 e archivio esempi 5-esempi.tar.gz, programmi di esempio drop_rest_unix_dbg.c e drop_rest_unix_dbg2.c: lo statement di debug printf("In GNU/Linux: grep Gid /proc/$(pgrep -f drop_rest_unix_dbg)/status\n"); dovrebbe riferirsi al programma drop_rest_unix_dbg o drop_rest_unix_dbg2. Cercando sempre e solo drop_rest_unix_dbg, se uno studente esegue le due demo drop_rest_unix_dbg e drop_rest_unix_dbg2 simultaneamente, pgrep ritorna i GID di due processi senza specificare il PID, complicando l'analisi.

Le slide e il programma drop_rest_unix_dbg2.c sono stati corretti di conseguenza.

3/3 6/3
Federico Gibertoni giovedì 17 maggio 2022, 16:07:37

Archivio esempi 9-Web_for_Pentester.tar.gz, writeup SQL_Injections/Example8/example8.txt: la spiegazione dell'esecuzione alla cieca con OR al posto di AND è sballata.

Il writeup è stato rivisto e corretto di conseguenza.

3/3 3/3
Lorenzo Storchi giovedì 17 maggio 2022, 16:07:37

Archivio esempi 9-Web_for_Pentester.tar.gz, writeup SQL_Injections/Example8/example8.txt: la spiegazione dell'esecuzione alla cieca con OR al posto di AND è sballata.

Il writeup è stato rivisto e corretto di conseguenza.

3/3 3/3
Luca Bonacorsi mercoledì 8 giugno 2022, 10:49:37

Lezione 8-corruzione-memoria.pdf, slide 251: l'indirizzo di ESP è erroneamente 0xbffffca0 al posto del valore corretto 0xbffffc90.

Le slide sono state corrette di conseguenza.

3/3 3/3

Ricevimento studenti

Link ricevimento e tutorato venerdì 30/7/2021

Calendario d'esame per l'appello del 25/02/2022 (Aula M1.1).

Turno 1: ore 16:00 - 18:00

Modalità Nome e cognome del candidato
Presenza Davide Bondioli
Presenza Lorenzo Ferrari
Presenza Ali Fedy Haj
Presenza Andrea Montanari
Presenza Gagandeep Singh

Gli studenti che devono sostenere l'esame in presenza sono pregati di presentarsi all'ingresso dell'edificio MO 18 (Via Campi 213/b) all'orario di inizio del turno e dovranno uscire dall'aula di esame all'orario di fine turno.

Gli studenti che devono sostenere l'esame a distanza si devono collegare alla riunione virtuale al link seguente (pubblicato subito prima dell'appello).