Intrati in legatura

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ția 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țiile ISV mai mici
  • Originile Microsoft SDL...
    • Cronologia securității la Microsoft...
    • Care aplicații trebuie să urmeze SDL?
  • Microsoft Security Development Lifecycle (SDL)
    • Microsoft Security Development Lifecycle (SDL)
    • Cerințe pre-SDL: Training de securitate
    • Faza unu: Cerințe
    • Faza doi: Proiectare
    • Faza trei: Implementare
    • Faza patru: Verificare
    • Faza cinci: Lansare – Plan de răspuns
    • Faza cinci: Lansare – Revizuirea finală de securitate
    • Faza cinci: Lansare – Arhivare
    • Cerință post-SDL: Răspuns
    • Ghidul procesului SDL pentru aplicațiile LOB
    • Ghidul SDL pentru metodologii Agile
    • Dezvoltarea securizată a software-ului necesită îmbunătățirea procesului

Principii de proiectare 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ției
  • Apărare în profunzime
    • Principiul de bază SDL: Apărare în profunzime
    • Apărare în profunzime – exemplu
  • Principiul celui mai mic privilegiu
    • Cel mai mic privilegiu – exemplu
  • Valori implicite securizate
    • Valori implicite securizate – exemple

Principii de implementare securizată

  • Agendă
  • Microsoft Security Development Lifecycle (SDL)
  • Bazele buffer overflow
    • Procesoarele Intel 80x86 – registrele 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
      • Depășirea 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 depășirii aritmetice – adunarea
      • Evitarea depășirii aritmetice – înmulțirea
      • Detectarea depășirii cu cuvântul cheie checked în C#
      • Exercițiu – Folosirea cuvântului cheie checked în C#
      • Excepții declanșate de depășiri î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 SQL Injection
    • SQL injection orb și bazat pe timp
    • 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 tag-uri HTML
    • Prevenirea XSS
  • Controlul accesului lipsește 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 bloc – moduri de operare
    • Hash sau rezumat de mesaj
    • Algoritmi hash
    • Cod de autentificare a mesajului (MAC)
    • Asigurarea integrității și autenticității cu o cheie simetrică
    • Asigurarea confidențialității cu criptarea cu cheie publică
    • Regula de bază – posesia cheii private
    • Greșeli tipice în gestionarea parolelor
    • Exercițiu – Parole hardcodate
    • Concluzie

Principii de verificare securizată

  • Testarea funcțională vs. testarea de securitate
  • Vulnerabilități de securitate
  • Prioritizare
  • Testarea de securitate în SDLC
  • Pașii planificării testelor (analiza riscului)
  • Definirea scopului și colectarea informațiilor
    • Părți interesate
    • Active
    • Suprafața de atac
    • Obiectivele 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 din MS SDL și elementele DFD
    • Analiza riscului – 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
    • Verificarea manuală la runtime
    • Testarea de securitate manuală vs. automată
    • Penetration testing
    • Teste de stres
  • Fuzzing
    • Testarea automată a securității - 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 la autentificarea Forms
    • Vulnerabilitatea de terminare cu byte NULL
    • Vulnerabilitatea de bypass la autentificarea Forms în cod
    • Exploatarea bypass-ului la autentificarea Forms

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 pentru codarea securizată .NET
  • Cărți recomandate – .NET și ASP.NET
 14 Ore

Numărul de participanți


Pret per participant

Mărturii (3)

Cursuri viitoare

Categorii înrudite