Lo studente avrà acquisito conoscenze in merito alle vulnerabilità più comuni dei sistemi software, delle architetture di elaborazione, delle reti e delle applicazioni web, ai modi in cui queste vulnerabilità sono sfruttate dagli attaccanti e alle contromisure messe in atto per mitigare gli attacchi.
The student will acquire knowledge about the most common vulnerabilities of software systems, computer architectures, networks and web applications, the ways in which these vulnerabilities are exploited by attackers and the countermeasures put in place to mitigate attacks.
La verifica delle conoscenze sarà oggetto di una prova scritta e/o orale a conclusione di ogni esame.
The knowledge check will be the subject of a written and / or oral test at the end of each exam.
Lo studente sarà in grado di scrivere codice e configurare i sistemi in modo da mitigare le vulnerabilità più comuni, ma anche di portare a termine attacchi mirati a dimostrare la presenza di tali vulnerabilità.
The student will be able to write code and configure systems to mitigate the most common vulnerabilities, but also to carry out attacks aimed at demonstrating the presence of such vulnerabilities.
Le capacità saranno verificate tramite lo sviluppo di un progetto software, che potrà essere sviluppato da piccoli gruppi di studenti o singolarmente.
Skills will be tested through the development of a software project, which can be developed by small groups of students or individually.
Lo studente svilupperà una maggiore attenzione e consapevolezza verso le vulnerabilità dei sistemi informatici, e possiederà un bagaglio di "best practice" atte a mitigare tali vulnerabilità.
The student will develop a greater attention and awareness towards the vulnerabilities of computer systems, and will possess a set of "best practices" to mitigate these vulnerabilities.
I comportamenti saranno verificati tramite lo sviluppo di un progetto software, che potrà essere sviluppato da piccoli gruppi di studenti o singolarmente.
Skills will be tested through the development of a software project, which can be developed by small groups of students or individually.
SISTEMI OPERATIVI: controllo degli accessi discretionary/mandatory; programmi suid/sgid; metacaratteri; attacchi tramite variabili di ambiente (PATH, IFS, ...); attacchi tramite collegamenti simbolici; "sandboxing" tramite contenitori (namespace, control group); monitor sicuri (AppArmor).
PROGRAMMAZIONE: concetti e pratiche di programmazione sicura in C e C++; i processi e il loro spazio di indirizzamento: la pila e lo heap, dlmalloc, mmap()/mprotect(), le librerie dinamiche, la "Global Offset Table" (GOT) e la Procedure Linkage Table (PLT); overflow sugli interi; buffer overflow su pila e heap; vulnerabilità delle stringhe di formattazione; errori di "use-after-free" e "double-free"; iniezione e riuso di codice: "return-to-libc", "Return Oriented Programming" (ROP); "Address Space Layout Randomization" (ASLR) e codice indipendente dalla posizione; integrità del flusso di controllo; errori di "Time-of-Check to Time-of-Use" (TOCTOU); iniezione di comandi shell, attraversamento di directory.
RETI E WEB: scansione delle reti e dei servizi, "fuzzing", rilevamento del Sistema Operativo tramite "fingerprinting", attacchi di forza bruta al DNS, "packet sniffing"; applicazioni web: mappatura, vulnerabilità nei sistemi di autenticazione, attacchi di forza bruta all'autenticazione, vulnerabilità nel sistema di gestione delle sessioni, furto della sessione, vulnerabilità nel sistema di controllo accessi, iniezione di codice SQL, iniezione LDAP, "cross-site scripting", "web spidering", entità XML esterne.
OPERATING SYSTEMS: discretionary/mandatory access control; suid/sguid programs; metacharacters; attacks via environment variables (PATH, IFS, ...); attacks via symbolic links; Time-Of-Check-to-Time-Of-Use (TOCTOU); sandboxing through containers (namespaces, control groups); secure monitors (AppArmor).
PROGRAMMING: safe programming concepts and practices in C and C ++; processes and their address space: the stack and the heap, dlmalloc, mmap()/mprotect(), dynamic libraries, the Global Offset Table (GOT) and the Procedure Linkage Table (PLT); integer overflow; buffer overflows on stack and heap; formatt strings vulnerabilities; use-after-free and double-free errors; code injection and code reuse: return-to-libc, Return Oriented Programming (ROP); Address Space Layout Randomization (ASLR) and position independent code; control flow integrity; shell command injection, directory traversal.
NETWORKS AND WEB: network scannin, service scanning, fuzzing, OS fingerprinting, DNS bruteforcing, packet sniffing; web applications: mapping, authentication vulnerabilities, login bruteforcing, session management vulnerabilities, session hijacking, access control vulnerabilities, SQL injection, LDAP injection, cross-site scripting, web spidering, external XML entities.
Prova scritta e orale, più progetto.
Written and oral exam, plus project.