L'insegnamento mira a sensibilizzare gli sviluppatori sul fatto che i programmi (scritti male) possono essere sfruttati da un attaccante per scopi potenzialmente dannosi, facendo agire i programmi in modi non voluti dagli autori. Questo obiettivo viene raggiunto mostrando come i programmi binari possono essere analizzati e come eventuali vulnerabilità trovate possano essere sfruttate. Inoltre, il corso descrive come progettare e scrivere software sicuro, cioè privo di tali vulnerabilità. L'analisi in contesti avversariali, come, l'analisi del malware, verrà inoltre discussa.
Learning how to write secure code, analyze the behavior and assess security properties of source and binary programs, pinpointing and fix their vulnerabilities or apply corrective counter-measures.
Al termine del corso gli studenti saranno in grado di:
Per il percorso da 9-CFU, gli studenti saranno inoltre in grado di analizzare programmi in contesti avversariali (per esempio, campioni di malware).
Familiarità con la programmazione in C (sopratutto, gestione diretta della memoria, uso di puntatori) e coi concetti di sistemi operativi
Lezioni frontali e attività progettuali, che consistono in alcuni compiti.
Alcuni argomenti ed esercizi, esplicitamente marcati nel materiale di supporto, sono opzionali per chi ha la versione da 6 CFU in piano di studi.
Il materiale di supporto e la bibliografia suggerita saranno disponibili su AulaWeb.
Ricevimento: Orario di ricevimento: su appuntamento via email
GIOVANNI LAGORIO (Presidente)
ALESSANDRO ARMANDO
MAURA CERIOLI (Presidente Supplente)
DAVIDE ANCONA (Supplente)
Sessione pratica e discussione orale.
L'esame valuterà la capacità di analizzare i programmi per scovare eventuali vulnerabilità, di scrivere semplici "exploit" e applicare misure correttive.
Agli studenti da 9-CFU potrebbero venir assegnati dei campioni di malware (o simil-malware) da analizzare