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
Mărturii (5)
Numerous exemple pentru fiecare modul și o mare cunoaștere a instrutorului.
Sebastian - BRD
Curs - Secure Developer Java (Inc OWASP)
Tradus de catre o masina
Modulul 3 Aplicații Atacuri și Exploatări, XSS, injecție SQL Modulul 4 Servere Atacuri și Exploitări, DoS, BOF
Tshifhiwa - Vodacom
Curs - How to Write Secure Code
Tradus de catre o masina
Informații generale despre curs
Paulo Gouveia - EID
Curs - C/C++ Secure Coding
Tradus de catre o masina
Cunoașterea instrctorului în privința subiectului a fost excelentă, iar modul în care sesiunile erau structurate pentru ca audiența să poată urma demonstrațiile a ajutat cu adevărat la consolarea acestei cunoștințe, față de a doar sta și asculta.
Jack Allan - RSM UK Management Ltd.
Curs - Secure Developer .NET (Inc OWASP)
Tradus de catre o masina
Nu era nimic, era perfect.
Zola Madolo - Vodacom
Curs - Android Security
Tradus de catre o masina