CODICE 101811 ANNO ACCADEMICO 2022/2023 CFU 6 cfu anno 2 COMPUTER ENGINEERING 11160 (LM-32) - GENOVA 9 cfu anno 2 COMPUTER SCIENCE 10852 (LM-18) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE INF/01 LINGUA Inglese SEDE GENOVA PERIODO 1° Semestre MATERIALE DIDATTICO AULAWEB PRESENTAZIONE Il corso 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à. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI Being able 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. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO Essere in grado di analizzare il comportamento e valutare le proprietà di sicurezza dei programmi (sia avendo a disposizione il codice sorgente, sia, soprattutto, avendo a disposizione i soli binari), individuando le loro vulnerabilità. Inoltre, saper scrivere codice sicuro, eliminando eventuali vulnerabilità o applicando contromisure correttive. PREREQUISITI Familiarità con la programmazione in C (sopratutto, gestione diretta della memoria, uso di puntatori) e coi concetti di sistemi operativi MODALITA' DIDATTICHE Lezioni ed esercizi pratici ("compiti a casa"). Alcuni argomenti ed esercizi, esplicitamente marcati nel materiale di supporto, sono opzionali per chi ha la versione da 6 CFU in piano di studi. PROGRAMMA/CONTENUTO Introduzione Cosa sono i (programmi) binari e come vengono eseguiti Il processo di linking Analisi dinamica, tracing e instrumentation Analisi statica, reverse-engineering Scrivere codice sicuro, vulnerabilità comuni e valutazione della sicurezza Exploitation Alcuni argomenti ed esercizi, esplicitamente marcati nel materiale di supporto, sono opzionali per chi ha la versione da 6 CFU in piano di studi. TESTI/BIBLIOGRAFIA Il materiale di supporto e la bibliografia suggerita saranno disponibili su AulaWeb. DOCENTI E COMMISSIONI GIOVANNI LAGORIO Ricevimento: Orario di ricevimento: su appuntamento via email Commissione d'esame GIOVANNI LAGORIO (Presidente) ALESSANDRO ARMANDO DAVIDE ANCONA (Supplente) MAURA CERIOLI (Supplente) LEZIONI Orari delle lezioni L'orario di tutti gli insegnamenti è consultabile all'indirizzo EasyAcademy. ESAMI MODALITA' D'ESAME Sessione pratica e discussione orale. MODALITA' DI ACCERTAMENTO L'esame valuterà la capacità di analizzare i programmi per scovare eventuali vulnerabilità, di scrivere semplici "exploit" e applicare misure correttive. Calendario appelli Dati Ora Luogo Tipologia Note 30/01/2023 09:00 GENOVA Esame su appuntamento 16/02/2023 09:00 GENOVA Esame su appuntamento 16/02/2023 09:00 GENOVA Esame su appuntamento 01/06/2023 09:00 GENOVA Esame su appuntamento 30/06/2023 09:00 GENOVA Esame su appuntamento 01/09/2023 09:00 GENOVA Esame su appuntamento 11/09/2023 09:00 GENOVA Esame su appuntamento 15/09/2023 09:00 GENOVA Esame su appuntamento