Struttura del corso

Giorno 1

Sicurezza IT e codifica sicura

  • Natura della sicurezza
  • Terminologia legata alla sicurezza IT
  • Definizione del rischio
  • Diversi aspetti della sicurezza IT
  • Requisiti di diverse aree applicative
  • Sicurezza IT vs. codifica sicura
  • Dalle vulnerabilità ai botnet e al cybercrime
    • Natura dei difetti di sicurezza
    • Motivi della difficoltà
    • Da un computer infetto a attacchi mirati
  • Classificazione dei difetti di sicurezza
    • Taxonomia di Landwehr
    • I Sette Regni Perniciosi
    • OWASP Top Ten 2013
    • Confronto tra OWASP Top Ten 2003 – 2013

Introduzione al Microsoft® Security Development Lifecycle (SDL)

  • Programma
  • Applicazioni sotto attacco...
    • Evoluzione del cybercrime
    • Gli attacchi si concentrano sulle applicazioni
    • La maggior parte delle vulnerabilità è in app di piccoli ISV
  • Origini del Microsoft SDL...
    • Cronologia della sicurezza a 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 – Pianificazione di risposta
    • Fase Cinque: Rilascio – Revisione finale della sicurezza
    • Fase Cinque: Rilascio – Archiviazione
    • Requisito post-SDL: Risposta
    • Guida al processo SDL per applicazioni LOB
    • Guida all'SDL per metodologie Agile
    • Lo sviluppo di software sicuro richiede miglioramenti del processo

Principi di progettazione sicura

  • Superficie d'attacco
    • Riduzione della superficie d'attacco
    • Superficie d'attacco – un esempio
    • Analisi della superficie d'attacco
    • Riduzione della superficie d'attacco – esempi
  • Privacy
    • Privacy
    • Comprensione dei comportamenti e delle preoccupazioni dell'applicazione
  • Difesa a più livelli
    • Principio core dell'SDL: Difesa a più livelli
    • Difesa a più livelli – esempio
  • Principio del privilegio minimo
    • Privilegio minimo – esempio
  • Impostazioni sicure predefinite
    • Impostazioni sicure predefinite – esempi

Principi di implementazione sicura

  • Programma
  • Microsoft Security Development Lifecycle (SDL)
  • Fondamenti dei buffer overflow
    • Processori Intel 80x86 – registri principali
    • La disposizione degli indirizzi di memoria
    • Il meccanismo di chiamata delle funzioni in C/C++ su x86
    • Le variabili locali e il frame dello stack
    • Overflow dello stack
      • Buffer overflow sullo stack
      • Esercizi – introduzione
      • Esercizio BOFIntro
      • Esercizio BOFIntro – determinare la disposizione dello stack
      • Esercizio BOFIntro – un semplice exploit
  • Validazione degli input
    • Concetti di validazione degli input
    • Problemi con gli interi
      • Rappresentazione degli interi negativi
      • Overflow degli interi
      • 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
      • Rilevamento dell'overflow con la parola chiave checked in C#
      • Esercizio – Utilizzo della parola chiave checked in C#
      • Eccezioni triggerizzate dagli overflow in C#
    • Studio di caso – Overflow degli interi in .NET
      • Una vulnerabilità reale di overflow degli interi
      • Sfruttamento della vulnerabilità di overflow degli interi
    • Vulnerabilità di path traversal
      • Mitigazione del path traversal

Giorno 2

Principi di implementazione sicura

  • Iniezione
    • Metodi di attacco tipici SQL Injection
    • SQL injection cieca e basata sul tempo
    • Metodi di protezione da SQL Injection
    • Iniezione di comandi
  • Autenticazione debole - gestione delle password
    • Esercizio – Debolezza delle password hash
    • Gestione e archiviazione delle password
    • Algoritmi di hash specifici per la gestione delle password
  • Cross-Site Scripting (XSS)
    • Cross-Site Scripting (XSS)
    • Iniezione di CSS
    • Sfruttamento: iniezione attraverso altri tag HTML
    • Prevenzione del XSS
  • Mancanza di controllo funzionale a livello di accesso
    • Filtraggio degli upload di file
  • Crittografia pratica
    • Fornitura della riservatezza con la crittografia simmetrica
    • Algoritmi di crittografia simmetrica
    • Cifrari a blocchi – modalità di operazione
    • Hash o digest del messaggio
    • Algoritmi hash
    • Codice di autenticazione del messaggio (MAC)
    • Fornitura dell'integrità e dell'autenticità con una chiave simmetrica
    • Fornitura della 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

  • Testing funzionale vs. testing di sicurezza
  • Vulnerabilità di sicurezza
  • Prioritizzazione
  • Testing di sicurezza nell'SDLC
  • Passaggi della pianificazione del test (analisi dei rischi)
  • Scoping e raccolta informazioni
    • Stakeholders
    • Asset
    • La superficie d'attacco
    • Obiettivi di sicurezza per il testing
  • Modellazione delle minacce
    • Modellazione delle minacce
    • Profili degli attaccanti
    • Modellazione delle minacce basata su alberi di attacco
    • Modellazione delle minacce basata su casi di uso maliziosi/abuso
    • Casi di uso maliziosi/abuso – un esempio semplice di web shop
    • Approccio STRIDE per elemento alla modellazione delle minacce – MS SDL
    • Identificazione degli obiettivi di sicurezza
    • Diagrammazione – esempi di elementi DFD
    • Diagramma dei flussi di dati – esempio
    • Enumerazione delle minacce – STRIDE e elementi DFD dell'SDL di Microsoft
    • Analisi del rischio – classificazione delle minacce
    • Modello di classificazione delle minacce/risk DREAD
  • Tecniche e strumenti di testing di sicurezza
    • Approcci generali al testing
    • Tecnologie per i vari passaggi dell'SDLC
  • Revisione del codice
    • Revisione del codice per la sicurezza software
    • Analisi della tinta (taint analysis)
    • Euristiche
  • Analisi statica del codice
    • Analisi statica del codice
    • Esercizio – Utilizzo di strumenti di analisi statica del codice
  • Testing dell'implementazione
    • Verifica manuale in tempo reale
    • Testing di sicurezza manuale vs. automatizzato
    • Test di penetrazione
    • Test di stress
  • Fuzzing
    • Testing di sicurezza automatizzato – fuzzing
    • Sfide del fuzzing
  • Scanner di vulnerabilità web
    • Esercizio – Utilizzo di un scanner di vulnerabilità
  • Controllo e hardening dell'ambiente
    • Sistema di punteggio delle vulnerabilità comune – CVSS
    • Scanner di vulnerabilità
    • Database pubblici
  • Studio di caso – Bypass dell'Autenticazione Forms
    • Vulnerabilità della terminazione del byte NULL
    • La vulnerabilità del bypass dell'autenticazione forms nel codice
    • Sfruttamento del bypass dell'autenticazione forms

Fonti di conoscenza

  • Fonti di codifica sicura – un kit di partenza
  • Database di vulnerabilità
  • Linee guida per la codifica sicura .NET su MSDN
  • Schede di riferimento per la codifica sicura .NET
  • Libri consigliati – .NET e ASP.NET
 14 Ore

Numero di Partecipanti


Prezzo per Partecipante

Recensioni (5)

Corsi in Arrivo

Categorie relative