Contattataci

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

Numero di Partecipanti


Prezzo per partecipante

Recensioni (3)

Corsi in Arrivo

Categorie relative