SECURE PROGRAMMING

Pasquale FOGGIA SECURE PROGRAMMING

0622700096
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA
CORSO DI LAUREA MAGISTRALE
INGEGNERIA INFORMATICA
2024/2025

ANNO CORSO 2
ANNO ORDINAMENTO 2022
PRIMO SEMESTRE
CFUOREATTIVITÀ
648LEZIONE
216LABORATORIO
18ESERCITAZIONE
Obiettivi
L’INSEGNAMENTO ILLUSTRA LE PRINCIPALI FONTI DI VULNERABILITÀ CHE SI PRESENTANO A LIVELLO DI PROGRAMMAZIONE E L’IMPIEGO DEGLI STRUMENTI NECESSARI PER MITIGARE ED ELIMINARE TALI VULNERABILITÀ.

CONOSCENZA E CAPACITÀ DI COMPRENSIONE
PRINCIPI E PRATICHE DELLA PROGRAMMAZIONE SICURA. PRINCIPALI FONTI DI VULNERABILITÀ CHE SI PRESENTANO A LIVELLO DI PROGRAMMAZIONE E METODOLOGIE DI SVILUPPO PER MITIGARE ED ELIMINARE LE PRINCIPALI VULNERABILITÀ. MECCANISMI DI SICUREZZA NUOVI ED EMERGENTI BASATI SUL LINGUAGGIO, COMPRESE LE MODALITÀ PER SPECIFICARE E APPLICARE LE POLITICHE DI SICUREZZA IN MODO STATICO E DINAMICO (AD ESEMPIO, PER APPLICARE I CONTROLLI DI ACCESSO O LE POLITICHE DEL FLUSSO DI INFORMAZIONI).

CONOSCENZA E CAPACITÀ DI COMPRENSIONE APPLICATE
PROGETTARE ED IMPLEMENTARE APPLICAZIONI ADOTTANDO LE PRINCIPALI TECNICHE DI SECURE PROGRAMMING.
UTILIZZARE IN MODO APPROPRIATO ED EFFICACE LE FUNZIONALITÀ DI SICUREZZA, COME L'AUTENTICAZIONE E LA CRITTOGRAFIA, FORNITE DALLE LIBRERIE DEI PIÙ COMUNI LINGUAGGI DI PROGRAMMAZIONE (ES., JAVA, C, PYTHON). IDENTIFICARE POSSIBILI ERRORI DI PROGRAMMAZIONE RISPETTO ALLA SICUREZZA DURANTE LA REVISIONE DEL CODICE NEI PIÙ COMUNI LINGUAGGI DI PROGRAMMAZIONE. DEFINIRE UNA METODOLOGIA PER I TEST DI SICUREZZA E UTILIZZARE STRUMENTI APPROPRIATI NELLA SUA IMPLEMENTAZIONE. APPLICARE NUOVI MODELLI E STRUMENTI DI PROGRAMMAZIONE SECURITY-ENHANCED CHE AIUTANO A GARANTIRE GLI OBIETTIVI DI SICUREZZA
Prerequisiti
È ALTAMENTE CONSIGLIATA LA CONOSCENZA DELLA PROGRAMMAZIONE NEI LINGUAGGI C E JAVA E LA CONOSCENZA DEI DBMS RELAZIONALI E DEL LINGUAGGIO SQL.
È CONSIGLIATA LA CONOSCENZA DELLE PRINCIPALI FUNZIONALITÀ DI UN SISTEMA OPERATIVO, CON PARTICOLARE RIFERIMENTO AI SISTEMI DELLA FAMIGLIA UNIX.
È INOLTRE CONSIGLIATA LA CONOSCENZA DELLE ARCHITETTURE E DEI PROTOCOLLI UTILIZZATI PER LE RETI DI CALCOLATORI.
È INFINE CONSIGLIATA LA CONOSCENZA DELLE PRINCIPALI TECNOLOGIE DI CRITTOGRAFIA A CHIAVE PUBBLICA E A CHIAVE PRIVATA.
Contenuti
INTRODUZIONE ALLA PROGRAMMAZIONE SICURA. WEAKNESS, VULNERABILITY, EXPLOIT. REPOSITORY DI VULNERABILITY. SISTEMI DI SCORING. (LEZ:2/ESE:0/LAB:0)

BUFFER OVERRUN. (LEZ:2/ESE:0/LAB:0)

INTEGER OVERFLOW. (LEZ:2/ESE:0/LAB:0)

COMMAND INJECTION. (LEZ:2/ESE:0/LAB:0)

INFORMATION LEAKAGE. (LEZ:2/ESE:0/LAB:0)

FUZZY TESTING CON AFL. (LEZ:0/ESE:0/LAB:2)

RACE CONDITIONS. (LEZ:2/ESE:0/LAB:0)

SQL INJECTION. (LEZ:2/ESE:0/LAB:0)

MEMORY MANAGEMENT ERRORS. (LEZ:2/ESE:0/LAB:0)

DESERIALIZATION OF UNTRUSTED DATA. (LEZ:2/ESE:0/LAB:0)

FAILURE TO HANDLE ERRORS CORRECTLY. (LEZ:2/ESE:0/LAB:0)

FORMAT STRING PROBLEMS. (LEZ:2/ESE:0/LAB:0)

CONCETTI FONDAMENTALI DELLE WEB APPLICATIONS. (LEZ:4/ESE:0/LAB:0)

STATIC FILES PROBLEMS. (LEZ:2/ESE:0/LAB:0)

SERVER-SIDE XSS. (LEZ:2/ESE:0/LAB:0)

CLIENT-SIDE XSS. (LEZ:2/ESE:0/LAB:0)

CSRF. (LEZ:2/ESE:0/LAB:0)

MAGIC URLS PREDICTABLE COOKIES AND HIDDEN FORM FIELDS. (LEZ:2/ESE:0/LAB:0)

SECURITY TESTING WITH ZAP. (LEZ:0/ESE:2/LAB:2)

CLICKJACKING AND CONTENT SNIFFING. (LEZ:2/ESE:0/LAB:0)

SECURITY TESTING WITH SONARQUBE. (LEZ:0/ESE:0/LAB:2)

POOR USABILITY PROBLEMS. (LEZ:2/ESE:0/LAB:0)

UNCONTROLLED RESOURCE CONSUMPTION. (LEZ:2/ESE:0/LAB:0)

SECURITY TESTING WITH FLAWFINDER. (LEZ:0/ESE:0/LAB:2)

PROBLEMS WITH SOFTWARE UPDATES. (LEZ:2/ESE:0/LAB:0)

SECURITY TESTING WITH BANDIT. (LEZ:0/ESE:0/LAB:2)

THREAT MODELING AND THE STRIDE METHODOLOGY. (LEZ:2/ESE:0/LAB:0)

THREAT MODELING WITH OWASP THREAT DRAGON. (LEZ:0/ESE:4/LAB:2)

WEAK RANDOM NUMBERS. (LEZ:2/ESE:0/LAB:0)

USING THE WRONG CRYPTOGRAPHY. (LEZ:2/ESE:0/LAB:0)

SECURITY TESTING WITH SPOTBUGS AND FINDSECBUGS. (LEZ:0/ESE:0/LAB:2)

TOTALE: LEZ:52/ESE:6/LAB:14
Metodi Didattici
L’INSEGNAMENTO CONTEMPLA LEZIONI TEORICHE, ESERCITAZIONI IN AULA ED ESERCITAZIONI PRATICHE DI LABORATORIO.
Verifica dell'apprendimento
IL RAGGIUNGIMENTO DEGLI OBIETTIVI DELL’INSEGNAMENTO E CERTIFICATO MEDIANTE IL SUPERAMENTO DI UN ESAME CON VALUTAZIONE IN TRENTESIMI. L'ESAME PREVEDE UN COLLOQUIO ORALE INDIVIDUALE.
IL COLLOQUIO ORALE MIRA A VERIFICARE IL LIVELLO DELLE CONOSCENZE E DELLA CAPACITÀ DI COMPRENSIONE DEGLI ARGOMENTI AFFRONTATI NEL CORSO, NONCHÉ LA CAPACITÀ DI ESPOSIZIONE DELLO STUDENTE.
Testi
MICHAEL HOWARD, DAVID LEBLANC, JOHN VIEGA.
"24 DEADLY SINS OF SOFTWARE SECURITY: PROGRAMMING FLAWS AND HOW TO FIX THEM"
MCGRAW HILL
Altre Informazioni
L'INSEGNAMENTO E' EROGATO IN INGLESE
Orari Lezioni

  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2024-11-18]