Salta al contenuto principale della pagina

BINARY ANALYSIS AND SECURE CODING

CODICE 101811
ANNO ACCADEMICO 2021/2022
CFU
  • 9 cfu al 2° anno di 10852 COMPUTER SCIENCE (LM-18) - GENOVA
  • 6 cfu al 2° anno di 11160 COMPUTER ENGINEERING (LM-32) - 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

    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 su 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

    Data Ora Luogo Tipologia Note
    10/01/2022 09:00 GENOVA Esame su appuntamento
    17/02/2022 09:00 GENOVA Esame su appuntamento
    22/07/2022 09:00 GENOVA Esame su appuntamento
    16/09/2022 09:00 GENOVA Esame su appuntamento
    16/09/2022 09:00 GENOVA Esame su appuntamento