Oggetto:

Sicurezza dei Sistemi e del Software

Oggetto:

System and Software Security

Oggetto:

Anno accademico 2025/2026

Codice attività didattica
INF0429
Docenti
Paolo Castagno (Titolare)
Idilio Drago (Titolare)
Corso di studio
[0801M21] Laurea magistrale in informatica
Anno
1° anno
Periodo
Primo semestre
Tipologia
Caratterizzante
Crediti/Valenza
6 CFU - Numero di ore - Number of hours: 24 (in aula) + 24 (in laboratorio)
SSD attività didattica
INF/01 - informatica
Erogazione
Tradizionale
Lingua
Italiano
Frequenza
Facoltativa
Tipologia esame
Scritto
Tipologia unità didattica
corso
Prerequisiti

Conoscenza di sicurezza delle reti, sistemi operativi, architettura degli elaboratori.

Corsi propedeutici (forniscono le "competenze attese in ingresso"): Sicurezza delle Reti (Magistrale), Complementi di Reti e Sicurezza (Magistrale)


Knowledge in network security, computer architectures and operating systems.

Preparatory Courses: Network Security (Computer Science Master), Advanced Networks and Security (Computer Science Master)

Oggetto:

Sommario insegnamento

Oggetto:

Avvisi

Informazioni per studenti con DSA o Disabilità: servizi di Ateneo e supporto per sostenere gli esami Regole di comportamento durante gli esami
Oggetto:

Obiettivi formativi

In questo insegnamento sono affrontati argomenti avanzati di sicurezza del software e dei sistemi, inclusi i sistemi web, sistemi operativi e sicurezza hardware. L'insegnamento fornisce le competenze per valutare le potenziali vulnerabilità dei sistemi informatici, per sapere come reagire nel caso in cui si verifichi un incidente di sicurezza, e come proteggere i sistemi dagli attacchi più comuni.

L'insegnamento offre una panoramica delle vulnerabilità software più diffuse, tra cui errori di programmazione, configurazioni errate o incomplete e rischi legati alla mancanza di meccanismi di protezione di base. Verranno inoltre presentati, come casi di studio, diverse tipologie di attacchi, le opportune contromisure per mitigarne gli effetti e gli strumenti/tool utilizzati nella realizzazione di tali attacchi.

Il corso prevede lo svolgimento di attività di laboratorio in cui le studentesse e gli studenti potranno testare nella pratica i diversi scenari di attacco. Inoltre, le attività in laboratorio e lo sviluppo di un progetto saranno parte integrante della valutazione finale.

Con riferimento agli obiettivi formativi del CdS in Informatica (LM18), il corso offre competenze necessarie per garantire un livello elevato di robustezza, affidabilità, sicurezza, continuità e qualità di servizio di sistemi informatici complessi e interconnessi, che sono parte degli obiettivi relativi all'area sicurezza del software e dei calcolatori.

This course covers advanced topics in software and systems security, including web systems, operating systems, and hardware security. The course provides the skills to assess potential vulnerabilities of computer systems, to know how to react in case of a security incident, and how to protect systems from the most common attacks.

The course offers an overview of the most widespread software vulnerabilities, including programming errors, incorrect or incomplete configurations, and risks related to the lack of basic protection mechanisms. Various types of attacks will also be presented as case studies, along with appropriate countermeasures to mitigate their effects and the tools used in carrying out such attacks.

The course includes laboratory activities where students will be able to test different attack scenarios in practice. Additionally, laboratory activities and the development of a project will be an integral part of the final evaluation.

With reference to the educational objectives of the Master's Degree in Computer Science (LM18), the course offers the necessary skills to ensure a high level of robustness, reliability, security, continuity, and quality of service for complex and interconnected computer systems, which are part of the objectives related to the software and computer security area.

Oggetto:

Risultati dell'apprendimento attesi


Al termine dell'insegnamento le studentesse e gli studenti saranno in grado di:

Conoscenza e comprensione

  • Comprendere le vulnerabilità dei sistemi informatici e del software
  • Valutare le superfici di attacco di un sistema e delle applicazioni
  • Conoscere le tecniche di analisi della sicurezza del software

Capacità di applicare conoscenza e comprensione

  • Identificare vulnerabilità in sistemi e applicazioni mediante strumenti atti alla valutazione della sicurezza
  • Implementare misure atte ad evitare gli attacchi e/o a mitigarne gli effetti
  • Applicare tecniche di analisi statica e dinamica per identificare vulnerabilità nel software

Autonomia di giudizio

  • Valutare criticamente le soluzioni di sicurezza adottate e identificare possibili miglioramenti
  • Analizzare l'efficacia delle contromisure implementate nei sistemi informatici

Abilità comunicative

  • Presentare in modo chiaro le problematiche di sicurezza dei sistemi informatici e del software, utilizzando un linguaggio tecnico appropriato
  • Documentare adeguatamente vulnerabilità e soluzioni di sicurezza

Capacità di apprendimento

  • Dimostrare capacità di apprendimento autonomo attraverso l'approfondimento degli argomenti trattati e la risoluzione di problemi complessi
  • Mantenersi aggiornati sulle nuove vulnerabilità e tecniche di attacco


At the end of the course, students will be able to:

Knowledge and Understanding

  • Understand computer systems and software vulnerabilities
  • Assess the attack surfaces of a system and applications
  • Know software security analysis techniques

Ability to Apply Knowledge and Understanding

  • Identify vulnerabilities in systems and applications using security assessment tools
  • Implement measures to prevent attacks and/or mitigate their effects
  • Apply static and dynamic analysis techniques to identify vulnerabilities in software

Independent Judgement

  • Critically evaluate adopted security solutions and identify possible improvements
  • Analyze the effectiveness of countermeasures implemented in computer systems

Communication Skills

  • Clearly present security issues of computer systems and software using appropriate technical language
  • Adequately document vulnerabilities and security solutions

Learning Skills

  • Demonstrate autonomous learning skills through in-depth study of topics and resolution of complex problems
  • Stay updated on new vulnerabilities and attack techniques
Oggetto:

Programma

  • Introduzione
    • Tassonomie (CVE, CWE, OWASP)
    • Problemi di sicurezza del software
  • Raccolta di informazioni e OSINT
  • Sicurezza web
    • Nozioni di base sulla sicurezza HTTP, cookie e sessioni
    • File disclosure e path traversal
    • Code and commands injection
    • SQL injection
    • Cross-site request forgery
    • Cross-site scripting, CORS
    • Clickjacking, baiting
    • Phishing e squatting
    • Sicurezza delle applicazioni mobili
  • Sicurezza della virtualizzazione e dei sistemi operativi
    • Sicurezza dei container
    • Sicurezza del cloud
  • Test del software e identificazione delle vulnerabilità
    • Analisi statica
    • Analisi dinamica
    • Fuzzing
  • Sicurezza del software
    • x86, convenzioni di chiamata, gestione della memoria
    • Reverse engineering, disassemblaggio e decompilazione
    • Reverse shell
    • Integer overflow, buffer overflow, use after free
    • ASLR, execution space vs data space
    • Return-to-libc, ROP, JOP, code gadget
    • Format string vulnerability
    • Shellcode
    • Principi delle race condition
  • Software malevolo
  • Sicurezza hardware, TEE
  • Argomenti avanzati nella sicurezza del software e dei sistemi

  •  Introduction
    • Taxonomies (CVE, CWE, OWASP)
    • Software security problems
  • Information gathering and OSINT
  • Web security
    • HTTP security basics, cookies and sessions
    • File disclosure and path traversal
    • Code and commands injection
    • SQL injection
    • Cross-site request forgery
    • Cross-site scripting and CORS
    • Clickjacking, baiting
    • Phishing and squatting
    • Security of mobile applications
  • Virtualization and OS security
    • Container security
    • Cloud security
  • Software testing and vulnerability identification
    • Static analysis
    • Dynamic analysis
    • Fuzzing
  • Software security
    • x86, calling conventions, memory management
    • Reverse engineering, disassembly and decompilation
    • Reverse shell
    • Integer overflows, buffer overflow, use after free
    • ASLR, execution space vs data space
    • Return-to-libc, ROP, JOP, code gadgets
    • Format string vulnerability
    • Shellcode
    • Principles of race conditions
  • Malicious software
  • Hardware security, TEE
  • Advanced topics in software and system security
Oggetto:

Modalità di insegnamento


L'insegnamento è diviso in una parte di teoria e una di laboratorio. Per la parte di teoria sono previste 24 ore di lezioni frontali, integrate da esempi e da esercitazioni. Per la parte di laboratorio sono previste 24 ore di attività in laboratorio in cui si svolgono esercizi. La frequenza è facoltativa, consigliata, e la prova finale sarà uguale per frequentanti e non.


The course is divided into a theoretical part and a laboratory part. For the theoretical part, 24 hours of frontal lectures are scheduled, supplemented by examples and exercises. For the laboratory part, 24 hours of laboratory activities are scheduled. Attendance is optional but recommended, and the final exam will be the same for all students.

Oggetto:

Modalità di verifica dell'apprendimento



L'esame si comporrà di una prova orale di teoria (18 punti), la discussione di un progetto pratico (8 punti) e la consegna delle soluzioni degli esercizi proposti durante il corso (6 punti). Tutte le parti dell’esame devono essere superate e contribuiscono a determinare il voto finale. L'esecuzione del progetto e la consegna degli esercizi sono condizioni necessarie per accedere all'esame orale.

Progetto: Il progetto finale consiste nell'analisi di un sistema (applicazione/servizio/ecc.) volta all'individuazione ed all'exploitation delle vulnerabilità e degli errori di configurazione presenti utilizzando le tecniche apprese durante il corso. Il progetto deve essere completato compilando una relazione in cui vengono descritti il problema affrontato, le osservazioni effettuate, il metodo di analisi utilizzato e la discussione dei risultati.

Esercizi: Durante lo svolgimento del corso verranno assegnati degli esercizi di laboratorio che dovranno essere consegnati entro le scadenze previste. La consegna degli esercizi al di fuori delle scadenze determina una riduzione del punteggio massimo ottenibile (-1 punto).

The exam will consist of an oral test (18 points), the discussion of a practical project (8 points), and the delivery of solutions to exercises proposed during the course (6 points). All parts of the exam must be passed and contribute to determining the final grade. The execution of the project and the delivery of exercises are necessary conditions to access the oral exam.

Project: The final project consists of analyzing a system (application/service/etc.) to identify and exploit vulnerabilities and configuration errors using the techniques learned during the course. The project must be completed by compiling a report describing the problem addressed, the observations made, the analysis method used, and the discussion of the results.

Exercises: During the course, laboratory exercises will be assigned and must be delivered within the scheduled deadlines. The delivery of exercises outside the deadlines results in a reduction of the achievable score (-1 point).

Testi consigliati e bibliografia



Oggetto:
Libro
Titolo:  
Computer Security: A Hands-on Approach
Anno pubblicazione:  
2022
Editore:  
Wenliang Du
Autore:  
Wenliang Du
ISBN  
Obbligatorio:  
Si


Oggetto:
Ultimo aggiornamento: 28/07/2025 16:12
Location: https://magistrale.informatica.unito.it/robots.html
Non cliccare qui!