Intrati in legatura

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 botnete și criminalitate cibernetică
    • Natura vulnerabilităților de securitate
    • Motivele dificultății
    • De la un computer infectat la atacuri direcționate
  • Clasificarea vulnerabilităților de securitate
    • Taxonomia lui Landwehr
    • Cele Șapte Regate Pernoase
    • 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 criminalității cibernetice
    • Atacurile se concentrează pe aplicații
    • Cele mai multe vulnerabilități se găsesc în aplicațiile ISV 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: 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ă a securității
    • Faza Cinci: Lansare – Arhivare
    • Cerință post-SDL: Răspuns
    • Ghid de proces SDL pentru aplicațiile 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
    • Privilegiul 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
    • Dispunerea 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țiu BOFIntro
      • Exercițiu BOFIntro – determinarea dispunerii stivei
      • Exercițiu BOFIntro – un exploit simplu
  • Validarea intrărilor
    • Concepte de validare a intrărilor
    • Probleme cu numerele întregi
      • Reprezentarea numerelor întregi negative
      • Depășirea întregilor
      • Depășirea aritmetică – ghici rezultatul!
      • Exercițiu 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 întregilor în .NET
      • O vulnerabilitate reală de depășire a întregilor
      • Exploatarea vulnerabilității de depășire a întregilor
    • Vulnerabilitatea de traversare a căilor
      • Atenuarea traversării căilor

Ziua 2

Principii de implementare sigură

  • Injecție
    • Metode tipice de atac SQL Injection
    • Injecție SQL oarbă și bazată pe timp
    • Metode de protecție împotriva SQL Injection
    • 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
    • Filtrări ale încărcărilor de fișiere
  • Criptografie practică
    • Oferirea confidențialității cu criptografie simetrică
    • Algoritmi de criptare simetrică
    • Cifruri pe blocuri – moduri de operare
    • Hash sau digest al mesajului
    • Algoritmi de hash
    • Cod de autentificare a mesajului (MAC)
    • Oferirea integrității și autenticității cu o cheie simetrică
    • Oferirea confidențialității cu criptografie 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și de planificare a testelor (analiza riscurilor)
  • Definirea domeniului și colectarea informațiilor
    • Părți interesate
    • Active
    • Suprafața de atac
    • Obiective de securitate pentru testare
  • Modelarea amenințărilor
    • Modelarea amenințărilor
    • Profile ale atacatorilor
    • Modelarea amenințărilor bazată pe arbori de atac
    • Modelarea amenințărilor bazată pe cazuri de abuz/utilizare greșită
    • Cazuri de abuz/utilizare greșită – un exemplu simplu de magazin online
    • Abordarea STRIDE pe elemente pentru modelarea amenințărilor – MS SDL
    • Identificarea obiectivelor de securitate
    • Diagrame – exemple de elemente DFD
    • Diagrama de flux de date – exemplu
    • Enumerarea amenințărilor – STRIDE și elementele DFD ale MS SDL
    • Analiza riscurilor – clasificarea amenințărilor
    • Modelul de clasificare a riscurilor/amenințărilor 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
    • 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
  • Scannere de vulnerabilități web
    • Exercițiu – Utilizarea unui scanner de vulnerabilități
  • Verificarea și întărirea mediului
    • Sistemul comun de notare a vulnerabilităților – CVSS
    • Scannere de vulnerabilități
    • Baze de date publice
  • Studiu de caz – Ocolirea autentificării prin formulare
    • Vulnerabilitate de terminare cu byte NULL
    • Vulnerabilitatea de ocolire a autentificării prin formulare în cod
    • Exploatarea vulnerabilității de ocolire a 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 pe MSDN
  • Fișe de sintaxă pentru codificarea sigură .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