Intrati in legatura
 Durata 14 ore

Schița de curs

Ziua 1

Securitatea IT și codarea securizată

  • Natura securității
  • Termeni legați de securitatea IT
  • Definiția riscului
  • Diferite aspecte ale securității IT
  • Cerințe ale diferitelor domenii de aplicare
  • Securitatea IT vs. codarea securizată
  • De la vulnerabilități la botnet-uri și criminalitate 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 Pernicioase
    • OWASP Top Ten 2013
    • Comparație OWASP Top Ten 2003 – 2013

Introducere în Microsoft® Security Development Lifecycle (SDL)

  • Agendă
  • Aplicații sub atac...
    • Evoluția criminalității cibernetice
    • Atacurile se concentrează pe aplicații
    • Cele mai multe vulnerabilități sunt în aplicații ISV mai mici
  • Originile Microsoft SDL...
    • Cronologia securității la Microsoft...
    • Ce aplicații trebuie să urmeze SDL?
  • Microsoft Security Development Lifecycle (SDL)
    • Microsoft Security Development Lifecycle (SDL)
    • Cerințe pre-SDL: Security Training
    • Faza unu: Cerințe
    • Faza doi: Design
    • 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 securizată a software-ului necesită îmbunătățirea proceselor

Principii de design securizat

  • 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
    • Privilegiul minim – exemplu
  • Valori implicite securizate
    • Valori implicite securizate – exemple

Principii de implementare securizată

  • Agendă
  • Microsoft Security Development Lifecycle (SDL)
  • Noțiuni de bază despre buffer overflow
    • Procesoare Intel 80x86 – registre principale
    • Structura adreselor de memorie
    • Mecanismul de apelare a funcțiilor în C/C++ pe x86
    • Variabilele locale și cadrul de stivă
    • Stack overflow
      • Buffer overflow pe stivă
      • Exerciții – introducere
      • Exercițiul BOFIntro
      • Exercițiul BOFIntro – determinarea structurii stivei
      • Exercițiul BOFIntro – un exploit simplu
  • Validarea intrărilor
    • Concepte de validare a intrărilor
    • Probleme cu numerele întregi
      • Reprezentarea numerelor întregi negative
      • Integer overflow
      • Overflow aritmetic – ghicește rezultatul!
      • Exercițiul IntOverflow
      • Care este valoarea Math.Abs(int.MinValue)?
    • Atenuarea problemelor cu numerele întregi
      • Atenuarea problemelor cu numerele întregi
      • Evitarea overflow-ului aritmetic – adunare
      • Evitarea overflow-ului aritmetic – înmulțire
      • Detectarea overflow-ului cu cuvântul cheie checked în C#
      • Exercițiu – Folosirea cuvântului cheie checked în C#
      • Excepții declanșate de overflow în C#
    • Studiu de caz – Integer overflow în .NET
      • O vulnerabilitate reală de integer overflow
      • Exploatarea vulnerabilității de integer overflow
    • Vulnerabilitatea de path traversal
      • Atenuarea path traversal

Ziua 2

Principii de implementare securizată

  • Injecție
    • Metode tipice de atac prin SQL Injection
    • Blind și time-based SQL injection
    • Metode de protecție împotriva SQL Injection
    • Command injection
  • Autentificare defectuoasă - gestionarea parolelor
    • Exercițiu – Slăbiciunea parolelor hash-uite
    • Gestionarea și stocarea parolelor
    • Algoritmi hash cu scop special pentru stocarea parolelor
  • Cross-Site Scripting (XSS)
    • Cross-Site Scripting (XSS)
    • Injecție CSS
    • Exploatare: injecție prin alte etichete HTML
    • Prevenirea XSS
  • Controlul accesului lipsă la nivel de funcție
    • Filtrarea încărcării fișierelor
  • Criptografie practică
    • Asigurarea confidențialității cu criptografie simetrică
    • Algoritmi de criptare simetrică
    • Cifruri pe blocuri – moduri de operare
    • Hash sau message digest
    • Algoritmi hash
    • Message Authentication Code (MAC)
    • Asigurarea integrității și autenticității cu o cheie simetrică
    • Asigurarea confidențialității cu criptare cu cheie publică
    • Regula de bază – posedarea cheii private
    • Greșeli tipice în gestionarea parolelor
    • Exercițiu – Parole hard-codate
    • Concluzie

Principii de verificare securizată

  • Testare funcțională vs. testare de securitate
  • Vulnerabilități de securitate
  • Prioritizare
  • Testarea de securitate în SDLC
  • Pașii planificării testelor (analiza riscurilor)
  • Stabilirea scopului și colectarea informațiilor
    • Părți interesate
    • Active
    • Suprafața de atac
    • Obiective de securitate pentru testare
  • Threat modeling
    • Threat modeling
    • Profiluri de atacatori
    • Threat modeling bazat pe arbori de atac
    • Threat modeling bazat pe cazuri de utilizare abuzivă
    • Cazuri de utilizare abuzivă – un exemplu simplu de magazin web
    • Abordarea STRIDE per element pentru threat modeling – MS SDL
    • Identificarea obiectivelor de securitate
    • Diagramare – exemple de elemente DFD
    • Diagrama fluxului de date – exemplu
    • Enumerarea amenințărilor – STRIDE de la MS SDL și elemente DFD
    • Analiza riscurilor – clasificarea amenințărilor
    • Modelul de clasificare a amenințărilor/riscurilor DREAD
  • Tehnici și instrumente de testare a securității
    • Abordări generale de testare
    • Tehnici pentru diferite etape ale SDLC
  • Revizuirea codului
    • Revizuirea codului pentru securitatea software-ului
    • Analiza taint
    • Euristici
  • Analiza statică a codului
    • Analiza statică a codului
    • Exercițiu – Folosirea instrumentelor de analiză statică a codului
  • Testarea implementării
    • Verificare manuală la runtime
    • Testare de securitate manuală vs. automatizată
    • Penetration testing
    • Teste de stres
  • Fuzzing
    • Testare de securitate automatizată - fuzzing
    • Provocările fuzzing-ului
  • Scanere de vulnerabilități web
    • Exercițiu – Folosirea unui scaner de vulnerabilități
  • Verificarea și securizarea mediului
    • Common Vulnerability Scoring System – CVSS
    • Scanere de vulnerabilități
    • Baze de date publice
  • Studiu de caz – Bypass Forms Authentication
    • Vulnerabilitatea de terminare NULL byte
    • Vulnerabilitatea Forms Authentication Bypass în cod
    • Exploatarea Forms Authentication Bypass

Surse de cunoștințe

  • Surse de codare securizată – un kit de pornire
  • Baze de date de vulnerabilități
  • Ghiduri de codare securizată .NET pe MSDN
  • Cheat sheets de codare securizată .NET
  • Cărți recomandate – .NET și ASP.NET

Numărul de participanți


Pret per participant

Mărturii (3)

Cursuri viitoare

Categorii înrudite