Neem contact met ons 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

Aantal deelnemers


Prijs per deelnemer

Getuigenissen (3)

Voorlopige Aankomende Cursussen

Gerelateerde categorieën