Kursplan
Dag 1
IT-säkerhet och säker programmering
- Säkerhetens natur
- Termer relaterade till IT-säkerhet
- Riskdefinition
- Olika aspekter av IT-säkerhet
- Krav för olika programområden
- IT-säkerhet vs. säker programmering
-
Från sårbarheter till botnät och cybrikriminalitet
- Säkerhetens natur
- Orsaker till svårigheter
- Från en infekterad dator till målade anfall
-
Klassificering av säkerhetsbrister
- Landwehr’s taxonomi
- The Seven Pernicious Kingdoms
- OWASP Top Ten 2013
- Jämförelse av OWASP Top Ten 2003 – 2013
Introduktion till Microsoft® Security Development Lifecycle (SDL)
- Dagordning
-
Program under attack...
- Utvecklingen av cybrikriminalitet
- Angrepp fokuserar på program
- De flesta sårbarheter finns i mindre ISV-program
-
Uppkomsten av Microsoft SDL...
- Säkerhetstidslinje på Microsoft...
- Vilka program kräver att följa SDL?
-
Microsoft Security Development Lifecycle (SDL)
- Microsoft Security Development Lifecycle (SDL)
- För-SLD-krav: Säkerhetsutbildning
- Fas ett: Krav
- Fas två: Design
- Fas tre: Implementering
- Fas fyra: Verifiering
- Fas fem: Utgivning – Reaktionsplan
- Fas fem: Utgivning – Slutsäkerhetsgranskning
- Fas fem: Utgivning – Arkivering
- Efter-SLD-krav: Reaktion
- SDL-processguiden för LOB-program
- SDL-guiden för agila metodik
- Säker programutveckling kräver processförbättring
Principer för säker design
-
Angreppsytan
- Minimera angreppsyta
- Angreppsyta – ett exempel
- Analys av angreppsyta
- Minimera angreppsyta – exempel
-
Integritet
- Integritet
- Förståelse av programbeteende och bekymmer
-
Djupgående försvar
- SDL-kärnprincip: Djupgående försvar
- Djupgående försvar – exempel
-
Minsta behörighetsprincipen
- Minsta behörighet – exempel
-
Säker standardinställning
- Säker standardinställning – exempel
Principer för säker implementering
- Dagordning
- Microsoft Security Development Lifecycle (SDL)
-
Grundläggande buffer overflow
- Intel 80x86 Processorer – huvudregistreringar
- Minnesadress-layouten
- Funktionshandlingsmekanism i C/C++ på x86
- Lokala variabler och stackramen
-
Stack overflow
- Buffer overflow i stacken
- Övningar – introduktion
- Övning BOFIntro
- Övning BOFIntro – fastställ stacklayouten
- Övning BOFIntro – ett enkelt exploit
-
Inmatningsvalidering
- Koncept för inmatningsvalidering
-
Heltalsproblem
- Representation av negativa heltal
- Heltalsoverskridning
- Aritmetiskt överflöde – gissa resultatet!
- Övning IntOverflow
- Vad är värdet av Math.Abs(int.MinValue)?
-
Mitietering av heltalsproblem
- Mitietering av heltalsproblem
- Undvik aritmetiskt överflöde – addition
- Undvik aritmetiskt överflöde – multiplikation
- Detektera överflöde med checked nyckelordet i C#
- Övning – Använda checked nyckelordet i C#
- Undantag utlösta av överflöden i C#
-
Fallstudie – Heltalsoverskridning i .NET
- Ett riktigt heltalsoverskridningsproblem
- Exploitera heltalsoverskridningsproblemet
-
Sårbarhet för sökvägstraversal
- Mitietering av sökvägstraversal
Dag 2
Principer för säker implementering
-
Injection
- Typiska SQL-injection angreppsmetoder
- Blinda och tidsbaserade SQL-injectioner
- Metoder för att skydda mot SQL-injection
- Kommando-injection
-
Bruten autentisering - lösenordshantering
- Övning – Svagheter i hashade lösenord
- Lösenordshantering och lagring
- Specialiserade hashalgoritmer för lösenordslagring
-
Cross-Site Scripting (XSS)
- Cross-Site Scripting (XSS)
- CSS-injection
- Exploitera: injection genom andra HTML-taggar
- Förhindra XSS
-
Fattande funktionsnivååtkomstkontroll
- Filöverföringsfiltering
-
Praktisk kryptografi
- Tillhandahålla konfidentialitet med symmetrisk kryptering
- Symmetriska krypteringsalgoritmer
- Blockchiffer – operativa lägen
- Hash eller meddelandedigest
- Hashalgoritmer
- Meddelandeautentiseringskod (MAC)
- Tillhandahålla integritet och autenticitet med en symmetrisk nyckel
- Tillhandahålla konfidentialitet med offentlig-nyckelskryptering
- Regelbok – ägande av privat nyckel
- Typiska misstag i lösenordshantering
- Övning – Hårdkodade lösenord
- Slutsats
Principer för säker verifiering
- Funktionsprovning vs. säkerhetstestning
- Säkerhetsproblem
- Prioritering
- Säkerhetstestning i SDLC
- Steg i testplanering (riskanalys)
-
Omfattning och informationsinsamling
- Intressenter
- Tillgångar
- Angreppsyta
- Säkerhetsmål för testning
-
Hotmodellering
- Hotmodellering
- Angripareprofiler
- Hotmodellering baserad på anfallsträd
- Hotmodellering baserad på missbruk/missanvändningsfall
- Missbruk/missanvändningsfall – ett enkelt webbshopexempel
- STRIDE-element-approach till hotmodellering – MS SDL
- Identifiera säkerhetsmål
- Diagrammering – exempel på DFD-element
- Dataflödesdiagram – exempel
- Hotuppräkning – MS SDL’s STRIDE och DFD-element
- Riskanalys – klassificering av hot
- DREAD-hot/riskrangordningsmodellen
-
Säkerhetstestningstechniker och verktyg
- Allmänna testningsanslutningar
- Techniker för olika steg i SDLC
-
Kodgranskning
- Kodgranskning för programvarusäkerhet
- Taint-analys
- Heuristiker
-
Statisk kodanalys
- Statisk kodanalys
- Övning – Använda statiska kodanalyseverktyg
-
Testning av implementeringen
- Manuell runtime-verifiering
- Manuell vs. automatiserad säkerhetstestning
- Penetrationstestning
- Stressprov
-
Fuzzing
- Automatiserad säkerhetstestning - fuzzing
- Utmaningar med fuzzing
-
Webbsårbarhetslurare
- Övning – Använda en sårbarhetssökare
-
Kontroll av och hårdkodning för miljön
- Common Vulnerability Scoring System – CVSS
- Sårbarhetssökare
- Offentliga databaser
-
Fallstudie – Forms Authentication Bypass
- NULL byte termination sårbarhet
- Sårbarheten i koden för Forms Authentication Bypass
- Exploitera Forms Authentication Bypass
Kunskapskällor
- Säker programmeringskällor – en startpaket
- Sårbarhetsdatabaser
- .NET säker programmerningsriktlinjer på MSDN
- .NET säker programmeringscheatsheets
- Rekommenderade böcker – .NET och ASP.NET
Vittnesmål (5)
Flera exempel för varje modul och utmärkt kunskap hos tränaren.
Sebastian - BRD
Kurs - Secure Developer Java (Inc OWASP)
Maskintolkat
Modul 3 Anfalls- och utnyttningsmetoder för program, XSS, SQL-injektion Modul 4 Anfalls- och utnyttningsmetoder för servrar, DoS, BOF
Tshifhiwa - Vodacom
Kurs - How to Write Secure Code
Maskintolkat
Allmän kursinformation
Paulo Gouveia - EID
Kurs - C/C++ Secure Coding
Maskintolkat
Instruktörens kunskap om ämnet var utmärkt, och sättet som sessionerna var organiserade så att publiken kunde följa med i demonstrationerna bidrog verkligen till att fastna med den kunskapen, jämfört med att bara sitta och lyssna.
Jack Allan - RSM UK Management Ltd.
Kurs - Secure Developer .NET (Inc OWASP)
Maskintolkat
Det var perfekt.
Zola Madolo - Vodacom
Kurs - Android Security
Maskintolkat