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 aplikacji
  • Bezpieczeństwo IT vs. bezpieczne kodowanie
  • Od podatności do botnetów i cyberprzestępczości
    • Natura błędów bezpieczeństwa
    • Powody trudności
    • Od zainfekowanego komputera do celowanych ataków
  • Klasyfikacja błędów bezpieczeństwa
    • Taksonomia Landwhera
    • Siedem Zgubnych Królestw
    • OWASP Top Ten 2013
    • Porównanie OWASP Top Ten 2003 – 2013

Wprowadzenie do Microsoft® Security Development Lifecycle (SDL)

  • Agenda
  • Aplikacje pod atakiem...
    • Ewolucja cyberprzestępczości
    • Ataki skupiają się na aplikacjach
    • Większość podatności znajduje się w mniejszych aplikacjach ISV
  • Początki Microsoft SDL...
    • Historia bezpieczeństwa w Microsoft...
    • Które aplikacje muszą przestrzegać SDL?
  • Microsoft Security Development Lifecycle (SDL)
    • Microsoft Security Development Lifecycle (SDL)
    • Wymagania przed SDL: Szkolenie z bezpieczeństwa
    • Faza pierwsza: Wymagania
    • Faza druga: Projektowanie
    • Faza trzecia: Implementacja
    • Faza czwarta: Weryfikacja
    • Faza piąta: Wydanie – Plan reakcji
    • Faza piąta: Wydanie – Ostateczny przegląd bezpieczeństwa
    • Faza piąta: Wydanie – Archiwizacja
    • Wymaganie po SDL: Reakcja
    • Wytyczne procesu SDL dla aplikacji LOB
    • Wytyczne SDL dla metodyk Agile
    • Bezpieczny rozwój oprogramowania wymaga poprawy 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 obaw 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 domyślne ustawienia
    • Bezpieczne domyślne ustawienia – przykłady

Zasady bezpiecznej implementacji

  • Agenda
  • 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 – określenie układu stosu
      • Ćwiczenie BOFIntro – prosty exploit
  • Walidacja wejścia
    • Koncepcje walidacji wejścia
    • Problemy z liczbami całkowitymi
      • Reprezentacja liczb ujemnych
      • 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łane 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żki
      • Łagodzenie podatności na przechodzenie ścieżki

Dzień 2

Zasady bezpiecznej implementacji

  • Iniekcja
    • Typowe metody ataków SQL Injection
    • Ślepa i czasowa iniekcja SQL
    • Metody ochrony przed SQL Injection
    • Iniekcja poleceń
  • Uszkodzona autentykacja – zarządzanie hasłami
    • Ćwiczenie – Słabość zahashowanych haseł
    • Zarządzanie i przechowywanie haseł
    • Specjalne algorytmy haszujące do przechowywania haseł
  • Cross-Site Scripting (XSS)
    • Cross-Site Scripting (XSS)
    • Iniekcja CSS
    • Wykorzystanie: iniekcja przez inne tagi HTML
    • Zapobieganie XSS
  • Brak kontroli dostępu na poziomie funkcji
    • Filtrowanie przesyłanych plików
  • Praktyczna kryptografia
    • Zapewnienie poufności za pomocą kryptografii symetrycznej
    • Algorytmy szyfrowania symetrycznego
    • Szyfry blokowe – tryby działania
    • Skrót lub skrót wiadomości
    • Algorytmy haszujące
    • Kod uwierzytelniający wiadomość (MAC)
    • Zapewnienie integralności i autentyczności za pomocą klucza symetrycznego
    • Zapewnienie poufności za pomocą szyfrowania kluczem publicznym
    • Zasada – posiadanie klucza prywatnego
    • Typowe błędy w zarządzaniu hasłami
    • Ćwiczenie – Zakodowane na stałe hasła
    • Podsumowanie

Zasady bezpiecznej weryfikacji

  • Testowanie funkcjonalne vs. testowanie bezpieczeństwa
  • Podatności bezpieczeństwa
  • Priorytetyzacja
  • Testowanie bezpieczeństwa w SDLC
  • Kroki planowania testów (analiza ryzyka)
  • Określenie zakresu i gromadzenie informacji
    • Interesariusze
    • Aktywa
    • Powierzchnia ataku
    • Cele bezpieczeństwa dla testowania
  • Modelowanie zagrożeń
    • Modelowanie zagrożeń
    • Profile atakujących
    • Modelowanie zagrożeń oparte na drzewach ataków
    • Modelowanie zagrożeń oparte na przypadkach nadużycia/wykorzystania
    • Przypadki nadużycia/wykorzystania – prosty przykład sklepu internetowego
    • Podejście STRIDE per element do modelowania zagrożeń – MS SDL
    • Identyfikacja celów bezpieczeństwa
    • Diagramowanie – przykłady elementów DFD
    • Diagram przepływu danych – przykład
    • Enumeracja zagrożeń – STRIDE i elementy DFD MS SDL
    • Analiza ryzyka – klasyfikacja zagrożeń
    • Model oceny ryzyka zagrożeń DREAD
  • Techniki i narzędzia testowania bezpieczeństwa
    • Ogólne podejścia do testowania
    • Techniki dla różnych kroków SDLC
  • Przegląd kodu
    • Przegląd kodu pod kątem bezpieczeństwa oprogramowania
    • Analiza skażenia
    • Heurystyki
  • Statyczna analiza kodu
    • Statyczna analiza kodu
    • Ćwiczenie – Użycie narzędzi do statycznej analizy kodu
  • Testowanie implementacji
    • Manualna weryfikacja w czasie rzeczywistym
    • Manualne vs. automatyczne testowanie bezpieczeństwa
    • Testy penetracyjne
    • Testy obciążeniowe
  • Fuzzing
    • Automatyczne testowanie bezpieczeństwa – fuzzing
    • Wyzwania związane z fuzzingiem
  • Skanery podatności webowych
    • Ćwiczenie – Użycie skanera podatności
  • Sprawdzanie i wzmacnianie środowiska
    • Common Vulnerability Scoring System – CVSS
    • Skanery podatności
    • Publiczne bazy danych
  • Studium przypadku – Omijanie uwierzytelnienia formularzy
    • Podatność na zakończenie NULL bajtem
    • Podatność na omijanie uwierzytelnienia formularzy w kodzie
    • Wykorzystanie podatności na omijanie uwierzytelnienia formularzy

Źródła wiedzy

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

Liczba uczestników


Cena za uczestnika (netto)

Opinie uczestników (5)

Propozycje terminów

Powiązane Kategorie