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 IT e programmazione sicura
- La natura della sicurezza
- Termini relativi alla sicurezza IT
- Definizione del rischio
- Aspetti diversi della sicurezza IT
- Requisiti di diverse aree applicative
- Sicurezza IT vs. programmazione sicura
-
Dalle vulnerabilità a botnet e crimini informatici
- La natura dei difetti di sicurezza
- Le ragioni della complessità
- Da un computer infetto agli attacchi mirati
-
Classificazione dei difetti di sicurezza
- Tassonomia di Landwehr
- I Sette Regni Perversi
- OWASP Top Ten 2013
- Confronto OWASP Top Ten 2003 – 2013
Introduzione al Microsoft® Security Development Lifecycle (SDL)
- Agenda
-
Applicazioni sotto attacco...
- Evoluzione del crimine informatico
- Gli attacchi si concentrano sulle applicazioni
- La maggior parte delle vulnerabilità si trova nelle app ISV più piccole
-
Origini del Microsoft SDL...
- Cronologia della sicurezza presso Microsoft...
- Quali app sono tenute a seguire l'SDL?
-
Microsoft Security Development Lifecycle (SDL)
- Microsoft Security Development Lifecycle (SDL)
- Requisiti pre-SDL: Formazione sulla sicurezza
- Fase Uno: Requisiti
- Fase Due: Progettazione
- Fase Tre: Implementazione
- Fase Quattro: Verifica
- Fase Cinque: Rilascio – Piano di risposta
- Fase Cinque: Rilascio – Revisione finale della sicurezza
- Fase Cinque: Rilascio – Archiviazione
- Requisito post-SDL: Risposta
- Linee guida del processo SDL per app LOB
- Linee guida SDL per metodologie Agile
- Lo sviluppo sicuro del software richiede il miglioramento dei processi
Principi di progettazione sicura
-
Superficie di attacco
- Riduzione della superficie di attacco
- Superficie di attacco – un esempio
- Analisi della superficie di attacco
- Riduzione della superficie di attacco – esempi
-
Privacy
- Privacy
- Comprendere i comportamenti e le criticità delle applicazioni
-
Difesa in profondità
- Principio fondamentale dello SDL: Difesa in profondità
- Difesa in profondità – esempio
-
Principio del minimo privilegio
- Minimo privilegio – esempio
-
Impostazioni predefinite sicure
- Impostazioni predefinite sicure – esempi
Principi di implementazione sicura
- Agenda
- Microsoft Security Development Lifecycle (SDL)
-
Basi del buffer overflow
- Processori Intel 80x86 – registri principali
- Layout degli indirizzi di memoria
- Meccanismo di chiamata delle funzioni in C/C++ su x86
- Variabili locali e frame dello stack
-
Stack overflow
- Buffer overflow nello stack
- Esercizi – introduzione
- Esercizio BOFIntro
- Esercizio BOFIntro – determinazione del layout dello stack
- Esercizio BOFIntro – un exploit semplice
-
Validazione degli input
- Concetti di validazione degli input
-
Problemi con gli interi
- Rappresentazione degli interi negativi
- Integer overflow
- Overflow aritmetico – indovina l'output!
- Esercizio IntOverflow
- Qual è il valore di Math.Abs(int.MinValue)?
-
Mitigazione dei problemi con gli interi
- Mitigazione dei problemi con gli interi
- Evitare l'overflow aritmetico – addizione
- Evitare l'overflow aritmetico – moltiplicazione
- Rilevare l'overflow con la parola chiave checked in C#
- Esercizio – Utilizzo della parola chiave checked in C#
- Eccezioni innescate da overflow in C#
-
Caso di studio – Integer overflow in .NET
- Una vulnerabilità di integer overflow nel mondo reale
- Sfruttamento della vulnerabilità di integer overflow
-
Vulnerabilità di path traversal
- Mitigazione del path traversal
Giorno 2
Principi di implementazione sicura
-
Iniezione
- Tipici metodi di attacco tramite SQL Injection
- SQL Injection cieco e basato sul tempo
- Metodi di protezione contro la SQL Injection
- Iniezione di comandi
-
Autenticazione non valida - gestione delle password
- Esercizio – Debolezza delle password hashead
- Gestione e archiviazione delle password
- Algoritmi di hashing a scopo specifico per l'archiviazione delle password
-
Cross-Site Scripting (XSS)
- Cross-Site Scripting (XSS)
- Iniezione CSS
- Sfruttamento: iniezione attraverso altri tag HTML
- Prevenzione XSS
-
Mancato controllo dell'accesso a livello di funzione
- Filtraggio dei file caricati
-
Crittografia pratica
- Garantire la riservatezza con la crittografia simmetrica
- Algoritmi di crittografia simmetrica
- Cifre a blocchi – modalità di operazione
- Hash o digest del messaggio
- Algoritmi di hashing
- Message Authentication Code (MAC)
- Garantire integrità e autenticità con una chiave simmetrica
- Garantire la riservatezza con la crittografia a chiave pubblica
- Regola pratica – possesso della chiave privata
- Errori tipici nella gestione delle password
- Esercizio – Password hard coded
- Conclusione
Principi di verifica sicura
- Test funzionale vs. test di sicurezza
- Vulnerabilità di sicurezza
- Prioritizzazione
- Test di sicurezza nell'SDLC
- Fasi di pianificazione dei test (analisi del rischio)
-
Definito dello scope e raccolta di informazioni
- Stakeholders
- Asset
- La superficie di attacco
- Obiettivi di sicurezza per i test
-
Threat modeling
- Threat modeling
- Profili dell'attaccante
- Threat modeling basato su alberi di attacco
- Threat modeling basato su casi di misuse/abuso
- Casi di misuse/abuso – un semplice esempio di negozio Web
- Approccio STRIDE per elemento al threat modeling – MS SDL
- Identificazione degli obiettivi di sicurezza
- Diagrammazione – esempi di elementi DFD
- Diagramma di flusso dei dati – esempio
- Enumerazione delle minacce – STRIDE di MS SDL ed elementi DFD
- Analisi del rischio – classificazione delle minacce
- Modello di classificazione delle minacce/rischi DREAD
-
Tecniche e strumenti di test di sicurezza
- Approcci generali di test
- Tecniche per le varie fasi dell'SDLC
-
Code review
- Code review per la sicurezza del software
- Analisi di taint
- Euristiche
-
Analisi statica del codice
- Analisi statica del codice
- Esercizio – Utilizzo di strumenti di analisi statica del codice
-
Test dell'implementazione
- Verifica manuale in runtime
- Test di sicurezza manuale vs. automatico
- Test di penetrazione
- Test di stress
-
Fuzzing
- Test di sicurezza automatizzato - fuzzing
- Sfide del fuzzing
-
Scanner di vulnerabilità Web
- Esercizio – Utilizzo di uno scanner di vulnerabilità
-
Verifica e hardening dell'ambiente
- Common Vulnerability Scoring System – CVSS
- Scanner di vulnerabilità
- Basi dati pubbliche
-
Caso di studio – Forms Authentication Bypass
- Vulnerabilità di terminazione con NULL byte
- La vulnerabilità Forms Authentication Bypass nel codice
- Sfruttamento del Forms Authentication Bypass
Fonti di conoscenza
- Fonti di programmazione sicura – kit di avvio
- Basi dati delle vulnerabilità
- Linee guida per la programmazione sicura .NET su MSDN
- Schede di riferimento per la programmazione sicura .NET
- Libri consigliati – .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