Szkolenie podstawowe Combined SDL daje wgląd w projektowanie, rozwój i testowanie bezpiecznego oprogramowania poprzez Microsoft Secure Development Lifecycle (SDL). Zapewnia przegląd podstawowych elementów składowych SDL na poziomie 100, a następnie techniki projektowania, które można zastosować do wykrywania i naprawiania błędów na wczesnych etapach procesu rozwoju.
Szkolenie koncentruje się na fazie rozwoju, zawierając przegląd typowych błędów programistycznych związanych z bezpieczeństwem zarówno kodu zarządzanego, jak i natywnego. Przedstawiono metody ataków na omawiane luki w zabezpieczeniach wraz z powiązanymi technikami łagodzenia ich skutków, a wszystko to wyjaśniono za pomocą szeregu praktycznych ćwiczeń zapewniających uczestnikom zabawę w hakowanie na żywo. Po wprowadzeniu różnych metod testowania bezpieczeństwa następuje demonstracja skuteczności różnych narzędzi testowych. Uczestnicy mogą zrozumieć działanie tych narzędzi poprzez szereg praktycznych ćwiczeń, stosując narzędzia do już omówionego podatnego kodu.
Uczestnicy kursu będą
Rozumieć podstawowe pojęcia bezpieczeństwa, IT bezpieczeństwa i bezpiecznego kodowania
Znać podstawowe kroki Microsoft Secure Development Lifecycle
Nauczyć się praktyk projektowania i rozwoju bezpieczeństwa
Nauczyć się zasad wdrożenia bezpieczeństwa
Zrozumieć metodologię testowania bezpieczeństwa
- Znaleźć źródła i dalsze czytanie o praktykach bezpiecznego kodowania
Publiczność
Programiści, menedżerowie
Dzień 1
- Bezpieczeństwo IT i bezpieczne kodowanie
- Charakter bezpieczeństwa
- Terminy związane z bezpieczeństwem IT
- Definicja ryzyka
- Różne aspekty bezpieczeństwa IT
- Wymagania różnych obszarów zastosowań
- Bezpieczeństwo IT a bezpieczne kodowanie
- Od luk w zabezpieczeniach po botnety i cyberprzestępczość
- Charakter luk w zabezpieczeniach
- Przyczyny trudności
- Od zainfekowanego komputera po ataki ukierunkowane
- Klasyfikacja luk bezpieczeństwa
- Taksonomia Landwehry
- Siedem zgubnych królestw
- OWASP Pierwsza dziesiątka 2013
- OWASP Porównanie pierwszej dziesiątki lat 2003 – 2013
- Wprowadzenie do cyklu życia Microsoft® Security Development (SDL)
- Porządek obrad
- Aplikacje zagrożone...
- Ewolucja cyberprzestępczości
- Ataki koncentrują się na aplikacjach
- Większość luk występuje w mniejszych aplikacjach niezależnych dostawców oprogramowania
- Początki Microsoft SDL...
- Oś czasu zabezpieczeń w Microsoft...
- Które aplikacje muszą przestrzegać SDL?
- Microsoft Cykl rozwoju zabezpieczeń (SDL)
- Microsoft Cykl rozwoju zabezpieczeń (SDL)
- Wymagania wstępne SDL: szkolenie w zakresie bezpieczeństwa
- Faza pierwsza: Wymagania
- Faza druga: projektowanie
- Faza trzecia: wdrożenie
- Faza czwarta: Weryfikacja
- Faza piąta: Uwolnienie – Plan reakcji
- Faza piąta: Wydanie – końcowy przegląd bezpieczeństwa
- Faza piąta: Wydanie – Archiwum
- Wymóg post-SDL: Odpowiedź
- Wytyczne dotyczące procesu SDL dla aplikacji LOB
- Wytyczne SDL dotyczące metodologii Agile.
- Bezpieczne tworzenie oprogramowania wymaga ulepszenia procesów
- Bezpieczne zasady projektowania
- Powierzchnia ataku
- Redukcja powierzchni ataku
- Powierzchnia ataku – przykład
- Analiza powierzchni ataku
- Redukcja powierzchni ataku – przykłady
- Prywatność
- Prywatność
- Zrozumienie zachowań i problemów aplikacji
- Obrona w głębi
- Podstawowa zasada SDL: głęboka obrona
- Obrona głęboka – przykład
- Zasada najmniejszych przywilejów
- Najmniejsze uprawnienia – przykład
- Bezpieczne ustawienia domyślne
- Bezpieczne ustawienia domyślne – przykłady
- Powierzchnia ataku
- Bezpieczne zasady wdrażania
- Porządek obrad
- Microsoft Cykl rozwoju zabezpieczeń (SDL)
- Podstawy przepełnienia bufora
- Procesory Intel 80x86 – rejestry główne
- Układ adresu pamięci
- Mechanizm wywoływania funkcji w C/C++ na x86
- Zmienne lokalne i ramka stosu
- Przepełnienie stosu
- Przepełnienie bufora na stosie
- Ćwiczenia – wprowadzenie
- Ćwicz BOFIntro
- Ćwiczenie BOFIntro – określ układ stosu
- Ćwiczenie BOFIntro – prosty exploit
- Walidacja danych wejściowych
- Koncepcje walidacji danych wejściowych
- Problemy całkowite
- Reprezentacja ujemnych liczb całkowitych
- Całkowitą przepełnienie
- Przepełnienie arytmetyczne – zgadnij wynik!
- Ćwicz IntOverflow
- Jaka jest wartość Math.Abs(int.MinValue)?
- Łagodzenie problemu liczb całkowitych
- Łagodzenie problemu liczb całkowitych
- Unikanie przepełnienia arytmetycznego – dodawanie
- Unikanie przepełnienia arytmetycznego – mnożenie
- Wykrywanie przepełnienia zaznaczonym słowem kluczowym w C#
- Ćwiczenie – Używanie zaznaczonego słowa kluczowego w C#
- Wyjątki wywołane przepełnieniami w C#
- Studium przypadku – Przepełnienie liczb całkowitych w .NET
- Luka w zabezpieczeniach związana z przepełnieniem liczb całkowitych w świecie rzeczywistym
- Wykorzystanie luki w zabezpieczeniach związanej z przepełnieniem liczb całkowitych
- Luka w przechodzeniu ścieżki
- Łagodzenie przechodzenia przez ścieżkę
Dzień 2
- Bezpieczne zasady wdrażania
- Zastrzyk
- Typowe SQL Metody ataku wtryskowego
- Zastrzyk ślepy i czasowy SQL.
- SQL Metody zabezpieczenia wtryskowego
- Wstrzyknięcie polecenia
- Zepsute uwierzytelnianie - zarządzanie hasłami
- Ćwiczenie – Słabość hashowanych haseł
- Zarządzanie hasłami i ich przechowywanie
- Algorytmy mieszające specjalnego przeznaczenia do przechowywania haseł
- Skrypty między witrynami (XSS)
- Skrypty między witrynami (XSS)
- CSS wtrysk
- Eksploatacja: wstrzykiwanie poprzez inne HTML tagi
- Zapobieganie XSS
- Brak kontroli dostępu na poziomie funkcji
- Filtrowanie przesyłanych plików
- Praktyczna kryptografia
- Zapewnienie poufności dzięki kryptografii symetrycznej
- Algorytmy szyfrowania symetrycznego
- Szyfry blokowe – sposoby działania
- Hash lub skrót wiadomości
- Algorytmy mieszające
- Kod uwierzytelnienia wiadomości (MAC)
- Zapewnienie integralności i autentyczności za pomocą klucza symetrycznego
- Zapewnienie poufności dzięki szyfrowaniu klucza publicznego
- Praktyczna zasada – posiadanie klucza prywatnego
- Typowe błędy w zarządzaniu hasłami
- Ćwiczenie – hasła zakodowane na stałe
- Wniosek
- Zastrzyk
- Bezpieczne zasady weryfikacji
- Testowanie funkcjonalne a testowanie bezpieczeństwa
- Luki w zabezpieczeniach
- Priorytetyzacja
- Testowanie bezpieczeństwa w SDLC
- Etapy planowania testów (analiza ryzyka)
- Scoring i zbieranie informacji
- Interesariusze
- Aktywa
- Powierzchnia ataku
- Cele bezpieczeństwa dla testowania
- Modelowanie zagrożeń
- Modelowanie zagrożeń
- Profile napastników
- Modelowanie zagrożeń w oparciu o drzewa ataków
- Modelowanie zagrożeń w oparciu o przypadki niewłaściwego użycia/nadużycia
- Przypadki nadużyć/nadużyć – prosty przykład sklepu internetowego
- Podejście perelementowe STRIDE do modelowania zagrożeń – MS SDL
- Identyfikacja celów bezpieczeństwa
- Diagramowanie – przykłady elementów DFD
- Schemat przepływu danych – przykład
- Wyliczanie zagrożeń – elementy STRIDE i DFD MS SDL
- Analiza ryzyka – klasyfikacja zagrożeń
- Model rankingu zagrożeń/ryzyka DREAD
- Techniki i narzędzia testowania bezpieczeństwa
- Ogólne podejścia do testowania
- Techniki różnych etapów SDLC
- Przegląd kodu
- Przegląd kodu pod kątem bezpieczeństwa oprogramowania
- Analiza skażenia
- Heurystyka
- Analiza kodu statycznego
- Analiza kodu statycznego
- Analiza kodu statycznego
- Ćwiczenie – Korzystanie z narzędzi do analizy kodu statycznego
- Testowanie wdrożenia
- Ręczna weryfikacja czasu działania
- Ręczne a automatyczne testowanie bezpieczeństwa
- Testy penetracyjne
- Testy warunków skrajnych
- Fuzowanie
- Automatyczne testowanie bezpieczeństwa – fuzzing
- Wyzwania fuzzingu
- Skanery podatności sieci
- Ćwiczenie – Korzystanie ze skanera podatności
- Sprawdzanie i wzmacnianie środowiska
- Wspólny system punktacji podatności na ataki – CVSS
- Skanery podatności
- Publiczne bazy danych
- Studium przypadku – obejście uwierzytelniania za pomocą formularzy
- Luka w zabezpieczeniach związana z zakończeniem bajtu NULL
- Luka w kodzie związana z obejściem uwierzytelniania formularzy
- Wykorzystanie obejścia uwierzytelniania za pomocą formularzy
- Źródła wiedzy
- Bezpieczne źródła kodowania – zestaw startowy
- Bazy danych o podatnościach
- Wytyczne dotyczące bezpiecznego kodowania .NET w MSDN
- Ściągawki dotyczące bezpiecznego kodowania .NET
- Polecane książki – .NET i ASP.NET
United Arab Emirates - Microsoft SDL Core
Saudi Arabia - Microsoft SDL Core
South Africa - Microsoft SDL Core
Österreich - Microsoft SDL Core
Deutschland - Microsoft SDL Core
Czech Republic - Microsoft SDL Core
Magyarország - Microsoft SDL Core
Luxembourg - Microsoft SDL Core
Lithuania - Microsoft SDL Core
Nederland - Microsoft SDL Core
Australia - Microsoft SDL Core
New Zealand - Microsoft SDL Core
Philippines - Microsoft SDL Core
Singapore - Microsoft SDL Core
Argentina - Microsoft SDL Core
Costa Rica - Microsoft SDL Core
Guatemala - Microsoft SDL Core
Venezuela - Microsoft SDL Core
United Kingdom - Microsoft SDL Core
South Korea - Microsoft SDL Core
Sri Lanka - Microsoft SDL Core
Indonesia - Microsoft SDL Core