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)
Multiple examples for each module and great knowledge of the trainer.
Sebastian - BRD
Curs - Secure Developer Java (Inc OWASP)
Module3 Applications Attacks and Exploits, XSS, SQL injection Module4 Servers Attacks and Exploits, DOS, BOF
Tshifhiwa - Vodacom
Curs - How to Write Secure Code
Informații generale despre curs
Paulo Gouveia - EID
Curs - C/C++ Secure Coding
Tradus de catre o masina
The trainer's subject knowledge was excellent, and the way the sessions were set out so that the audience could follow along with the demonstrations really helped to cement that knowledge, compared to just sitting and listening.
Jack Allan - RSM UK Management Ltd.
Curs - Secure Developer .NET (Inc OWASP)
Nu era nimic, era perfect.
Zola Madolo - Vodacom
Curs - Android Security
Tradus de catre o masina