Návrh Školení

Den 1

IT bezpečnost a bezpečné kódování

  • Příroda bezpečnosti
  • Pojmy související s IT bezpečností
  • Definice rizika
  • Různé aspekty IT bezpečnosti
  • Požadavky různých aplikacích
  • IT bezpečnost vs. bezpečné kódování
  • Od zranitelností po botnet a kybernetický crime
    • Příroda bezpečnostních chyb
    • Důvody obtíží
    • Od infikovaného počítače k cíleným útokům
  • Klasifikace bezpečnostních chyb
    • Landwehr’s taxonomy
    • The Seven Pernicious Kingdoms
    • OWASP Top Ten 2013
    • Porovnání OWASP Top Ten 2003 – 2013

Úvod do Microsoft® Security Development Lifecycle (SDL)

  • Program
  • Aplikace pod útokem...
    • Evoluce kybernetického crimeu
    • Útoky se zaměřují na aplikace
    • Většina zranitelností je v menších aplikacích ISV
  • Původ Microsoft SDL...
    • Chronologie bezpečnosti u Microsoftu...
    • Které aplikace musí dodržovat SDL?
  • Microsoft Security Development Lifecycle (SDL)
    • Microsoft Security Development Lifecycle (SDL)
    • Požadavky před SDL: Zabezpečení tréninku
    • Fáze Jeden: Požadavky
    • Fáze Dva: Návrh
    • Fáze Tři: Implementace
    • Fáze Čtyři: Overování
    • Fáze Pět: Vydání – Reakční plán
    • Fáze Pět: Vydání – Konečný bezpečnostní přehled
    • Fáze Pět: Vydání – Archivace
    • Požadavky po SDL: Reakce
    • SDL procesní vedení pro LOB aplikace
    • SDL vedení pro agilní metodologie
    • Bezpečný software vyžaduje zlepšení procesu

Zásady bezpečného návrhu

  • Útočná povrchová plocha
    • Redukce útočné povrchové plochy
    • Útočná povrchová plocha – příklad
    • Analýza útočné povrchové plochy
    • Redukce útočné povrchové plochy – příklady
  • Soukromí
    • Soukromí
    • Porozumění chování a obav aplikací
  • Bezpečnost ve vrstvách (Defense in depth)
    • Hlavní zásada SDL: Bezpečnost ve vrstvách
    • Bezpečnost ve vrstvách – příklad
  • Zásada nejmenších oprávnění (Least privilege)
    • Nejmenší oprávnění – příklad
  • Bezpečné výchozí nastavení (Secure defaults)
    • Bezpečné výchozí nastavení – příklady

Zásady bezpečné implementace

  • Program
  • Microsoft Security Development Lifecycle (SDL)
  • Základy přetečení vyrovnávací paměti (Buffer overflow)
    • Intel 80x86 procesory – hlavní registry
    • Rozložení paměťových adres
    • Mechanismus volání funkcí v C/C++ na x86
    • Místní proměnné a stack frame
    • Přetečení zásobníku (Stack overflow)
      • Přetečení vyrovnávací paměti na zásobníku
      • Cvičení – úvod
      • Cvičení BOFIntro
      • Cvičení BOFIntro – určení rozložení zásobníku
      • Cvičení BOFIntro – jednoduchý útok
  • Validace vstupu (Input validation)
    • Koncepty validace vstupu
    • Problémy s celými čísly
      • Reprezentace záporných celých čísel
      • Přetečení celého čísla (Integer overflow)
      • Aritmetické přetečení – hádejte výstup!
      • Cvičení IntOverflow
      • Jaká je hodnota Math.Abs(int.MinValue)?
    • Mírnění problémů s celými čísly
      • Mírnění problémů s celými čísly
      • Omlouvání aritmetického přetečení – sčítání
      • Omlouvání aritmetického přetečení – násobení
      • Detekce přetečení pomocí klíčového slova checked v C#
      • Cvičení – Použití klíčového slova checked v C#
      • Výjimky vyvolané přetečením v C#
    • Studie případu – Přetečení celého čísla v .NET
      • Reálná zranitelnost přetečení celého čísla
      • Exploze zranitelnosti přetečení celého čísla
    • Zranitelnost přesunutí cesty (Path traversal vulnerability)
      • Mírnění přesunutí cesty

Den 2

Zásady bezpečné implementace

  • Injekce (Injection)
    • Typické metody útoku SQL injekcí
    • Slepá a časově založená SQL injekce
    • Metody ochrany před SQL injekcemi
    • Injekce příkazů (Command injection)
  • Porušená ověření autentizace – správa hesel
    • Cvičení – Slabost hašovaných hesel
    • Správa a uchování hesel
    • Speciální účelové hash algoritmy pro uchování hesel
  • Cross-Site Scripting (XSS)
    • Cross-Site Scripting (XSS)
    • CSS injekce
    • Exploze: Injekce skrze jiné HTML tagy
    • Prevence XSS
  • Chybějící funkční úrovňové řízení přístupu
    • Filtrace nahrávaných souborů
  • Praktická kryptografie
    • Zajištění důvěrnosti pomocí symetrické kryptografie
    • Symetrické šifrovací algoritmy
    • Blokové šifry – režimy provádění
    • Hash nebo zpráva (message digest)
    • Hash algoritmy
    • Message Authentication Code (MAC)
    • Zajištění integritu a autentičnosti pomocí symetrického klíče
    • Zajištění důvěrnosti pomocí veřejného šifrování
    • Pravidlo pouze pro – vlastnictví privátního klíče
    • Typické chyby ve správě hesel
    • Cvičení – Předdefinovaná hesla
    • Závěr

Zásady bezpečného ověřování

  • Funkční testování vs. bezpečnostní testování
  • Bezpečnostní zranitelnosti
  • Priorizace
  • Bezpečnostní testování v SDLC
  • Kroky plánování testů (analýza rizik)
  • Rozsah a sběr informací
    • Stakeholders
    • Majetek (Assets)
    • Útočná povrchová plocha
    • Cíle bezpečnostního testování
  • Modelování hrozeb (Threat modeling)
    • Modelování hrozeb
    • Profily útočníků
    • Modelování hrozeb založené na stromech útoků
    • Modelování hrozeb založené na nesprávném nebo špatném použití (misuse/abuse cases)
    • Misuse/abuse cases – jednoduchý příklad e-shopu
    • STRIDE přístup k modelování hrozeb pro každou součást – MS SDL
    • Identifikace bezpečnostních cílů
    • Vykreslování – příklady elementů DFD (Data Flow Diagram)
    • Data Flow Diagram – příklad
    • Seznamování hrozeb – STRIDE a elementy DFD z MS SDL
    • Analýza rizik – klasifikace hrozeb
    • Model hodnocení hrozeb/risk/ DREAD
  • Techniky a nástroje bezpečnostního testování
    • Obecné přístupy k testování
    • Techniky pro různé fáze SDLC
  • Kódový review (Code review)
    • Kódový review pro bezpečnost software
    • Analýza kontaminace (Taint analysis)
    • Heuristika
  • Statická analýza kódu (Static code analysis)
    • Statická analýza kódu
    • Cvičení – Použití nástrojů pro statickou analýzu kódu
  • Testování implementace
    • Manuální runtime ověřování
    • Manuální vs. automatizované bezpečnostní testování
    • Penetrační testování (Penetration testing)
    • Stress testy
  • Fuzzing
    • Automatizované bezpečnostní testování – fuzzing
    • Výzvy fuzzingu
  • Skenery bezpečnostních zranitelností (Web vulnerability scanners)
    • Cvičení – Použití skeneru zranitelností
  • Kontrola a tvrdění prostředí (Checking and hardening the environment)
    • Common Vulnerability Scoring System – CVSS
    • Skenery zranitelností
    • Veřejné databáze
  • Studie případu – Forms Authentication Bypass
    • Zranitelnost ukončování nulovým bajtem (NULL byte termination vulnerability)
    • Zranitelnost Forms Authentication Bypass v kódu
    • Exploze Forms Authentication Bypassu

Zdroje znalostí

  • Bezpečné zdroje kódování – Starter kit
  • Databáze zranitelností
  • .NET bezpečné pokyny pro kódování na MSDN
  • .NET bezpečné štítky (cheat sheets)
  • Doporučené knihy – .NET a ASP.NET
 14 hodiny

Počet účastníků


Cena za účastníka

Reference (5)

Nadcházející kurzy

Související kategorie