Course Code: cl-sdl
Duration: 14 hours
Overview:

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

Course Outline:

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
  • 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
  • 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
Sites Published:

United Arab Emirates - Microsoft SDL Core

Qatar - Microsoft SDL Core

Egypt - Microsoft SDL Core

Saudi Arabia - Microsoft SDL Core

South Africa - Microsoft SDL Core

Brasil - Microsoft SDL Core

Canada - Microsoft SDL Core

中国 - Microsoft SDL Core

香港 - Microsoft SDL Core

澳門 - Microsoft SDL Core

台灣 - Microsoft SDL Core

USA - Microsoft SDL Core

Österreich - Microsoft SDL Core

Schweiz - Microsoft SDL Core

Deutschland - Microsoft SDL Core

Czech Republic - Microsoft SDL Core

Denmark - Microsoft SDL Core

Estonia - Microsoft SDL Core

Finland - Microsoft SDL Core

Greece - Microsoft SDL Core

Magyarország - Microsoft SDL Core

Ireland - Microsoft SDL Core

Luxembourg - Microsoft SDL Core

Latvia - Microsoft SDL Core

España - Microsoft SDL Core

Italia - Microsoft SDL Core

Lithuania - Microsoft SDL Core

Nederland - Microsoft SDL Core

Norway - Microsoft SDL Core

Portugal - Microsoft SDL Core

România - Microsoft SDL Core

Sverige - Microsoft SDL Core

Türkiye - Microsoft SDL Core

Malta - Microsoft SDL Core

Belgique - Microsoft SDL Core

France - Microsoft SDL Core

日本 - Microsoft SDL Core

Australia - Microsoft SDL Core

Malaysia - Microsoft SDL Core

New Zealand - Microsoft SDL Core

Philippines - Microsoft SDL Core

Singapore - Microsoft SDL Core

Thailand - Microsoft SDL Core

Vietnam - Microsoft SDL Core

India - Microsoft SDL Core

Argentina - Microsoft SDL Core

Chile - Microsoft SDL Core

Costa Rica - Microsoft SDL Core

Ecuador - Microsoft SDL Core

Guatemala - Microsoft SDL Core

Colombia - Microsoft SDL Core

México - Microsoft SDL Core

Panama - Microsoft SDL Core

Peru - Microsoft SDL Core

Uruguay - Microsoft SDL Core

Venezuela - Microsoft SDL Core

Polska - Microsoft SDL Core

United Kingdom - Microsoft SDL Core

South Korea - Microsoft SDL Core

Pakistan - Microsoft SDL Core

Sri Lanka - Microsoft SDL Core

Bulgaria - Microsoft SDL Core

Bolivia - Microsoft SDL Core

Indonesia - Microsoft SDL Core

Kazakhstan - Microsoft SDL Core

Moldova - Microsoft SDL Core

Morocco - Microsoft SDL Core

Tunisia - Microsoft SDL Core

Kuwait - Microsoft SDL Core

Oman - Microsoft SDL Core

Slovakia - Microsoft SDL Core

Kenya - Microsoft SDL Core

Nigeria - Microsoft SDL Core

Botswana - Microsoft SDL Core

Slovenia - Microsoft SDL Core

Croatia - Microsoft SDL Core

Serbia - Microsoft SDL Core

Bhutan - Microsoft SDL Core

Nepal - Microsoft SDL Core

Uzbekistan - Microsoft SDL Core