Schița de curs

Ziua 1

Securitatea IT și codificarea sigură

  • Natura securității
  • Termeni legați de securitatea IT
  • Definiția riscului
  • Diferite aspecte ale securității IT
  • Cerințe pentru diferite domenii de aplicare
  • Securitatea IT vs. codificarea sigură
  • De la vulnerabilități la botnet-uri și infracționalitate cibernetică
    • Natura defectelor de securitate
    • Motivele dificultății
    • De la un computer infectat la atacuri țintite
  • Clasificarea defectelor de securitate
    • Taxonomia lui Landwehr
    • Cele Șapte Regate Perverse
    • OWASP Top Ten 2013
    • Comparație OWASP Top Ten 2003 – 2013

Introducere în Microsoft® Security Development Lifecycle (SDL)

  • Agenda
  • Aplicații sub atac...
    • Evoluția infracționalității cibernetice
    • Atacurile se concentrează pe aplicații
    • Majoritatea vulnerabilităților sunt în aplicațiile ISV mici
  • Originile Microsoft SDL...
    • Cronologia securității la Microsoft...
    • Care aplicații sunt obligate să urmeze SDL?
  • Microsoft Security Development Lifecycle (SDL)
    • Microsoft Security Development Lifecycle (SDL)
    • Cerințe pre-SDL: Formare în securitate
    • Faza Unu: Cerințe
    • Faza Doi: Proiectare
    • Faza Trei: Implementare
    • Faza Patru: Verificare
    • Faza Cinci: Lansare – Plan de răspuns
    • Faza Cinci: Lansare – Revizuire finală de securitate
    • Faza Cinci: Lansare – Arhivare
    • Cerință post-SDL: Răspuns
    • Ghid de proces SDL pentru aplicații LOB
    • Ghid SDL pentru metodologii Agile
    • Dezvoltarea de software sigur necesită îmbunătățirea procesului

Principii de proiectare sigură

  • Suprafața de atac
    • Reducerea suprafeței de atac
    • Suprafața de atac – un exemplu
    • Analiza suprafeței de atac
    • Reducerea suprafeței de atac – exemple
  • Confidențialitate
    • Confidențialitate
    • Înțelegerea comportamentelor și preocupărilor aplicațiilor
  • Apărare în profunzime
    • Principiul de bază SDL: Apărare în Profunzime
    • Apărare în profunzime – exemplu
  • Principiul privilegiului minim
    • Privilegiu minim – exemplu
  • Setări implicite sigure
    • Setări implicite sigure – exemple

Principii de implementare sigură

  • Agenda
  • Microsoft Security Development Lifecycle (SDL)
  • Bazele depășirii buffer-ului
    • Procesoare Intel 80x86 – registre principale
    • Layout-ul adreselor de memorie
    • Mecanismul de apelare a funcțiilor în C/C++ pe x86
    • Variabilele locale și cadrul stivei
    • Depășirea stivei
      • Depășirea buffer-ului pe stivă
      • Exerciții – introducere
      • Exercițiul BOFIntro
      • Exercițiul BOFIntro – determinarea layout-ului stivei
      • Exercițiul BOFIntro – un exploit simplu
  • Validarea intrărilor
    • Concepte de validare a intrărilor
    • Probleme cu numerele întregi
      • Reprezentarea numerelor întregi negative
      • Depășirea numerelor întregi
      • Depășirea aritmetică – ghiciți rezultatul!
      • Exercițiul IntOverflow
      • Care este valoarea lui Math.Abs(int.MinValue)?
    • Atenuarea problemelor cu numerele întregi
      • Atenuarea problemelor cu numerele întregi
      • Evitarea depășirii aritmetice – adunare
      • Evitarea depășirii aritmetice – înmulțire
      • Detectarea depășirii cu cuvântul cheie checked în C#
      • Exercițiu – Utilizarea cuvântului cheie checked în C#
      • Excepții declanșate de depășiri în C#
    • Studiu de caz – Depășirea numerelor întregi în .NET
      • O vulnerabilitate reală de depășire a numerelor întregi
      • Exploatarea vulnerabilității de depășire a numerelor întregi
    • Vulnerabilitatea de traversare a căilor
      • Atenuarea vulnerabilității de traversare a căilor

Ziua 2

Principii de implementare sigură

  • Injecție
    • Metode tipice de atac prin injecție SQL
    • Injecție SQL oarbă și bazată pe timp
    • Metode de protecție împotriva injecției SQL
    • Injecție de comenzi
  • Autentificare defectuoasă – gestionarea parolelor
    • Exercițiu – Slăbiciunea parolelor hash-uite
    • Gestionarea și stocarea parolelor
    • Algoritmi de hash specializați pentru stocarea parolelor
  • Cross-Site Scripting (XSS)
    • Cross-Site Scripting (XSS)
    • Injecție CSS
    • Exploatare: injecție prin alte tag-uri HTML
    • Prevenirea XSS
  • Lipsa controlului de acces la nivel de funcție
    • Filtrarea încărcărilor de fișiere
  • Criptografie practică
    • Asigurarea confidențialității cu criptografia simetrică
    • Algoritmi de criptare simetrică
    • Cifruri pe blocuri – moduri de operare
    • Hash sau digest de mesaj
    • Algoritmi de hash
    • Cod de autentificare a mesajelor (MAC)
    • Asigurarea integrității și autenticității cu o cheie simetrică
    • Asigurarea confidențialității cu criptografia cu cheie publică
    • Regulă generală – posesia cheii private
    • Greșeli tipice în gestionarea parolelor
    • Exercițiu – Parole hardcodate
    • Concluzie

Principii de verificare sigură

  • Testare funcțională vs. testare de securitate
  • Vulnerabilități de securitate
  • Priorizare
  • Testarea securității în SDLC
  • Pașii de planificare a testelor (analiza riscului)
  • Definirea scopului și colectarea informațiilor
    • Părți interesate
    • Active
    • Suprafața de atac
    • Obiective de securitate pentru testare
  • Modelarea amenințărilor
    • Modelarea amenințărilor
    • Profilele atacatorilor
    • Modelarea amenințărilor bazată pe arbori de atac
    • Modelarea amenințărilor bazată pe cazuri de utilizare/abuz
    • Cazuri de utilizare/abuz – un exemplu simplu de magazin online
    • Abordarea STRIDE pe elemente pentru modelarea amenințărilor – MS SDL
    • Identificarea obiectivelor de securitate
    • Diagramare – exemple de elemente DFD
    • Diagramă de flux de date – exemplu
    • Enumerarea amenințărilor – STRIDE și elementele DFD ale MS SDL
    • Analiza riscului – clasificarea amenințărilor
    • Modelul de clasificare a riscurilor DREAD
  • Tehnici și instrumente de testare a securității
    • Abordări generale de testare
    • Tehnici pentru diverse etape ale SDLC
  • Revizuirea codului
    • Revizuirea codului pentru securitatea software
    • Analiza de contaminare
    • Euristici
  • Analiza statică a codului
    • Analiza statică a codului
    • Exercițiu – Utilizarea instrumentelor de analiză statică a codului
  • Testarea implementării
    • Verificare manuală în timp real
    • Testare manuală vs. automată a securității
    • Testare de penetrare
    • Teste de stres
  • Fuzzing
    • Testare automată a securității – fuzzing
    • Provocări ale fuzzing-ului
  • Scanere de vulnerabilități web
    • Exercițiu – Utilizarea unui scaner de vulnerabilități
  • Verificarea și întărirea mediului
    • Sistemul comun de notare a vulnerabilităților – CVSS
    • Scanere de vulnerabilități
    • Baze de date publice
  • Studiu de caz – Bypass-ul autentificării prin formulare
    • Vulnerabilitatea de terminare NULL byte
    • Vulnerabilitatea Bypass-ului autentificării prin formulare în cod
    • Exploatarea vulnerabilității Bypass-ului autentificării prin formulare

Surse de cunoștințe

  • Surse de codificare sigură – un kit de început
  • Baze de date de vulnerabilități
  • Ghiduri de codificare sigură .NET la MSDN
  • Fișe de sinteză pentru codificarea sigură .NET
  • Cărți recomandate – .NET și ASP.NET
 14 Ore

Numărul de participanți


Pret per participant

Mărturii (5)

Cursuri viitoare

Categorii înrudite