Zkuste nás kontaktovat

Návrh Školení

Den 1

IT bezpečnost a bezpečné programování

  • Povaha zabezpečení
  • Pojmy související s IT bezpečností
  • Definice rizika
  • Různé aspekty IT bezpečnosti
  • Požadavky různých aplikačních oblastí
  • IT bezpečnost vs. bezpečné programování
  • Od zranitelností k botnetům a kyberkriminalitě
    • Povaha bezpečnostních chyb
    • Důvody složitosti
    • Od infikovaného počítače k cíleným útokům
  • Klasifikace bezpečnostních chyb
    • Landwehrůva taxonomie
    • The Seven Pernicious Kingdoms (Sedm záludných říší)
    • OWASP Top Ten 2013
    • Srovnání OWASP Top Ten 2003 – 2013

Úvod do Microsoft® Security Development Lifecycle (SDL)

  • Program
  • Aplikace pod útokem...
    • Evoluce kyberkriminality
    • Útoky jsou zaměřeny na aplikace
    • Většina zranitelností je v menších ISV aplikacích
  • Původ Microsoft SDL...
    • Časová osa zabezpečení u Microsoftu...
    • Které aplikace musí dodržovat SDL?
  • Microsoft Security Development Lifecycle (SDL)
    • Microsoft Security Development Lifecycle (SDL)
    • Předpoklady před SDL: Zabezpečovací školení
    • Fáze jedna: Požadavky
    • Fáze dva: Návrh
    • Fáze tři: Implementace
    • Fáze čtyři: Verifikace
    • Fáze pět: Vydání – Plán reakce
    • Fáze pět: Vydání – Finální bezpečnostní recenze
    • Fáze pět: Vydání – Archivace
    • Požadavek po SDL: Reakce
    • Pokyny pro proces SDL pro LOB aplikace
    • Pokyny pro SDL pro agilní metodiky
    • Bezpečný vývoj softwaru vyžaduje zdokonalení procesu

Principy bezpečného návrhu

  • Útočná plocha
    • Snižování útočné plochy
    • Útočná plocha – příklad
    • Analýza útočné plochy
    • Snižování útočné plochy – příklady
  • Soukromí
    • Soukromí
    • Pochopení chování aplikací a obav
  • Ochrana ve vrstvách (Defense in depth)
    • Základní princip SDL: Ochrana ve vrstvách
    • Ochrana ve vrstvách – příklad
  • Princip nejmenších oprávnění
    • Nejmenší oprávnění – příklad
  • Bezpečná výchozí nastavení
    • Bezpečná výchozí nastavení – příklady

Principy bezpečné implementace

  • Program
  • Microsoft Security Development Lifecycle (SDL)
  • Základy přetčení pole
    • Procesory Intel 80x86 – hlavní registry
    • Rozložení adres paměti
    • Mechanismus volání funkcí v C/C++ na x86
    • Lokální proměnné a stack frame
    • Přetčení stacku
      • Přetčení pole na stacku
      • Cvičení – úvod
      • Cvičení BOFIntro
      • Cvičení BOFIntro – určení rozložení stacku
      • Cvičení BOFIntro – jednoduchý exploit
  • Validace vstupů
    • Koncepty validace vstupů
    • Problémy s celými čísly
      • Předstawání záporných celých čísel
      • Přetčení celého čísla
      • Aritmetické přetčení – odhadněte výstup!
      • Cvičení IntOverflow
      • Jaká je hodnota Math.Abs(int.MinValue)?
    • Mitigace problémů s celými čísly
      • Mitigace problémů s celými čísly
      • Vyhnout se aritmetickému přetčení – sčítání
      • Vyhnout se aritmetickému přetčení – násobení
      • Detekce přetčení klíčovým slovem checked v C#
      • Cvičení – Použití klíčového slova checked v C#
      • Výjimky vyvolané přetčení v C#
    • Studijní příklad – Přetčení celého čísla v .NET
      • Reálná zranitelnost přetčení celého čísla
      • Exploitace zranitelnosti přetčení celého čísla
    • Zranitelnost přesahu cesty (Path traversal)
      • Mitigace přesahu cesty

Den 2

Principy bezpečné implementace

  • Injekce
    • Typické metody útoku SQL injektory
    • Neviditelné a časově založené SQL injektory
    • Metody ochrany proti SQL injektorům
    • Injekce příkazů
  • Nefunkční autentizace – správa hesel
    • Cvičení – Slabost hashovaných hesel
    • Správa a úložiště hesel
    • Hashovací algoritmy zvláštního účelu pro uložení hesel
  • Cross-Site Scripting (XSS)
    • Cross-Site Scripting (XSS)
    • Injekce CSS
    • Exploitace: injekce přes jiné HTML tagy
    • Prevence XSS
  • Chybějící kontrola přístupu na funkční úrovni
    • Filtrace nahrávání souborů
  • Praktická kryptografie
    • Zajištění důvěrnosti pomocí symetrické kryptografie
    • Symetrické šifrovací algoritmy
    • Blokové šifry – režimy provozu
    • Hash nebo otisk zprávy
    • Hashovací algoritmy
    • Kód autentizace zprávy (MAC)
    • Zajištění integrity a autenticity pomocí symetrického klíče
    • Zajištění důvěrnosti pomocí veřejno-klíčového šifrování
    • Zlaté pravidlo – držení soukromého klíče
    • Typické chyby ve správě hesel
    • Cvičení – Hardcoded hesla
    • Závěr

Principy bezpečné verifikace

  • Funkční testování vs. bezpečnostní testování
  • Bezpečnostní zranitelnosti
  • Prioritizace
  • Bezpečnostní testování v SDLC
  • Kroky plánování testů (analýza rizik)
  • Stanovení rozsahu a sběr informací
    • Zúčastněné strany
    • Aktiva
    • Útočná plocha
    • Bezpečnostní cíle testování
  • Modelování hrozeb
    • Modelování hrozeb
    • Profily útočníků
    • Modelování hrozeb na základě stromů útoků
    • Modelování hrozeb na základě případů zneužití/zneužití
    • Případy zneužití/zneužití – jednoduchý příklad e-shopu
    • Přístup STRIDE per element k modelování hrozeb – MS SDL
    • Identifikace bezpečnostních cílů
    • Diagramy – příklady elementů DFD
    • Diagram toku dat – příklad
    • Vyjmenování hrozeb – STRIDE a elementy DFD od MS SDL
    • Analýza rizik – klasifikace hrozeb
    • Model hodnocení hrozeb/rizik DREAD
  • Techniky a nástroje bezpečnostního testování
    • Obecné přístupy k testování
    • Techniky pro různé kroky SDLC
  • Recenze kódu
    • Recenze kódu pro bezpečnost softwaru
    • Taint analysis (Analýza kontaminace)
    • Heuristiky
  • Statická analýza kódu
    • Statická analýza kódu
    • Cvičení – Použití nástrojů statické analýzy kódu
  • Testování implementace
    • Ruční verifikace v runtime
    • Ruční vs. automatizované bezpečnostní testování
    • Penetrační testování
    • Zátěžové testy
  • Fuzzing
    • Automatizované bezpečnostní testování – fuzzing
    • Výzvy pro fuzzing
  • Skenery webových zranitelností
    • Cvičení – Použití skeneru zranitelností
  • Kontrola a posilování prostředí
    • Common Vulnerability Scoring System – CVSS
    • Skenery zranitelností
    • Veřejné databáze
  • Studijní příklad – Objití Forms Authentication
    • Zranitelnost ukončení NULL bajtem
    • Zranitelnost objití Forms Authentication v kódu
    • Exploitace objití Forms Authentication

Zdroje znalostí

  • Zdroje bezpečného programování – startovací kit
  • Databáze zranitelností
  • Pravidla bezpečného programování .NET na MSDN
  • Čarovníky (Cheat sheets) pro bezpečné programování .NET
  • Doporučené knihy – .NET a ASP.NET
 14 Hodiny

Počet účastníků


Cena za účastníka

Reference (3)

Nadcházející kurzy

Související kategorie