Struttura del corso
Giorno 1
- Sicurezza informatica e codifica sicura
- Natura della sicurezza
- Termini relativi alla sicurezza informatica
- Definizione di rischio
- Diversi aspetti della sicurezza informatica
- Requisiti di diversi campi di applicazione
- Sicurezza IT e codifica sicura
- Dalle vulnerabilità alle botnet e al crimine informatico
- Natura delle falle di sicurezza
- Motivi di difficoltà
- Da un computer infetto ad attacchi mirati
- Classificazione delle falle di sicurezza
- Tassonomia di Landwehr
- I sette regni perniciosi
- OWASP Top Ten 2013
- OWASP Confronto tra i primi dieci 2003 – 2013
- Introduzione al ciclo di vita dello sviluppo della sicurezza (SDL) Microsoft ®
- Agenda
- Applicazioni sotto attacco...
- Evoluzione del crimine informatico
- Gli attacchi si stanno concentrando sulle applicazioni
- La maggior parte delle vulnerabilità si trova nelle app ISV più piccole
- Origini del Microsoft SDL...
- Cronologia della sicurezza a Microsoft...
- Quali app sono necessarie per seguire SDL?
- Microsoft Ciclo di vita dello sviluppo della sicurezza (SDL)
- Microsoft Ciclo di vita dello sviluppo della sicurezza (SDL)
- Requisiti pre-SDL: formazione sulla sicurezza
- Fase uno: requisiti
- Fase due: progettazione
- Fase tre: attuazione
- Fase quattro: verifica
- Fase cinque: Rilascio – Piano di risposta
- Fase cinque: Rilascio – Revisione finale della sicurezza
- Fase cinque: Rilascio – Archivio
- Requisito post-SDL: risposta
- Linee guida per il processo SDL per le applicazioni line-of-business
- Guida SDL per Agile metodologie
- Lo sviluppo sicuro del software richiede un 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
- Comprensione dei comportamenti e dei problemi delle applicazioni
- Difesa in profondità
- Principio fondamentale di SDL: difesa in profondità
- Difesa in profondità – esempio
- Principio del privilegio minimo
- Privilegio minimo - esempio
- Impostazioni predefinite sicure
- Impostazioni predefinite sicure – esempi
- Superficie di attacco
- Principi di implementazione sicura
- Agenda
- Microsoft Ciclo di vita dello sviluppo della sicurezza (SDL)
- Nozioni di base sull'overflow del buffer
- Processori Intel 80x86 – registri principali
- Il layout degli indirizzi di memoria
- Meccanismo di chiamata della funzione in C/C++ su x86
- Le variabili locali e lo stack frame
- Overflow della pila
- Overflow del buffer nello stack
- Esercizi – introduzione
- Esercizio BOFIntro
- Esercizio BOFIntro – determinare il layout dello stack
- Esercizio BOFIntro – un semplice exploit
- Convalida dell'input
- Concetti di convalida dell'input
- Problemi con i numeri interi
- Rappresentazione di numeri interi negativi
- Overflow intero
- Overflow aritmetico: indovina l'output!
- Esercizio IntOverflow
- Qual è il valore di Math.Abs(int. MinValue)?
- Mitigazione dei problemi interi
- Mitigazione dei problemi interi
- Evitare l'overflow aritmetico – addizione
- Evitare l'overflow aritmetico – moltiplicazione
- Rilevamento dell'overflow con la parola chiave checked in C#
- Esercizio – Utilizzo della parola chiave checked in C#
- Eccezioni attivate da tracimazioni in C#
- Case study - Overflow di numeri interi in .NET
- Una vulnerabilità di overflow di numeri interi del mondo reale
- Sfruttare la vulnerabilità dell'overflow di numeri interi
- Vulnerabilità dell'attraversamento del percorso
- Mitigazione dell'attraversamento del percorso
Giorno 2
- Principi di implementazione sicura
- Iniezione
- Metodi di attacco tipici SQL Injection
- Iniezione cieca e temporizzata SQL
- SQL Metodi di protezione dall'iniezione
- Iniezione di comandi
- Autenticazione interrotta - Gestione delle password
- Esercizio – Debolezza delle password con hash
- Gestione e archiviazione delle password
- Algoritmi hash per scopi speciali per l'archiviazione delle password
- Cross-Site Scripting (XSS)
- Cross-Site Scripting (XSS)
- CSS iniezione
- Sfruttamento: iniezione attraverso altri tag HTML
- Prevenzione XSS
- Controllo dell'accesso a livello di funzione mancante
- Filtraggio dei caricamenti di file
- Crittografia pratica
- Garantire la riservatezza con la crittografia simmetrica
- Algoritmi di crittografia simmetrica
- Cifrari a blocchi – modalità di funzionamento
- Hash o digest del messaggio
- Algoritmi hash
- Codice di autenticazione dei messaggi (MAC)
- Fornire integrità e autenticità con una chiave simmetrica
- Garantire la riservatezza con la crittografia a chiave pubblica
- Regola empirica: possesso di chiave privata
- Errori tipici nella gestione delle password
- Esercizio – Password codificate
- Conclusione
- Iniezione
- Principi di verifica sicura
- Test funzionali vs. test di sicurezza
- Vulnerabilità della sicurezza
- Definizione delle priorità
- Test di sicurezza nell'SDLC
- Fasi della pianificazione dei test (analisi dei rischi)
- Definizione dell'ambito e raccolta di informazioni
- Portatori di interessi
- Asset
- La superficie di attacco
- Obiettivi di sicurezza per i test
- Modellazione delle minacce
- Modellazione delle minacce
- Profili degli utenti malintenzionati
- Modellazione delle minacce basata su alberi di attacco
- Modellazione delle minacce basata su casi di uso improprio/abuso
- Casi di uso improprio/abuso: un semplice esempio di negozio online
- Approccio STRIDE per elemento alla modellazione delle minacce – MS SDL
- Identificazione degli obiettivi di sicurezza
- Diagrammi – esempi di elementi DFD
- Diagramma di flusso dei dati - esempio
- Enumerazione delle minacce: elementi STRIDE e DFD di MS SDL
- Analisi del rischio – classificazione delle minacce
- Il modello di classificazione delle minacce/rischi DREAD
- Tecniche e strumenti di test di sicurezza
- Approcci generali ai test
- Tecniche per le varie fasi dell'SDLC
- Revisione del codice
- Revisione del codice per la sicurezza del software
- Analisi della contaminazione
- Euristica
- Analisi statica del codice
- Analisi statica del codice
- Analisi statica del codice
- Esercizio – Utilizzo di strumenti di analisi statica del codice
- Test dell'implementazione
- Verifica manuale del tempo di esecuzione
- Test di sicurezza manuali e automatizzati
- Test di penetrazione
- Prove di stress
- Fuzzing
- Test di sicurezza automatizzati - fuzzing
- Sfide del fuzzing
- Scanner di vulnerabilità web
- Esercizio – Utilizzo di uno scanner di vulnerabilità
- Controllo e rafforzamento dell'ambiente
- Sistema di punteggio comune delle vulnerabilità - CVSS
- Scanner di vulnerabilità
- Banche dati pubbliche
- Case study - Bypass dell'autenticazione basata su form
- Vulnerabilità di terminazione di byte NULL
- La vulnerabilità di bypass dell'autenticazione basata su form nel codice
- Utilizzo del bypass dell'autenticazione basata su form
- Fonti di conoscenza
- Fonti di codifica sicure: uno starter kit
- Database delle vulnerabilità
- Linee guida per la codifica sicura .NET su MSDN
- Fogli informativi per la codifica sicura .NET
- Libri consigliati: .NET e ASP.NET
Recensioni (5)
Molteplici esempi per ogni modulo e grande conoscenza del formatore.
Sebastian - BRD
Corso - Secure Developer Java (Inc OWASP)
Traduzione automatica
Module3 Applicazioni Attacchi ed Exploit, XSS, SQL injection Attacchi ed exploit ai server Module4, DOS, BOF
Tshifhiwa - Vodacom
Corso - How to Write Secure Code
Traduzione automatica
Informazioni generali sul corso
Paulo Gouveia - EID
Corso - C/C++ Secure Coding
Traduzione automatica
The trainer's subject knowledge was excellent, and the way the sessions were set out so that the audience could follow along with the demonstrations really helped to cement that knowledge, compared to just sitting and listening.
Jack Allan - RSM UK Management Ltd.
Corso - Secure Developer .NET (Inc OWASP)
Nothing it was perfect.