Schița de curs

Ziua 1

Securitatea IT și codificarea securizată

  • Natura securității
  • Termeni legați de securitatea IT
  • Definiția riscului
  • Aspecte diferite ale securității IT
  • Cerințele pentru domenii de aplicare diferite
  • Securitatea IT vs. codificarea securizată
  • De la vulnerabilități la botnet-uri și cibercrimă
    • Natura defecțiilor de securitate
    • Motivele dificultății
    • De la un computer infectat la atacuri direcționate
  • Clasificarea defecțiilor de securitate
    • Taxonomia lui Landwehr
    • Cele șapte Regate Pernicioase
    • OWASP Top Ten 2013
    • Compararea OWASP Top Ten 2003 – 2013

Introducere în Ciclul de Viață Securizat Microsoft® (SDL)

  • Ordinea zilei
  • Aplicațiile sub atac...
    • Evoluția cibercrimii
    • Atacurile se concentrează pe aplicații
    • Cele mai multe vulnerabilități sunt în aplicațiile de la furnizori mici (ISV)
  • Originea SDL-ului Microsoft...
    • Cronologia securității la Microsoft...
    • Care aplicații trebuie să urmeze SDL?
  • Ciclul de Viață Securizat Microsoft (SDL)
    • Ciclul de Viață Securizat Microsoft (SDL)
    • Cerințe pre-SDL: Formare în securitate
    • Faza Unu: Cerințe
    • Faza Două: Design
    • Faza Trei: Implementare
    • Faza Patru: Verificare
    • Faza Cinci: Lansare – Plan de răspuns
    • Faza Cinci: Lansare – Revizuire finală a securității
    • Faza Cinci: Lansare – Arhivare
    • Cerințe post-SDL: Răspuns
    • Ghidarea procesului SDL pentru aplicațiile LOB (Line of Business)
    • Ghidare 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țialitatea
    • Confidențialitate
    • Înțelegerea comportamentelor și îngrijorărilor aplicațiilor
  • Aprofundare de apărare
    • Principiul corect al SDL: Aprofundarea de apărare
    • Aprofundarea de apărare – exemplu
  • Principiul privilegiului minim
    • Privilegiul minim – exemplu
  • Setări securizate implicite
    • Setări securizate implicite – exemple

Principii de implementare securizată

  • Ordinea zilei
  • Ciclul de Viață Securizat Microsoft (SDL)
  • Noțiuni de bază despre depasirea tamponului
    • Procesoare Intel 80x86 – registre principale
    • Structura adresei memoriei
    • Mecanismul de apel al funcțiilor în C/C++ pe x86
    • Variabilele locale și cadru stivă
    • Depasirea stivei
      • Depasirea tamponului pe stivă
      • Exerciții – introducere
      • Exercițiul BOFIntro
      • Exercițiul BOFIntro – determinarea structurii stivei
      • Exercițiul BOFIntro – o exploit simplă
  • Validarea inputului
    • Concepte de validare a inputului
    • Probleme cu numerele întregi
      • Reprezentarea numerelor întregi negative
      • Depasirea numărului întreg
      • Depasirea aritmetică – ghiciți rezultatul!
      • Exercițiul IntOverflow
      • Care este valoarea lui Math.Abs(int.MinValue)?
    • Mitigarea problemelor cu numerele întregi
      • Mitigarea problemelor cu numerele întregi
      • Evitarea depasierii aritmetice – adunare
      • Evitarea depasierii aritmetice – înmulțire
      • Detectarea depasierii cu cuvântul cheie checked în C#
      • Exercițiul – Utilizarea cuvântului cheie checked în C#
      • Excepții declanșate de depasieri în C#
    • Studiu de caz – Depasirea numărului întreg în .NET
      • O vulnerabilitate reală cu depasirea numărului întreg
      • Exploatarea vulnerabilității de depasire a numărului întreg
    • Vulnerabilitatea traversării căilor
      • Mitigarea traversării căilor

Ziua 2

Principii de implementare securizată

  • Injectarea codului
    • Metode tipice de atac prin injectie SQL
    • Injectia SQL închisă și bazată pe timp
    • Metode de protecție împotriva injectiei SQL
    • Injectia comandelor
  • Autentificare deficitară - gestionarea parolelor
    • Exercițiul – Slabicitatea parolilor hash
    • Gestionarea și stocarea parolelor
    • Algoritmi de hash specializati pentru stocarea parolelor
  • Scripting între site-uri (XSS)
    • Scripting între site-uri (XSS)
    • Injectia CSS
    • Exploatarea: injectie prin alte tag-uri HTML
    • Prevenirea XSS
  • Lipsa controlului funcțional de nivel
    • Filtrarea încărcărilor de fișiere
  • Criptografie practică
    • Asigurarea confidențialității prin criptografia simetrică
    • Algoritmi de criptare simetrici
    • Cripteaza blocuri – moduri de funcționare
    • Hash sau mesaj digest
    • Algoritmi de hash
    • Codul de autentificare a mesajului (MAC)
    • Asigurarea integrității și autenticității prin utilizarea unei chei simetrice
    • Asigurarea confidențialității prin criptare cu cheie publică
    • Regulă generală – posesia cheii private
    • Eroare tipice în gestionarea parolelor
    • Exercițiul – Parole codificate în mod hard-coded
    • Concluzie

Principii de verificare securizată

  • Testarea funcțională vs. testarea securizată
  • Vulnerabilități securizate
  • Prioritizare
  • Testarea securizată în SDLC
  • Pașii de planificare a testelor (analiza riscului)
  • Delimitarea și colectarea informațiilor
    • Stakeholders
    • Așezările de valoare
    • Suprafața de atac
    • Obiectivele de securitate pentru testare
  • Modelarea amenințărilor
    • Modelarea amenințărilor
    • Profilurile atacatorilor
    • Modelarea amenințărilor bazată pe arbori de atac
    • Modelarea amenințărilor bazată pe cazuri de abuz/misfolosire
    • Cazuri de abuz/misfolosire – un exemplu simplu de magazin web
    • Modelarea amenințărilor per element cu STRIDE – MS SDL
    • Identificarea obiectivelor de securitate
    • Desen – exemple de elemente DFD
    • Diagrama fluxului de date – exemplu
    • Enumerarea amenințărilor – elementele STRIDE și DFD ale MS SDL
    • Analiza riscurilor – clasificarea amenințărilor
    • Modelul de ranjare a amenințelor/riscurilor DREAD
  • Tehnici și instrumente de testare securizată
    • Abordări generale de testare
    • Tehnici pentru diverse pași ai SDLC
  • Revizuirea codului
    • Revizuirea codului pentru securitatea software-ului
    • Analiza de contaminație
    • Euristică
  • Analiza codului static
    • Analiza codului static
    • Exercițiul – Utilizarea instrumentelor de analiză statică a codului
  • Testarea implementării
    • Verificarea manuală la timp de rulare
    • Testarea manuală vs. testarea automatizată securizată
    • Testarea de penetrație
    • Testele de stres
  • Fuzzing
    • Testarea automatizată securizată - fuzzing
    • Provocările fuzzing-ului
  • Scanneri de vulnerabilități web
    • Exercițiul – Utilizarea unui scanner de vulnerabilități
  • Verificarea și consolidarea mediului
    • Sistemul Comun de Scorare a Vulnerabilităților – CVSS
    • Scanneri de vulnerabilități
    • Baze de date publice
  • Studiu de caz – Întrecerea Autentificării Formularului
    • Vulnerabilitatea de terminare cu octet NULL
    • Vulnerabilitatea de întrecere a autentificării formularului în cod
    • Exploatarea vulnerabilității de întrecere a autentificării formularului

Surse de cunoștințe

  • Surse de codificare securizată – un kit de început
  • Baze de date de vulnerabilități
  • Ghiduri de codificare securizată .NET pe MSDN
  • Ghiduri rapide de codificare securizată .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