48
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
REGGIO DI CALABRIA
Dati Generali
Periodo di attività
Syllabus
Obiettivi Formativi
Il corso mira a fare apprendere:
-le principali vulnerabilità degli applicativi in ambito web ed i principali attacchi al fine di realizzare software sicuri;
-le principali tecniche per sfruttare tali vulnerabilità (penetration-testing);
-le principali tecniche di buffer overflow e mitigazioni
Prerequisiti
E’ importante che lo studente abbia conoscenza dei seguenti argomenti (tra parentesi, i corsi nei quali sono stati trattati):
-Elementi di base di programmazione (Fondamenti di Informatica)
-Nozioni di base sull'allocazione di memoria per processi in esecuzione (Sistemi Operativi)
-Elementi di base di sicurezza del web (Cybersecurity)
Durante le lezioni verranno richiamati gli argomenti necessari.
Metodi didattici
Il corso prevede lezioni frontali integrate con esercitazioni pratiche al computer. Durante ogni lezione vengono introdotti i principali concetti teorici, immediatamente seguiti da attività pratiche al computer finalizzate ad applicare e consolidare le conoscenze acquisite.
Complessivamente sono previste circa 18 ore dedicate alla trattazione teorica e 30 ore di esercitazioni pratiche al computer, durante le quali gli studenti applicano le tecniche illustrate attraverso esercizi guidati e attività di analisi di vulnerabilità in applicazioni.
Verifica Apprendimento
L’esame di accertamento e valutazione consiste in una prova pratica (durata: 1 ora) e in una prova orale, articolate nei due moduli del corso.
Durante la prova pratica, gli studenti dovranno individuare e sfruttare vulnerabilità presenti in applicazioni web appositamente predisposte. Al termine della prova, dovranno redigere un report tecnico in cui descrivono le vulnerabilità individuate, le tecniche utilizzate per lo sfruttamento, l’impatto sulla sicurezza del sistema e le possibili misure di mitigazione.
La prova orale è finalizzata alla discussione del report prodotto durante la prova pratica e alla verifica della comprensione dei concetti teorici affrontati durante il corso, con particolare riferimento alle principali vulnerabilità delle applicazioni web, alle tecniche di exploitation e ai meccanismi di difesa. Durante il colloquio sarà inoltre valutata la capacità dello studente di analizzare criticamente le tecniche utilizzate e di motivare le scelte adottate.
La valutazione finale terrà conto della correttezza tecnica delle soluzioni proposte, della comprensione dei concetti teorici, della capacità di applicare le tecniche studiate e della chiarezza nell’esposizione e nell’analisi dei risultati.
Criteri di valutazione
30 – 30 e lode (Eccellente)
Lo studente dimostra una conoscenza completa e dettagliata degli argomenti trattati, utilizzando una terminologia appropriata e spiegando con precisione i principali concetti di sicurezza delle applicazioni web e di exploitation. Evidenzia una comprensione approfondita delle vulnerabilità analizzate e delle tecniche di attacco e di mitigazione. È in grado di applicare con sicurezza le conoscenze acquisite, sfruttare vulnerabilità complesse, analizzare criticamente i risultati e motivare le scelte tecniche adottate. L’esposizione risulta chiara, rigorosa e ben strutturata.
28 – 29 (Ottimo)
Lo studente dimostra una conoscenza approfondita della materia e una solida comprensione delle principali vulnerabilità delle applicazioni web e delle tecniche di exploitation. È in grado di applicare correttamente le tecniche studiate e di analizzare i risultati ottenuti durante la prova pratica. L’esposizione è chiara e ben organizzata, pur presentando occasionali imprecisioni o limitazioni nell’approfondimento.
25 – 27 (Buono)
Lo studente possiede una buona conoscenza degli argomenti principali del corso e riesce ad applicare le tecniche di base di individuazione e sfruttamento delle vulnerabilità. Comprende i concetti chiave della sicurezza delle applicazioni web, anche se non sempre riesce a spiegarli con piena precisione o completezza. L’esposizione è generalmente chiara, ma talvolta schematica o non pienamente approfondita.
22 – 24 (Discreto)
Lo studente dimostra una conoscenza complessivamente adeguata degli argomenti trattati, pur con alcune lacune o incertezze. È in grado di individuare e sfruttare vulnerabilità di base e di discutere i risultati ottenuti, anche se con limitata autonomia o con qualche imprecisione nell’analisi tecnica. L’esposizione è corretta ma non sempre pienamente strutturata.
18 – 21 (Sufficiente)
Lo studente dimostra una conoscenza essenziale dei concetti fondamentali della sicurezza delle applicazioni web e delle tecniche di exploitation trattate durante il corso. È in grado di affrontare esercizi di base relativi all’individuazione di vulnerabilità web o a semplici casi di buffer overflow, pur con alcune difficoltà nell’applicazione delle tecniche e nell’esposizione dei risultati.
Insufficiente
Lo studente non dimostra una conoscenza adeguata degli argomenti fondamentali del corso. La prova pratica e/o la prova orale evidenziano errori significativi, lacune rilevanti o incapacità di applicare correttamente le tecniche di analisi e sfruttamento delle vulnerabilità, non raggiungendo il livello minimo richiesto per il superamento dell’esame.
Testi
-Slides
-Dispense delle esercitazioni
-Siti web consigliati per ogni argomento
Contenuti
Programma del corso
Il corso è suddiviso in due moduli: Web Security (Hacking sul Web) e Software Security (Binary Exploitation).
Modulo 1: Web Security (Hacking sul Web) (4 CFU)
Gli argomenti di questo modulo saranno incentrati sulle principali vulnerabilità delle applicazioni web. Gli argomenti sono i seguenti.
(1 CFU)
Bruteforce, SQLI Union Based, SQLI Error Based, SQLI BLIND time based, SQLI BLIND boolean Based
(1 CFU)
introduzione a DOCKER, burpsuite, sqlmap, OS Command Injection, Unrestricted File Upload
(1 CFU)
Reflected Cross Site Scripting, Stored Cross Site Scripting, DOM Based Cross Site Scripting, File Inclusion, Session Issues
(1 CFU)
Insecure Direct Object Reference, Missing Functional Level Access Control, XXE, Server Side Template Injection, Content Security Policy, Insecure deserialization
Modulo 2: Software Security (Binary Exploitation) (2 CFU)
Questo modulo introduce i concetti per sfruttare vulnerabilità nei programmi binari. Gli argomenti trattati includono:
(0.5 CFU)
Fondamenti di Architettura e Programmazione a Basso Livello: linguaggio assembly per architettura Intel a 32 bit, registri della CPU e loro utilizzo, stack e aree di memoria di un processo in esecuzione, calling convention, processo di compilazione di un programma scritto in C.
(1.5 CFU)
Buffer Overflow nello Stack: concetti di base di overflow dello stack, sovrascrittura dell'EIP e controllo del flusso di esecuzione, shellcode injection, ret2libc, mitigazioni e contromisure
Risultati Attesi
Conoscenza e comprensione
Lo studente acquisisce conoscenze approfondite relative alle principali vulnerabilità degli applicativi web e software e le relative mitigazioni. Comprende i principali modelli di attacco in ambito web e binary exploitation. Conosce le metodologie e gli strumenti di penetration testing utilizzati per identificare e analizzare vulnerabilità di sicurezza.
Capacità di applicare conoscenza e comprensione
Lo studente è in grado di individuare, analizzare e sfruttare in modo controllato vulnerabilità in applicativi web e software. Inoltre sa implementare contromisure adeguate per mitigare le vulnerabilità identificate.
Autonomia di giudizio
Lo studente sviluppa la capacità di valutare criticamente il livello di sicurezza di una vulnerabilità, identificandone rischi e impatti potenziali. È in grado di scegliere in autonomia strumenti e metodologie di analisi più appropriati al contesto applicativo e di valutare l’efficacia delle tecniche di mitigazione adottate.
Abilità comunicative
Lo studente è in grado di documentare in modo chiaro e strutturato le vulnerabilità individuate, redigendo report tecnici di sicurezza. Sa comunicare efficacemente problematiche di sicurezza sia a interlocutori tecnici sia non tecnici, adattando il livello di dettaglio e il linguaggio al destinatario.
Capacità di apprendimento
Lo studente sviluppa la capacità di aggiornarsi autonomamente rispetto all’evoluzione delle minacce e delle tecniche di attacco, consultando documentazione tecnica, advisory di sicurezza e nuove vulnerabilità. È in grado di approfondire in modo autonomo nuovi strumenti e metodologie di analisi della sicurezza, adattandosi all’evoluzione continua del panorama della cybersecurity.
Altre informazioni
Codice Teams: x17tmed
Invito gli studenti ad iscriversi al Team per reperire il materiale didattico.