Bedankt voor uw aanvraag! Een van onze medewerkers neemt binnenkort contact met u op
Bedankt voor uw boeking! Een van onze medewerkers neemt binnenkort contact met u op.
Cursusaanbod
Dag 1
IT-beveiliging en veilige programmering
- De aard van beveiliging
- IT-beveiligingsgerelateerde termen
- Definitie van risico
- Verschillende aspecten van IT-beveiliging
- Eisen van verschillende applicatiegebieden
- IT-beveiliging versus veilige programmering
-
Van kwetsbaarheden naar botnets en cybercrime
- De aard van beveiligingsfouten
- Redenen voor de complexiteit
- Van een geïnfecteerde computer naar gerichte aanvallen
-
Classificatie van beveiligingsfouten
- De taxonomie van Landwehr
- The Seven Pernicious Kingdoms
- OWASP Top Ten 2013
- Vergelijking OWASP Top Ten 2003 – 2013
Introductie tot de Microsoft® Security Development Lifecycle (SDL)
- Agenda
-
Applicaties onder aanval...
- Evolutie van cybercrime
- Aanvallen richten zich op applicaties
- De meeste kwetsbaarheden zitten in kleinere ISV-apps
-
Oorsprong van de Microsoft SDL...
- Beveiligingstijdlijn bij Microsoft...
- Welke apps moeten de SDL volgen?
-
Microsoft Security Development Lifecycle (SDL)
- Microsoft Security Development Lifecycle (SDL)
- Vereisten vóór SDL: Beveiligingstraining
- Fase 1: Eisen
- Fase 2: Ontwerp
- Fase 3: Implementatie
- Fase 4: Verificatie
- Fase 5: Release – Reactieplan
- Fase 5: Release – Eindbeveiligingsreview
- Fase 5: Release – Archivering
- Vereiste na SDL: Reactie
- SDL-procesrichtlijnen voor LOB-apps
- SDL-richtlijnen voor Agile-methodologieën
- Veilige softwareontwikkeling vereist procesverbetering
Principes voor veilig ontwerp
-
Aanvalsvlak
- Verminderen van het aanvalsvlak
- Aanvalsvlak – een voorbeeld
- Analyse van het aanvalsvlak
- Verminderen van het aanvalsvlak – voorbeelden
-
Privacy
- Privacy
- Begrijpen van toepassingsgedrag en zorgen
-
Verdediging in depte (Defense in depth)
- SDL-kernprincipe: Defense In Depth
- Defense in depth – voorbeeld
-
Principe van minimale macht (Least privilege)
- Least privilege – voorbeeld
-
Veilige standaardinstellingen (Secure defaults)
- Secure defaults – voorbeelden
Principes voor veilige implementatie
- Agenda
- Microsoft Security Development Lifecycle (SDL)
-
Basis van buffer overflows
- Intel 80x86-processors – hoofdreisters
- De geheugenadresindeling
- Het functieaanroepmechanisme in C/C++ op x86
- Lokale variabelen en het stack-frame
-
Stack overflow
- Buffer overflow op de stack
- Oefeningen – introductie
- Oefening BOFIntro
- Oefening BOFIntro – de stack-indeling bepalen
- Oefening BOFIntro – een eenvoudige exploit
-
Validatie van invoer
- Concepten voor validatie van invoer
-
Integer-problemen
- Representatie van negatieve integers
- Integer overflow
- Arithmetic overflow – raad de output!
- Oefening IntOverflow
- Wat is de waarde van Math.Abs(int.MinValue)?
-
Mitigatie van integer-problemen
- Mitigatie van integer-problemen
- Vermijden van arithmetic overflow – optellen
- Vermijden van arithmetic overflow – vermenigvuldigen
- Detecteren van overflow met het checked-keywoord in C#
- Oefening – Gebruik van het checked-keywoord in C#
- Uitzonderingen veroorzaakt door overflows in C#
-
Casus – Integer overflow in .NET
- Een echte integer overflow-kwetsbaarheid
- Exploiteren van de integer overflow-kwetsbaarheid
-
Path traversal-kwetsbaarheid
- Mitigatie van path traversal
Dag 2
Principes voor veilige implementatie
-
Injectie
- Typische SQL-injectie-aanvalsmethoden
- Blind en tijdgebaseerde SQL-injectie
- Beschermingsmethoden voor SQL-injectie
- Command injectie
-
Verbroken authenticatie - wachtwoordbeheer
- Oefening – Zwakte van gehashte wachtwoorden
- Wachtwoordbeheer en opslag
- Hash-algoritmen voor specifiek gebruik voor wachtwoordopslag
-
Cross-Site Scripting (XSS)
- Cross-Site Scripting (XSS)
- CSS-injectie
- Exploitatie: injectie via andere HTML-tags
- Preventie van XSS
-
Ontbrekende toegangscontrole op functieniveau
- Filteren van bestandstoploads
-
Toegepaste cryptografie
- Verzorgen van vertrouwelijkheid met symmetrische cryptografie
- Symmetrische versleutelingselementen
- Blokversleutelaars – werkingen
- Hash of message digest
- Hash-algoritmen
- Message Authentication Code (MAC)
- Verzorgen van integriteit en authenticiteit met een symmetrische sleutel
- Verzorgen van vertrouwelijkheid met publieke-sleutelversleuteling
- Vuistregel – bezit van de privé-sleutel
- Typische fouten in wachtwoordbeheer
- Oefening – Hard gecodeerde wachtwoorden
- Conclusie
Principes voor veilige verificatie
- Functionele testen versus beveiligingstesten
- Beveiligingskwetsbaarheden
- Prioritering
- Beveiligingstesten in de SDLC
- Stappen van testplanning (risicoanalyse)
-
Scopebepaling en informatieverzameling
- Stakeholders
- Assets
- Het aanvalsvlak
- Beveiligingsdoelen voor testen
-
Bedreigingsmodellering (Threat modeling)
- Bedreigingsmodellering
- Profielen van aanvallers
- Bedreigingsmodellering op basis van aanvalsbomen
- Bedreigingsmodellering op basis van misbruik/misuse-cases
- Misbruik/misuse-cases – een eenvoudig webshop-voorbeeld
- STRIDE per element aanpak voor bedreigingsmodellering – MS SDL
- Identificeren van beveiligingsdoelen
- Schematisering – voorbeelden van DFD-elementen
- Dataflowdiagram – voorbeeld
- Enumeratie van bedreigingen – MS SDL STRIDE en DFD-elementen
- Risicoanalyse – classificatie van bedreigingen
- Het DREAD-bedreiging/risicorankermodel
-
Beveiligingstesttechnieken en -tools
- Algemene testbenaderingen
- Technieken voor verschillende stappen van de SDLC
-
Code review
- Code review voor softwarebeveiliging
- Taint-analyse
- Heuristieken
-
Statische code-analyse
- Statische code-analyse
- Oefening – Gebruik van statische code-analyse tools
-
Testen van de implementatie
- Handmatige runtime-verificatie
- Handmatige versus geautomatiseerde beveiligingstesten
- Penetratietests
- Stresstests
-
Fuzzing
- Geautomatiseerde beveiligingstesten - fuzzing
- Uitdagingen van fuzzing
-
Web-kwetsbaarheidsscanners
- Oefening – Gebruik van een kwetsbaarheidsscanner
-
Controleren en versterken van de omgeving
- Common Vulnerability Scoring System – CVSS
- Kwetsbaarheidsscanners
- Publieke databanken
-
Casus – Forms Authentication Bypass
- NULL-byte-eindterminkwetsbaarheid
- De Forms Authentication Bypass-kwetsbaarheid in de code
- Exploiteren van de Forms Authentication Bypass
Kennisbronnen
- Bronnen voor veilige programmering – een starter kit
- Kwetsbaarheidsdatabanken
- .NET veilige programmeringsrichtlijnen op MSDN
- .NET veilige programmering cheat sheets
- Aanbevolen boeken – .NET en ASP.NET
14 Uren
Getuigenissen (3)
Ervaring delen, de kennis en waarde van de docent.
Carey Fan - Logitech
Cursus - C/C++ Secure Coding
Automatisch vertaald
de kennis van de trainer was zeer hoog - hij wist waarover hij het had en kon antwoord geven op onze vragen
Adam - Fireup.PRO
Cursus - Advanced Java Security
Automatisch vertaald
Het onderwerp is actueel en ik moest bijgewerkt worden.
Damilano Marco - SIAP s.r.l.
Cursus - Secure Developer Java (Inc OWASP)
Automatisch vertaald