Grazie per aver inviato la tua richiesta! Uno dei nostri team membri ti contatterà a breve.
Grazie per aver inviato il tuo prenotazione! Uno dei nostri team membri ti contatterà a breve.
Struttura del corso
Giorno 1
Sicurezza informatica e programmazione sicura
-
La natura della sicurezza
-
Termini fondamentali in materia di sicurezza IT
-
Definizione di rischio informatico
-
Aspetti distintivi della sicurezza IT
-
Requisiti specifici delle varie applicazioni
-
Differenze tra sicurezza informatica e programmazione sicura
-
Dalle vulnerabilità alle reti di botnet e alla criminalità informatica
-
Caratteristiche delle debolezze di sicurezza
-
Perché risulta complesso rimediarvi
-
Dal PC infetto fino agli attacchi mirati
-
Caratteristiche delle debolezze di sicurezza
-
Classificazione delle vulnerabilità di sicurezza
-
La classificazione proposta da Landwehr
-
I cosiddetti “Sette Regni Perversi”
-
OWASP Top Ten 2013
-
Confronto tra le edizioni OWASP Top Ten del 2003 e del 2013
-
La classificazione proposta da Landwehr
Introduzione al Microsoft® Security Development Lifecycle (SDL)
-
Panoramica generale dell’SDL
-
Le applicazioni sotto attacco...
-
Evoluzione della criminalità informatica
-
Maggiore frequenza di attacchi alle applicazioni software
-
La maggior parte delle vulnerabilità riguarda piccoli prodotti realizzati da sviluppatori indipendenti
-
Evoluzione della criminalità informatica
-
Origini del Microsoft SDL...
-
Cronologia della sicurezza presso Microsoft...
-
Quali applicazioni devono aderire allo SDL?
-
Cronologia della sicurezza presso Microsoft...
-
Il Microsoft Security Development Lifecycle (SDL)
-
Panoramica complessiva del ciclo di sviluppo sicuro proposto da Microsoft
-
Requisiti preliminari: formazione sulla sicurezza
-
Fase 1: Individuazione dei requisiti di sicurezza
-
Fase 2: Progettazione basata su criteri di sicurezza
-
Fase 3: Implementazione con pratiche di sicurezza rigorose
-
Fase 4: Verifica e validazione dei controlli previsti
-
Fase 5: Pubblicazione – realizzazione del piano di risposta a emergenze
-
Fase 5: Pubblicazione – revisione finale dei requisiti di sicurezza
-
Fase 5: Archiviazione della documentazione relativa all’applicazione
-
Requisiti post-pubblicazione: meccanismi reattivi alla segnalazione di vulnerabilità
-
Linee guida procedurali per l’SDL applicate a software aziendali specifici
-
Adozione dell’SDL in contesti di sviluppo Agile
-
L’importanza del continuo miglioramento dei processi per una programmazione sicura
-
Panoramica complessiva del ciclo di sviluppo sicuro proposto da Microsoft
Principi fondamentali di progettazione sicura
-
La superficie esposta ad attacchi (attack surface)
-
Riduzione della superficie soggetta a minacce
-
Esempio concreto di superficie d’attacco
-
Analisi sistematica di tali aree critiche
-
Alcuni esempi pratici riguardo alla minimizzazione dell’area vulnerabile
-
Riduzione della superficie soggetta a minacce
-
Privacy dei dati
-
Considerazioni generali sulla privacy
-
Come comprendere correttamente il comportamento del software e i rischi connessi
-
Considerazioni generali sulla privacy
-
Approccio “difesa a più livelli” (Defense in Depth)
-
Il principio cardine dello SDL: la difesa distribuita lungo le strutture applicative
-
Un caso concreto di applicazione di questo approccio
-
Il principio cardine dello SDL: la difesa distribuita lungo le strutture applicative
-
Principio del minimo privilegio (Least Privilege)
-
Esempio d’uso di tale criterio di accessibilità ridotta
-
Esempio d’uso di tale criterio di accessibilità ridotta
-
Configurazioni predefinite sicure
-
Alcuni casi pratici riguardanti le impostazioni standard ritenute sicure
-
Alcuni casi pratici riguardanti le impostazioni standard ritenute sicure
Criteri fondamentali per l’implementazione del codice in modo sicuro
-
Panoramica complessiva della sezione dedicata
-
Riepilogo sul Microsoft Security Development Lifecycle (SDL)
-
Elementi base sull’overflow di buffer
-
Registri fondamentali nei processori Intel 80x86
-
Struttura degli indirizzi in memoria
-
Modalità di chiamata delle funzioni C/C++ su architetture x86
-
Relazione tra variabili locali e struttura della stack frame
-
Cos’è lo overflow dello stack
-
Meccanismi alla base dell’overflow dei buffer nello stack
-
Introduzione ai tipi di esercitazioni previste
-
Dettagli sull’esercizio BOFIntro
-
Analisi del layout della stack attraverso l’esercizio BOFIntro
-
Realizzazione di semplici “exploit” a partire da tale contesto d’apprendimento
-
Meccanismi alla base dell’overflow dei buffer nello stack
-
Registri fondamentali nei processori Intel 80x86
-
Validazione delle informazioni inserite (Input validation)
-
Concetti primari sulla validazione degli input
-
Problematiche tipiche con i dati numerici
-
Modalità di rappresentazione dei valori negativi in formato numerico
-
Come si manifesta l’overflow aritmetico
-
Previsione dell’output in casi d’overflow
-
Esercitazione specifica: IntOverflow
-
Quanto vale esattamente Math.Abs(int.MinValue)?
-
Modalità di rappresentazione dei valori negativi in formato numerico
-
Modalità di prevenzione delle problematiche numeriche
-
Soluzioni consigliate per evitare l’overflow aritmetico
-
Come si gestisce l’addizione in ambiente a rischio d’overflow?
-
Gestione della moltiplicazione con limiti numerici fissati
-
Rilevamento degli overflow tramite la parola chiave “checked” in C#
-
Attività pratica: sperimentazione diretta della parola chiave “checked” nel linguaggio C#
-
Come vengono gestite eccezioni derivanti da overflow in ambienti .NET?
-
Soluzioni consigliate per evitare l’overflow aritmetico
-
Studio di caso specifico: problematiche d’overflow numerico nel framework .NET
-
Una situazione reale in cui si manifesta l’overflow dei dati interi in un’applicazione .NET
-
Procedimenti effettivi per sfruttare tali debolezze numeriche nel codice target
-
Una situazione reale in cui si manifesta l’overflow dei dati interi in un’applicazione .NET
-
Gestione delle vulnerabilità legate alla traversata di percorsi file (Path traversal)
-
Strategie pratiche per contrastare questa tipologia specifica di rischio
-
Strategie pratiche per contrastare questa tipologia specifica di rischio
-
Concetti primari sulla validazione degli input
Giorno 2
Criteri fondamentali per l’implementazione del codice in modo sicuro (continua)
-
Tecniche d’iniezione di contenuti non desiderati
-
Modalità tipiche di attacco basate sull’iniezione SQL
-
Meccanismi d’attacco “blind” e basati su tempi di risposta verso le richieste in codice SQL
-
Strategie pratiche per proteggere l’applicazione da attacchi di tipo SQL Injection
-
Attacchi basati sull’iniezione di comandi nel sistema operativo (Command injection)
-
Modalità tipiche di attacco basate sull’iniezione SQL
-
Problematiche relative alla gestione dei dati d’identificazione – password
-
Attività pratica: analisi delle debolezze associate alle password memorizzate in formato hash
-
Procedimenti corretti di gestione e salvataggio delle credenziali di accesso
-
Utilizzo appropriato degli algoritmi specifici per la generazione di hash a scopo protettivo dei dati sensibili
-
Attività pratica: analisi delle debolezze associate alle password memorizzate in formato hash
-
Cross-Site Scripting (XSS)
-
Concezioni principali riguardanti l’XSS
-
Specifiche forme di attacco con iniezione CSS (Cross-site Scripting Stylesheet)
-
Tecniche d’attacco basate su iniezioni attraverso tag HTML particolari
-
Metodiche per prevenire l’utilizzo indesiderato di codice non sicuro nel contesto XSS
-
Concezioni principali riguardanti l’XSS
-
Assenza o carenza dei controlli di accesso a livello funzionale
-
Moduli specifici dedicati al filtraggio sicuro dei file in fase d’upload
-
Moduli specifici dedicati al filtraggio sicuro dei file in fase d’upload
-
Concetti di base riguardanti la crittografia
-
Garanzie di riservatezza offerte dalla cifratura simmetrica
-
Algoritmi principali previsti per l’esecuzione della crittografia simmetrica
-
Le modalità d’utilizzo dei “block cipher” nella gestione di dati
-
Struttura e utilizzo dei cosiddetti digest o hash dei messaggi
-
Principali tipologie di algoritmi in grado di generare tali hash
-
Concetto e struttura del Message Authentication Code (MAC)
-
Modalità d’utilizzo della chiave simmetrica per garantire autenticità e integrità dei dati
-
Utilizzo delle chiavi asimmetriche nella cifratura
-
Norme generali riguardo alla corretta gestione della chiave privata
-
Errori ricorrenti nell’ambito della conservazione sicura delle credenziali d’accesso
-
Attività pratica: riconoscimento e correzione di password rigidamente scritte all’interno del codice sorgente
-
Sintesi finale dei concetti trattati
-
Garanzie di riservatezza offerte dalla cifratura simmetrica
Criteri fondamentali per la verifica e validazione delle funzionalità in modo sicuro
-
Differenze tra i test standard e quelli mirati alla sicurezza informatica
-
Identificazione precoce di potenziali vulnerabilità
-
Processo di prioritizzazione delle criticità riscontrate
-
Integrazione dei test specifici per la sicurezza nell’ambito del ciclo SDLC
-
Elementi preliminari di pianificazione e valutazione dei rischi in fase di test
-
Definizioni specifiche e analisi sistematica delle informazioni d’interesse
-
Le parti direttamente coinvolte nel processo
-
Gli elementi critici costituenti il patrimonio informativo del sistema
-
Individuazione delle zone più esposte all’influenza di attacchi esterni
-
Scopi specifici da ottenere tramite l’attività stessa di test
-
Le parti direttamente coinvolte nel processo
-
Modelli formale d’analisi delle minacce
-
Il processo fondamentale della modellazione d’emergenza di minacce
-
Profili caratteristici dei potenziali aggressori e loro comportamenti
-
Strutture basate su alberi degli attacchi per la creazione modelli predittivi
-
Implementazioni alternative: basate su casi ipotetici d’abuso o di utilizzo scorretto dei software
-
Applicazione diretta ai contesti pratici tramite un semplice esempio legato a negozi online
-
Struttura analitica STRIDE adattata specificamente allo standard Microsoft SDL
-
Procedimenti per definire correttamente i fini di sicurezza da raggiungere nel contesto esaminato
-
Struttura e composizione dei Diagrammi a Flusso dei Dati (DFD)
-
Analisi di un esempio specifico riguardante la costruzione pratica di tali diagrammi
-
Metodologia per identificare le singole fonti di pericolo sfruttando sia il sistema STRIDE che i modelli DFD
-
Criteri specifici di valutazione e classificazione delle minacce individuate
-
Il modello DREAD per una classificazione standardizzata del rischio informatico
-
Il processo fondamentale della modellazione d’emergenza di minacce
-
Tecniche specifiche e strumenti a disposizione per la verifica della sicurezza
-
Linee guida generali per l’individuazione delle soluzioni migliori ai vari problemi analizzati
-
Modalità di applicazione dei test nelle singole fasi del ciclo di sviluppo previsto dallo SDLC
-
Linee guida generali per l’individuazione delle soluzioni migliori ai vari problemi analizzati
-
Analisi diretta e revisione sistematica del codice
-
Come procedere a una revisione tecnica mirata alla sicurezza dei software prodotti
-
Tecniche avanzate di “Taint Analysis” per il rilevamento di flussi dati rischiosi
-
Utilizzo intelligente delle regole heuristiche per una ricerca rapida d’anomalie
-
Come procedere a una revisione tecnica mirata alla sicurezza dei software prodotti
-
Analisi statica del codice prodotto
-
Principi tecnici alla base dell’analisi statica
-
Esercitazione: sperimentazione diretta con strumenti dedicati all’analisi statica
-
Principi tecnici alla base dell’analisi statica
-
Verifica dell’operatività in tempo reale
-
Metodiche standardizzate di controllo delle attività in esecuzione diretta
-
Rispetto e limiti del test manuale vs automatizzato per la sicurezza informatica
-
Procedure tipiche di Penetration Testing
-
Test finalizzati alla misurazione della resistenza complessiva del sistema
-
Metodiche standardizzate di controllo delle attività in esecuzione diretta
-
Tecniche Fuzzing per l’esecuzione di test automatici
-
Cos’è il “Fuzzing” come tecnica consolidata nel mondo della verifica informatica
-
Principali difficoltà incontrate durante l’utilizzo corretto di questo strumento d’automazione
-
Cos’è il “Fuzzing” come tecnica consolidata nel mondo della verifica informatica
-
Strumenti dedicati al rilevamento rapido delle vulnerabilità in applicazioni web
-
Esercitazione pratica: utilizzo dei programmi scanner di vulnerabilità più diffusi
-
Esercitazione pratica: utilizzo dei programmi scanner di vulnerabilità più diffusi
-
Valutazioni finali sull’integrità complessiva del sistema e ottimizzazioni ambientali
-
Il Common Vulnerability Scoring System (CVSS) come metrica universalmente riconosciuta
-
Strumenti dedicati specificatamente alla scansione di debolezze informative
-
Basi di dati accessibili a chiunque contenenti informazioni fondamentali su problemi riscontrati
-
Il Common Vulnerability Scoring System (CVSS) come metrica universalmente riconosciuta
-
Studio caso specifico: superamento indesiderato dei controlli d’accesso per autenticazione
-
Come si manifesta la cosiddetta vulnerabilità legata alla terminazione arbitraria dei dati mediante il carattere NULL
-
Descrizione analitica delle condizioni che permettono effettivamente tale superamento nel codice
-
Procedimenti corretti per sfruttare appieno questa debolezza da parte degli attaccanti
-
Come si manifesta la cosiddetta vulnerabilità legata alla terminazione arbitraria dei dati mediante il carattere NULL
Fonti di informazione e risorse utili
-
Iniziative in corso mirate a rendere disponibili linee guida per lo sviluppo sicuro di programmi
-
Database consolidati contenenti informazioni riguardanti le vulnerabilità più note
-
Documentazione ufficiale Microsoft relativa alle corrette pratiche per lo sviluppo .NET
-
Schede riassuntive per facilitare l’implementazione corretta delle norme di sicurezza nei progetti basati su .NET e ASP.NET
-
Elenco consigliato di testi specializzati relativamente a .NET e ASP.NET
14 ore
Recensioni (3)
Condivisione di esperienze, competenze e conoscenze preziose del docente.
Carey Fan - Logitech
Corso - C/C++ Secure Coding
Traduzione automatica
le conoscenze del formatore erano molto elevate - sapeva di cosa stava parlando e conosceva le risposte alle nostre domande
Adam - Fireup.PRO
Corso - Advanced Java Security
Traduzione automatica
L'argomento è attuale e avevo bisogno di essere aggiornato
Damilano Marco - SIAP s.r.l.
Corso - Secure Developer Java (Inc OWASP)
Traduzione automatica