PROGRAMMAZIONE SICURA

Informatica PROGRAMMAZIONE SICURA

0522500065
DIPARTIMENTO DI INFORMATICA
CORSO DI LAUREA MAGISTRALE
INFORMATICA
2022/2023



ANNO ORDINAMENTO 2016
SECONDO SEMESTRE
CFUOREATTIVITÀ
648LEZIONE
Obiettivi
L'INSEGNAMENTO INTRODUCE I CONCETTI FONDAMENTALI DELLA PROGRAMMAZIONE SICURA ED APPROFONDISCE LE METODOLOGIE E LE TECNICHE NECESSARIE PER LA VALUTAZIONE DELLA SICUREZZA DI UN PROGRAMMA.
OBIETTIVO DELL’INSEGNAMENTO È DI FORNIRE AGLI STUDENTI UN INSIEME DI LINEE GUIDA PER SCRIVERE PROGRAMMI SICURI. LE LINEE GUIDA SONO SVILUPPATE COME UN INSIEME DI LEZIONI APPRESE DA CASI DI STUDIO E RIGUARDANO DIVERSI LINGUAGGI DI PROGRAMMAZIONE E DI SCRIPTING, TRA CUI C, PERL, PHP E PYTHON, E DIVERSI SISTEMI OPERATIVI, CON PARTICOLARE ENFASI SUI SISTEMI UNIX-LIKE.
IN PARTICOLARE, DURANTE IL CORSO SARANNO STUDIATE IN PROFONDITÀ ALCUNE TIPOLOGIE DI VULNERABILITÀ, ALLO SCOPO DI COMPRENDERE SOTTO QUALI IPOTESI SI VERIFICANO, CHE CONSEGUENZE HANNO E COME SI POSSONO MITIGARE. L’INDAGINE AVRÀ UNA FORTE CONNOTAZIONE PRATICA: LO STUDENTE AVRÀ A DISPOSIZIONE DIVERSE MACCHINE VIRTUALI SU CUI FARE PROVE IN PIENA AUTONOMIA E LIBERTÀ. LE MACCHINE VIRTUALI USATE DURANTE IL CORSO PROPONGONO SFIDE CTF RELATIVE A DIVERSE TEMATICHE, QUALI L’INIEZIONE LOCALE E REMOTA DI CODICE E LA CORRUZIONE DELLA MEMORIA. CTF È L’ACRONIMO DI “CAPTURE THE FLAG” (CATTURA LA BANDIERINA): SI TRATTA DI COMPETIZIONI DI SICUREZZA INFORMATICA IN CUI LO STUDENTE È MESSO ALLA PROVA ALLO SCOPO DI RAGGIUNGERE UNO SPECIFICO OBIETTIVO (LA BANDIERINA), CHE INDICA CHE LA SFIDA È STATA VINTA.

CONOSCENZA E CAPACITÀ DI COMPRENSIONE
GLI STUDENTI ACQUISIRANNO LA CONOSCENZA E LA COMPRENSIONE:
•DEI PRINCIPALI CONCETTI E DELLE PRINCIPALI PECULIARITÀ ALLA BASE DELLA PROGRAMMAZIONE SICURA.
•DELLE TIPOLOGIE DI DEBOLEZZE E VULNERABILITÀ ESISTENTI, ANCHE IN RELAZIONE AD INCIDENTI DI SICUREZZA CHE SI SONO VERIFICATI NEL PASSATO.
•DELLE DIVERSE TECNICHE PER LA GESTIONE DEI PRIVILEGI NEI SISTEMI UNIX-LIKE.
•DELLE DIVERSE TECNICHE PER L’INIEZIONE LOCALE DI CODICE.
•DELLE DIVERSE TECNICHE PER L’INIEZIONE REMOTA DI CODICE.
•DELLE DIVERSE TECNICHE PER LA CORRUZIONE DELLA MEMORIA.

CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE
AL TERMINE DEL CORSO GLI STUDENTI SARANNO IN GRADO DI:
•VALUTARE LE DEBOLEZZE E LE POTENZIALI VULNERABILITÀ ALL’INTERNO DI PROGRAMMI, AL FINE DI EVITARE CHE ESSE FORNISCANO LE BASI PER UN EXPLOIT DA PARTE DI UN ATTACCANTE.
•CONSULTARE GLI ARCHIVI DELLE DEBOLEZZE E DELLE VULNERABILITÀ ESISTENTI.
•RISOLVERE SFIDE DI TIPO CTF RELATIVE ALLE DIVERSE TECNICHE APPRESE (INIEZIONE LOCALE, INIEZIONE REMOTA, CORRUZIONE DELLA MEMORIA).
•PROGETTARE MITIGAZIONI PER LE DEBOLEZZE INDIVIDUATE ALL’INTERNO DELLE DIVERSE SFIDE CTF.


Prerequisiti
PER IL PROFICUO RAGGIUNGIMENTO DEGLI OBIETTIVI PREFISSATI È NECESSARIA LA CONOSCENZA DELLE RETI DI CALCOLATORI, DEI SISTEMI OPERATIVI E DEI PRINCIPALI LINGUAGGI DI PROGRAMMAZIONE.
Contenuti
IL CORSO SI CONCENTRA SULLE METODOLOGIE E LE TECNICHE NECESSARIE PER LA VALUTAZIONE DELLA SICUREZZA DI UN PROGRAMMA. IN DETTAGLIO, IL CORSO AFFRONTA PRINCIPALMENTE I SEGUENTI ARGOMENTI:
-INTRODUZIONE ALLA PROGRAMMAZIONE SICURA [2 ORE DI LEZIONE].
-CENNI STORICI E TERMINOLOGIA [4 ORE DI LEZIONE].
-VULNERABILITÀ E DEBOLEZZE DEL SOFTWARE [6 ORE DI LEZIONE].
-LA GESTIONE DEI PRIVILEGI NEI SISTEMI OPERATIVI UNIX-LIKE [6 ORE DI LEZIONE].
-TECNICHE PER L’INIEZIONE LOCALE DI CODICE: MANIPOLAZIONE MEDIANTE VARIABILI DI AMBIENTE E MEDIANTE L’UTILIZZO DI LIBRERIE CONDIVISE [10 ORE DI LEZIONE].
-TECNICHE PER L’INIEZIONE REMOTA DI CODICE: SQL INJECTION, CROSS-SITE SCRIPTING, CROSS-SITE REQUEST FORGERY [10 ORE DI LEZIONE].
-TECNICHE PER LA CORRUZIONE DELLA MEMORIA: MODIFICA DEL FLUSSO DI ESECUZIONE DI UN PROGRAMMA ED ESECUZIONE DI CODICE ARBITRARIO MEDIANTE STACK-BASED BUFFER OVERFLOW. [6 ORE DI LEZIONE].
-TECNICHE PER L'ESTRAZIONE DI INFORMAZIONI DA FILE BINARI E PER LA REVERSE ENGINEERING. [4 ORE DI LEZIONE].

Metodi Didattici
L’ATTIVITÀ DI FORMAZIONE, ORIENTATA A FORNIRE SIA LE CONOSCENZE METODOLOGICHE CHE TECNOLOGICHE PER LAVORARE NELL’AMBITO DELLA VALUTAZIONE DELLA SICUREZZA DEI PROGRAMMI, PREVEDE 6 CFU, CORRISPONDENTI A 48 ORE DI LEZIONE FRONTALE. IL CORSO PREVEDE SIA LEZIONI A CARATTERE TEORICO, PER IL TRASFERIMENTO DELLE CONOSCENZE NECESSARIE ALLA COMPRENSIONE DEGLI ARGOMENTI TRATTATI, CHE LEZIONI DAL CONTENUTO PRATICO, IN CUI SARANNO UTILIZZATE DIVERSE MACCHINE VIRTUALI PER LA SOLUZIONE DI SFIDE CTF RELATIVE A TUTTI GLI ARGOMENTI ILLUSTRATI AL CORSO.

GLI STUDENTI SONO GUIDATI AD APPRENDERE IN MANIERA CRITICA E RESPONSABILE TUTTO CIÒ CHE VIENE SPIEGATO LORO IN CLASSE, E AD ARRICCHIRE LE PROPRIE CAPACITÀ DI GIUDIZIO ATTRAVERSO LO STUDIO DEL MATERIALE DIDATTICO MESSO A DISPOSIZIONE ATTRAVERSO IL SITO WEB DEL CORSO.

LA FREQUENZA È FORTEMENTE CONSIGLIATA. GLI STUDENTI DEVONO ESSERE PREPARATI A TRASCORRERE UNA CONGRUA QUANTITÀ DI TEMPO NELLO STUDIO AL DI FUORI DELLE LEZIONI. UNA PREPARAZIONE SODDISFACENTE RICHIEDE IN MEDIA DUE ORE DI STUDIO PER CIASCUNA ORA TRASCORSA IN AULA. INOLTRE, È FONDAMENTALE TRASCORRERE UNA CONGRUA QUANTITÀ DI TEMPO IN ESERCITAZIONI PRATICHE, DA EFFETTUARE IN MANIERA INDIVIDUALE ED IN PIENA AUTONOMIA.
Verifica dell'apprendimento
IL RAGGIUNGIMENTO DEGLI OBIETTIVI DELL’INSEGNAMENTO È CERTIFICATO MEDIANTE IL SUPERAMENTO DI UN ESAME CON VALUTAZIONE IN TRENTESIMI. L'ESAME PREVEDE LA REALIZZAZIONE DI UN’ATTIVITÀ PROGETTUALE INDIVIDUALE O DI GRUPPO, PREVENTIVAMENTE CONCORDATA CON LA DOCENTE, ED UNA PROVA ORALE. L’ATTIVITÀ PROGETTUALE PUÒ RIGUARDARE SIA L’ANALISI E LA SOLUZIONE DI SFIDE CTF NON TRATTATE A LEZIONE, CHE LO STUDIO APPROFONDITO DI SPECIFICHE VULNERABILITÀ. LA PROVA ORALE CONSISTE SIA NELLA DISCUSSIONE DEGLI ASPETTI SALIENTI RELATIVI AL PROGETTO REALIZZATO CHE IN DOMANDE RELATIVE AI CONTENUTI TEORICI E METODOLOGICI INDICATI NEL PROGRAMMA DELL’INSEGNAMENTO. LA PROVA ORALE È FINALIZZATA AD ACCERTARE IL LIVELLO DI CONOSCENZA E MATURITÀ RAGGIUNTO DALLO STUDENTE SUI CONTENUTI METODOLOGICI, TECNICI E STRUMENTALI DEL PROGRAMMA DEL CORSO, OLTRE CHE LA LORO APPLICAZIONE ALL’ATTIVITÀ PROGETTUALE SVOLTA.

LA VALUTAZIONE FINALE SI BASERÀ SUI SEGUENTI ELEMENTI:
- CAPACITÀ DI MOTIVARE ED ARGOMENTARE OPPORTUNAMENTE LE SCELTE EFFETTUATE PER CONDURRE L’ATTIVITÀ PROGETTUALE.
- CAPACITÀ DI ESPORRE, MEDIANTE TERMINOLOGIA APPROPRIATA, L’ATTIVITÀ PROGETTUALE CONDOTTA E I CONTENUTI TEORICI E METODOLOGICI INDICATI NEL PROGRAMMA DELL’INSEGNAMENTO.

LO STUDENTE RAGGIUNGE IL LIVELLO DI ECCELLENZA SE SI RIVELA IN GRADO DI AFFRONTARE CON CONSAPEVOLEZZA PROBLEMI INCONSUETI O NON ESPRESSAMENTE TRATTATI A LEZIONE. LA VOTAZIONE DIPENDERÀ DAL GRADO DI MATURITÀ ACQUISITO SUI CONTENUTI E GLI STRUMENTI METODOLOGICI ESPOSTI NEL CORSO, TENENDO CONTO ANCHE DELLA QUALITÀ DELL’ESPOSIZIONE E DELL’AUTONOMIA DI GIUDIZIO DIMOSTRATA.
Testi
MICHAEL HOWARD, DAVID LEBLANC
WRITING SECURE CODE: PRACTICAL STRATEGIES AND PROVEN TECHNIQUES FOR BUILDING SECURE APPLICATIONS IN A NETWORKED WORLD
MICROSOFT PRESS, 2002
ISBN: 0735617228
MICHAEL HOWARD, DAVID LEBLANC, JOHN VIEGA
24 DEADLY SINS OF SOFTWARE SECURITY: PROGRAMMING FLAWS AND HOW TO FIX THEM
MCGRAW HILL, 2009 ISBN: 0071626751
Altre Informazioni
MATERIALE AGGIUNTIVO: SLIDE E DISPENSE FORNITE DALLA DOCENTE MEDIANTE IL SITO WEB DEL CORSO

PER QUALSIASI ALTRA INFORMAZIONE È POSSIBILE CONTATTARE LA DOCENTE ALL'INDIRIZZO: BMASUCCI@UNISA.IT
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2022-08-05]