SECURITY IN SOFTWARE APPLICATIONS

Obiettivi formativi

Obiettivi generali I fondamenti della sicurezza nei programmi software Obiettivi specifici Metodologie e strumenti per trovare e rimuovere le vulnerabilità più comuni del software e per sviluppare software senza falle di sicurezza Conoscenza e comprensione conoscenza e capacità di comprensione delle tecniche più efficaci per la rimozione di vulnerabilità dal codice e per sviluppare software che soddisfi specifiche politiche di sicurezza. Applicare conoscenza e comprensione Essere in grado di applicare e trasferire la propria conoscenza delle metodologie alla scelta delle tecniche e strumenti appropriati risolvere problemi di sicurezza del software Autonomia di giudizio Capacità d’interpretazione autonoma per proporre soluzioni appropriate a problemi di sicurezza software congruenti con le tecnologie disponibili. Abilità comunicative Capacità di presentare e di argomentare le proprie scelte in merito alle metodologie ed agli strumenti utilizzati per le soluzioni proposte, sia con colleghi che con utenti Capacità di apprendimento successivo Capacità di apprendere e approfondire nuove tecniche nell’ambito della sicurezza software informatica sia degli aspetti metodologici sia di quelli tecnologici

Canale 1
DANIELE FRIOLO Scheda docente

Programmi - Frequenza - Esami

Programma
Descrizione del Corso Il corso presenta aspetti metodologici e pratici della sicurezza software, partendo da alcune delle vulnerabilità più note. Gli argomenti trattati includono attacchi ai cifrari comuni, come la crittoanalisi e i side channel, e attacchi software, tra cui varie forme di buffer e heap overflow, problemi causati dalla formattazione dell'input, conseguenze delle race conditions, generazione di numeri casuali e code injection. L'accento è posto sulle metodologie e i tool usati per identificare ed eliminare tali vulnerabilità. Vengono presentate tecniche per dimostrare l'assenza di vulnerabilità e discussi approcci per evitare l'introduzione di vulnerabilità nei prodotti software (ad esempio, l'uso dei tipi nei linguaggi per garantire memory safety, type-safety, information flow security e strumenti crittografici). Sono inoltre trattate nozioni di base su Proof-Carrying Code (PCC) e sull'offuscamento del codice/crittografico. Gli studenti vengono esposti a metodologie per progettare software integrando l'analisi e la gestione del rischio nel software development lifecycle. Migliorare il Codice Esistente - Vulnerabilità note: Buffer overflow, SQL/code injection, TOCTOU - Analisi statica e dinamica del codice e tools - Common Vulnerability Scoring System (CVSS) Valutare la Sicurezza - Principi - Testing Sviluppare Software Sicuro - Sviluppo di codice sicuro / defensive coding - Sicurezza in Java Approcci Attuali - Language-based security - Information Flow Control - Proof-Carrying Code - Code Obfuscation Introduzione alle Primitivi Crittografiche - Cifrari comuni - Crittografia a chiave pubblica
Prerequisiti
- Corso introduttivo di sicurezza - Conoscenza elementare di sistemi operativi e DB - Capacità basilari di programmazione, in particulare C/C++, Java, basi di PHP e javascript
Testi di riferimento
R. Anderson, Security Engineering: a guide to building dependable distributed systems, 2nd ed., John Wiley and Sons 2008 J.Viega, G.McGraw, Building Secure Software, Addison- Wesley 2002 G.McGraw, Software Security: Building Security in, Addison- Wesley 2006 G.Hoglung, G.McGraw, Exploiting Software: how to break code, Addison-Wesley 2004 G.McGraw, E.Felten, Securing Java, John Wiley and Sons 1999, D.A.Wheeler, Secure Programming for Linux and Unix HOWTO J. Katz, Y. Lindell, Introduction to Modern Cryptography (Chapman & Hall/CRC Cryptography and Network Security Series)
Frequenza
In presenza
Modalità di esame
Uno o più progetti individuali - Analisi statica di frammenti di codice - Assertion-based code analysis - Testing o Evaluation di applicationo I progetti sono obbligatori per poter superare l'esame. - Esame scritto sugli argomenti del corso.
Modalità di erogazione
Il corso si svolge con lezioni che presentano argomenti legati alla sicurezza delle applicaioni software introducendo concetti di sicurezza ed esempi.
  • Codice insegnamento1047642
  • Anno accademico2025/2026
  • CorsoComputer Science - Informatica
  • CurriculumCurriculum unico
  • Anno1º anno
  • Semestre1º semestre
  • SSDINF/01
  • CFU6