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
Reference (5)
Několik příkladů pro každý modul a skvělá znalost vyučujícího.
Sebastian - BRD
Kurz - Secure Developer Java (Inc OWASP)
Přeloženo strojem
Modul 3 Útoky a exploitace aplikací, XSS, SQL injekce Modul 4 Útoky a exploitace serverů, DoS, BOF
Tshifhiwa - Vodacom
Kurz - How to Write Secure Code
Přeloženo strojem
Obecné informace o kurzu
Paulo Gouveia - EID
Kurz - C/C++ Secure Coding
Přeloženo strojem
Tréninkový vedoucí měl vynikající znalosti předmětu a způsob, jakým byly relace uspořádány tak, aby publikum mohlo snadno následovat demonstrace, skutečně pomohl pevněji zakotvit tato znalosti ve srovnání s tím, kdy by se účastníci jen posazovali a naslouchali.
Jack Allan - RSM UK Management Ltd.
Kurz - Secure Developer .NET (Inc OWASP)
Přeloženo strojem
Nic, bylo to dokonalé.
Zola Madolo - Vodacom
Kurz - Android Security
Přeloženo strojem