Cursusaanbod
Dag 1
IT-veiligheid en veilig programmeren
- Aard van de veiligheid
- Veiligheidstermen in de IT
- Definitie van risico
- Verschillende aspecten van IT-veiligheid
- Vereisten voor verschillende toepassingsgebieden
- IT-veiligheid vs. veilig programmeren
-
Van kwetsbaarheden naar botnets en cybercrime
- Aard van veiligheidsfouten
- Oorzaken van moeilijkheid
- Van een geïnfecteerde computer naar gerichte aanvallen
-
Classificatie van veiligheidsfouten
- Landwehr’s taxonomie
- De Zeven Kwade Koninkrijken
- OWASP Top Ten 2013
- Vergelijking van OWASP Top Ten 2003 – 2013
Introductie tot het Microsoft® Security Development Lifecycle (SDL)
- Agenda
-
Toepassingen onder aanval...
- Ontwikkeling van cybercrime
- Aanvallen richten zich op toepassingen
- De meeste kwetsbaarheden zitten in kleinere ISV-apps
-
Oorsprong van het Microsoft SDL...
- Veiligheidstijdlijn bij Microsoft...
- Welke toepassingen moeten aan de SDL voldoen?
-
Microsoft Security Development Lifecycle (SDL)
- Microsoft Security Development Lifecycle (SDL)
- Pre-SDL Vereisten: Veiligheidstraining
- Fase Een: Vereisten
- Fase Twee: Ontwerp
- Fase Drie: Implementatie
- Fase Vier: Verificatie
- Fase Vijf: Uitgifte – Responsieplan
- Fase Vijf: Uitgifte – Eindveiligheidsbeoordeling
- Fase Vijf: Uitgifte – Archiveren
- Post-SDL Vereiste: Responsie
- SDL Procesadvies voor LOB-apps
- SDL Advies voor Agile Methodologieën
- Veilig softwareontwikkeling vereist procesverbetering
Veilige ontwerpprincipes
-
Aanvalsvlak
- Reductie van het aanvalsvlak
- Aanvalsvlak – een voorbeeld
- Analyse van het aanvalsvlak
- Reductie van het aanvalsvlak – voorbeelden
-
Privacy
- Privacy
- Inzicht in gedrag en zorgen van toepassingen
-
Diepe verdediging
- Kernprincipe SDL: Diepe Verdediging
- Diepe verdediging – voorbeeld
-
Minimale bevoegdheidsprincipe
- Minimale bevoegdheid – voorbeeld
-
Veilige standaarden
- Veilige standaarden – voorbeelden
Veilige implementatieprincipes
- Agenda
- Microsoft Security Development Lifecycle (SDL)
-
Basis van bufferoverloop
- Intel 80x86 Processors – hoofdregisters
- Het geheugenadreslayout
- De functioneeringsmechanisme in C/C++ op x86
- De lokale variabelen en de stack frame
-
Stackoverloop
- Bufferoverloop op de stack
- Opdrachten – inleiding
- Opdracht BOFIntro
- Opdracht BOFIntro – bepaal de stacklayout
- Opdracht BOFIntro – een eenvoudige exploit
-
Invoervalidatie
- Concepten van invoervalidatie
-
Getalproblemen
- Voorstelling van negatieve getallen
- Getalsoverloop
- Rekenkundige overloop – gok het uitvoerresultaat!
- Opdracht IntOverflow
- Wat is de waarde van Math.Abs(int.MinValue)?
-
Getalprobleemvermindering
- Verhindering van getalproblemen
- Voorkomen van rekenkundige overloop – optellen
- Voorkomen van rekenkundige overloop – vermenigvuldigen
- Detectie van overloop met de checked keyword in C#
- Opdracht – Gebruik van de checked keyword in C#
- Uitzonderingen veroorzaakt door overloop in C#
-
Casusstudie – Getalsoverloop in .NET
- Een echte getalsoverloopkwetsbaarheid
- Exploitatie van de getalsoverloopkwetsbaarheid
-
Padtraversiekwetsbaarheid
- Verhindering van padtraversie
Dag 2
Veilige implementatieprincipes
-
Injectie
- Typische SQL-injectieaanvalsmethoden
- Blind en tijdgebaseerde SQL-injectie
- Methoden voor het beschermen tegen SQL-injectie
- Commando-injectie
-
Gebroken authenticatie - wachtwoordbeheer
- Opdracht – Zwakte van gehashte wachtwoorden
- Wachtwoordbeheer en opslag
- Specialisatiehashalgoritmen voor wachtwoordopslag
-
Cross-Site Scripting (XSS)
- Cross-Site Scripting (XSS)
- CSS-injectie
- Exploitatie: injectie via andere HTML-tags
- XSS-voorkoming
-
Ontbrekende functioneel toegangscontrole
- Filtering van bestandsoverdragen
-
Praktische cryptografie
- Verborgen houden met symmetrische cryptografie
- Symmetrische encryptiealgoritmen
- Blokcijfers – modi van werking
- Hash of berichtdigest
- Hashalgoritmen
- Message Authentication Code (MAC)
- Verborgen houden van integriteit en authenticiteit met een symmetrische sleutel
- Verborgen houden met publieke-sleutelversleuteling
- Regel: Bezit van de privé-sleutel
- Typische fouten in wachtwoordbeheer
- Opdracht – Hardgecodeerde wachtwoorden
- Conclusie
Veilige verificatieprincipes
- Functioneel testen vs. veiligheidstesten
- Veiligheidskwetsbaarheden
- Priorisering
- Veiligheidstesten in de SDLC
- Stappen van testplanning (risicoanalyse)
-
Scopering en informatie-inwinning
- Stakeholders
- Assets
- Het aanvalsvlak
- Veiligheidstestdoelstellingen
-
Bedreigingsmodellering
- Bedreigingsmodellering
- Angstaanjagersprofielen
- Bedreigingsmodellering op basis van aanvalsbomen
- Bedreigingsmodellering op basis van misbruikscases/abusecases
- Misbruikscases – een eenvoudig webwinkelvoorbeeld
- STRIDE per element benadering voor bedreigingsmodellering – MS SDL
- Identificatie van veiligheidsdoelstellingen
- Diagrammen – voorbeelden van DFD-elementen
- Dataflowdiagram – voorbeeld
- Bedreigingsenumeratie – STRIDE en DFD-elementen in de MS SDL
- Risicoanalyse – classificatie van bedreigingen
- Het DREAD bedreigings/risicoscoremodel
-
Veiligheidstesttechnieken en -tools
- Algemene testbenaderingen
- Technieken voor verschillende stappen in de SDLC
-
Codereview
- Codereview voor softwareveiligheid
- Taint-analyse
- Heuristieken
-
Statische codanalyse
- Statische codanalyse
- Opdracht – Gebruik van statische codanalysetools
-
Testen van de implementatie
- Handmatige runtimeverificatie
- Handmatig vs. automatisch veiligheidstesten
- Penetratietesting
- Stress-tests
-
Fuzzing
- Automatisch veiligheidstesten – fuzzing
- Uitdagingen van fuzzing
-
Webkwetsbaarheidsscanners
- Opdracht – Gebruik maken van een kwetsbaarheidsscanner
-
Controleren en versterken van de omgeving
- Common Vulnerability Scoring System – CVSS
- Kwetsbaarheidsscanners
- Publieke databases
-
Casusstudie – Forms Authentication Bypass
- NULL-byte afsluiting kwetsbaarheid
- De Forms Authentication Bypass-kwetsbaarheid in de code
- Exploitatie van de Forms Authentication Bypass
Kennisbronnen
- Veiligheidscodingsbronnen – een starterkit
- Kwetsbaarheidendatabases
- .NET-veiligheidsrichtlijnen op MSDN
- .NET-veiligheidshandboeken
- Aanbevolen boeken – .NET en ASP.NET
Getuigenissen (5)
Meerdere voorbeelden per module en uitstekende kennis van de trainer.
Sebastian - BRD
Cursus - Secure Developer Java (Inc OWASP)
Automatisch vertaald
Module 3 Toepassingsaanvallen en exploits, XSS, SQL-injectie Module 4 Serveraanvallen en exploits, DOS, BOF
Tshifhiwa - Vodacom
Cursus - How to Write Secure Code
Automatisch vertaald
Algemene cursusinformatie
Paulo Gouveia - EID
Cursus - C/C++ Secure Coding
Automatisch vertaald
De kennis van de trainer over het vakgebied was uitstekend, en de manier waarop de sessies waren opgezet zodat het publiek kon meegaan met de demonstraties, hielp echt om dat kennisvast te leggen, in plaats van alleen maar te zitten luisteren.
Jack Allan - RSM UK Management Ltd.
Cursus - Secure Developer .NET (Inc OWASP)
Automatisch vertaald
Het was perfect.
Zola Madolo - Vodacom
Cursus - Android Security
Automatisch vertaald