Bądźmy w kontakcie
 Czas trwania 14 godzin

Plan Szkolenia

Dzień 1

Bezpieczeństwo IT i bezpieczne kodowanie

  • Natura 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 podatności do botnetów i cyberprzestępczości
    • Natura luk w zabezpieczeniach
    • Przyczyny trudności
    • Od zainfekowanego komputera do ataków ukierunkowanych
  • Klasyfikacja luk w zabezpieczeniach
    • Taksonomia Landwehra
    • Siedem zgubnych królestw
    • OWASP Top Ten 2013
    • Porównanie OWASP Top Ten 2003 – 2013

Wprowadzenie do Microsoft® Security Development Lifecycle (SDL)

  • Plan
  • Aplikacje pod ostrzałem...
    • Ewolucja cyberprzestępczości
    • Ataki koncentrują się na aplikacjach
    • Większość podatności dotyczy mniejszych aplikacji niezależnych producentów
  • Początki Microsoft SDL...
    • Kalendarium bezpieczeństwa w Microsoft...
    • Które aplikacje muszą być zgodne z SDL?
  • Microsoft Security Development Lifecycle (SDL)
    • Microsoft Security Development Lifecycle (SDL)
    • Wymagania wstępne SDL: szkolenie z bezpieczeństwa
    • Faza pierwsza: wymagania
    • Faza druga: projektowanie
    • Faza trzecia: implementacja
    • Faza czwarta: weryfikacja
    • Faza piąta: wydanie – plan reagowania
    • Faza piąta: wydanie – końcowy przegląd bezpieczeństwa
    • Faza piąta: wydanie – archiwizacja
    • Wymaganie po SDL: reagowanie
    • Wytyczne procesu SDL dla aplikacji biznesowych
    • Wytyczne SDL dla metodyk zwinnych
    • Bezpieczne tworzenie oprogramowania wymaga doskonalenia procesów

Zasady bezpiecznego projektowania

  • Powierzchnia ataku
    • Redukcja powierzchni ataku
    • Powierzchnia ataku – przykład
    • Analiza powierzchni ataku
    • Redukcja powierzchni ataku – przykłady
  • Prywatność
    • Prywatność
    • Zrozumienie zachowań i zagrożeń aplikacji
  • Obrona w głąb
    • Podstawowa zasada SDL: obrona w głąb
    • Obrona w głąb – przykład
  • Zasada najmniejszych uprawnień
    • Najmniejsze uprawnienia – przykład
  • Bezpieczne ustawienia domyślne
    • Bezpieczne ustawienia domyślne – przykłady

Zasady bezpiecznej implementacji

  • Plan
  • Microsoft Security Development Lifecycle (SDL)
  • Podstawy przepełnienia bufora
    • Procesory Intel 80x86 – główne rejestry
    • Układ adresów 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
      • Ćwiczenie BOFIntro
      • Ćwiczenie BOFIntro – ustalanie układu stosu
      • Ćwiczenie BOFIntro – prosty exploit
  • Walidacja danych wejściowych
    • Koncepcje walidacji danych wejściowych
    • Problemy z liczbami całkowitymi
      • Reprezentacja ujemnych liczb całkowitych
      • Przepełnienie liczby całkowitej
      • Przepełnienie arytmetyczne – zgadnij wynik!
      • Ćwiczenie IntOverflow
      • Jaka jest wartość Math.Abs(int.MinValue)?
    • Łagodzenie problemów z liczbami całkowitymi
      • Łagodzenie problemów z liczbami całkowitymi
      • Unikanie przepełnienia arytmetycznego – dodawanie
      • Unikanie przepełnienia arytmetycznego – mnożenie
      • Wykrywanie przepełnienia za pomocą słowa kluczowego checked w C#
      • Ćwiczenie – użycie słowa kluczowego checked w C#
      • Wyjątki wywoływane przez przepełnienia w C#
    • Studium przypadku – przepełnienie liczby całkowitej w .NET
      • Rzeczywista podatność na przepełnienie liczby całkowitej
      • Wykorzystanie podatności na przepełnienie liczby całkowitej
    • Podatność na przechodzenie ścieżek
      • Łagodzenie przechodzenia ścieżek

Dzień 2

Zasady bezpiecznej implementacji

  • Wstrzykiwanie
    • Typowe metody ataków SQL Injection
    • Ślepe i czasowe wstrzykiwanie SQL
    • Metody ochrony przed SQL Injection
    • Wstrzykiwanie poleceń
  • Wadliwe uwierzytelnianie – zarządzanie hasłami
    • Ćwiczenie – słabość zahaszowanych haseł
    • Zarządzanie hasłami i ich przechowywanie
    • Specjalne algorytmy skrótu do przechowywania haseł
  • Cross-Site Scripting (XSS)
    • Cross-Site Scripting (XSS)
    • Wstrzykiwanie CSS
    • Eksploitacja: wstrzykiwanie przez inne znaczniki HTML
    • Zapobieganie XSS
  • Brak kontroli dostępu na poziomie funkcji
    • Filtrowanie przesyłanych plików
  • Kryptografia praktyczna
    • Zapewnianie poufności za pomocą kryptografii symetrycznej
    • Algorytmy szyfrowania symetrycznego
    • Szyfry blokowe – tryby działania
    • Skrót lub skrót wiadomości
    • Algorytmy skrótu
    • Kod uwierzytelniania wiadomości (MAC)
    • Zapewnianie integralności i autentyczności za pomocą klucza symetrycznego
    • Zapewnianie poufności za pomocą szyfrowania kluczem publicznym
    • Praktyczna zasada – posiadanie klucza prywatnego
    • Typowe błędy w zarządzaniu hasłami
    • Ćwiczenie – hasła zapisane na stałe
    • Wnioski

Zasady bezpiecznej weryfikacji

  • Testowanie funkcjonalne a testowanie bezpieczeństwa
  • Luki w zabezpieczeniach
  • Priorytetyzacja
  • Testowanie bezpieczeństwa w SDLC
  • Etapy planowania testów (analiza ryzyka)
  • Określanie zakresu i zbieranie informacji
    • Interesariusze
    • Zasoby
    • Powierzchnia ataku
    • Cele bezpieczeństwa testów
  • Modelowanie zagrożeń
    • Modelowanie zagrożeń
    • Profile atakujących
    • Modelowanie zagrożeń na podstawie drzew ataków
    • Modelowanie zagrożeń na podstawie przypadków nadużyć/niewłaściwego użycia
    • Przypadki nadużyć/niewłaściwego użycia – prosty przykład sklepu internetowego
    • Podejście STRIDE dla elementów w modelowaniu zagrożeń – MS SDL
    • Identyfikowanie celów bezpieczeństwa
    • Diagramowanie – przykłady elementów DFD
    • Diagram przepływu danych – przykład
    • Wyliczanie zagrożeń – STRIDE i elementy DFD wg MS SDL
    • Analiza ryzyka – klasyfikacja zagrożeń
    • Model oceny zagrożeń/ryzyka DREAD
  • Techniki i narzędzia testowania bezpieczeństwa
    • Ogólne podejścia do testowania
    • Techniki dla różnych etapów SDLC
  • Przegląd kodu
    • Przegląd kodu pod kątem bezpieczeństwa oprogramowania
    • Analiza skażenia danych
    • Heurystyki
  • Statyczna analiza kodu
    • Statyczna analiza kodu
    • Ćwiczenie – użycie narzędzi do statycznej analizy kodu
  • Testowanie implementacji
    • Ręczna weryfikacja w czasie wykonania
    • Ręczne a automatyczne testowanie bezpieczeństwa
    • Testy penetracyjne
    • Testy obciążeniowe
  • Fuzzing
    • Automatyczne testowanie bezpieczeństwa – fuzzing
    • Wyzwania fuzzingu
  • Skanery podatności aplikacji internetowych
    • Ćwiczenie – użycie skanera podatności
  • Sprawdzanie i wzmacnianie środowiska
    • Wspólny system oceny podatności – CVSS
    • Skanery podatności
    • Publiczne bazy danych
  • Studium przypadku – obejście Forms Authentication
    • Podatność związana z kończeniem łańcucha znaków bajtem zerowym
    • Podatność Forms Authentication Bypass w kodzie
    • Wykorzystanie Forms Authentication Bypass

Źródła wiedzy

  • Źródła bezpiecznego kodowania – zestaw startowy
  • Bazy danych podatności
  • Wytyczne bezpiecznego kodowania .NET w MSDN
  • Ściągawki bezpiecznego kodowania .NET
  • Polecane książki – .NET i ASP.NET

Liczba uczestników


Cena za uczestnika (netto)

Opinie uczestników (3)

Propozycje terminów

Powiązane Kategorie