Kursplan
Dag 1
IT-sikkerhet og sikker kodning
- Sjelens natur av sikkerhet
- Termer relatert til IT-sikkerhet
- Definisjon av risiko
- Ulike sider av IT-sikkerhet
- Krav fra ulike anvendelsesområder
- IT-sikkerhet vs. sikker kodning
-
Fra sårbarheter til botnety og cyberkriminalitet
- Sjelens natur av sikkerhetsfeil
- Grunner til vanskelighetene
- Fra en smittet datamaskin til målrettet angrep
-
Klassifisering av sikkerhetsfeil
- Landwehr’s taxonomi
- De syv ondskefulle kongedømmene
- OWASP Top Ten 2013
- OWASP Top Ten sammenligning 2003 – 2013
Introduksjon til Microsoft® Security Development Lifecycle (SDL)
- Dagsorden
-
Programvare under angrep...
- Cyberkriminalitetens utvikling
- Angrepene fokuserer på programvare
- Flest sårbarheter er i små ISV-applikasjoner
-
Opprinnelsen til Microsoft SDL...
- Sikkerhetstidslinjen hos Microsoft...
- Hvilke applikasjoner er påkrevd å følge SDL?
-
Microsoft Security Development Lifecycle (SDL)
- Microsoft Security Development Lifecycle (SDL)
- Pre-SDL-krav: Sikkerhetsutdannelse
- Fase En: Krav
- Fase To: Design
- Fase Tre: Implementering
- Fase Fire: Verifisering
- Fase Fem: Utgivelse – Responnplan
- Fase Fem: Utgivelse – Sluttsikkerhetsvurdering
- Fase Fem: Utgivelse – Arkivering
- Post-SDL-krav: Responn
- SDL-prosessveiledning for LOB-applikasjoner
- SDL-veiledning for agil metodikk
- Sikker programvareutvikling krever prosessforbedring
Prinsipper for sikkert design
-
Angrepsflate
- Reduksjon av angrepsflate
- Angrepsflate – et eksempel
- Analyse av angrepsflate
- Reduksjon av angrepsflate – eksempler
-
Personvern
- Personvern
- Forståelse av applikasjonsatferd og bekymringer
-
Dypgående forsvar
- SDL-kjerneprinsipp: Dypgående forsvar
- Dypgående forsvar – eksempel
-
Minst rettighetsprinsippet
- Minst rettigheter – eksempel
-
Sikre standardinnstillinger
- Sikre standardinnstillinger – eksempler
Prinsipper for sikker implementering
- Dagsorden
- Microsoft Security Development Lifecycle (SDL)
-
Grunnleggende prinsipper for buffer overflow
- Intel 80x86 Prosessorer – hovedregister
- Hukommelsesadresselayouten
- Funksjonshensiktsmekanismen i C/C++ på x86
- Lokale variabler og stackrammen
-
Stack overflow
- Buffer overflow på stacken
- Øvelser – introduksjon
- Øvelse BOFIntro
- Øvelse BOFIntro – bestem stacklayouten
- Øvelse BOFIntro – et enkelt angrep
-
Innmatningsvalidering
- Konsepter for innmatningsvalidering
-
Heltalsproblemer
- Representering av negative heltall
- Heltalsoverflow
- Aritmetisk overflow – gjett resultatet!
- Øvelse IntOverflow
- Hva er verdien av Math.Abs(int.MinValue)?
-
Mitisering av heltalsproblemer
- Mitisering av heltalsproblemer
- Unngå aritmetisk overflow – addisjon
- Unngå aritmetisk overflow – multiplikasjon
- Detektering av overflow med checked-nøkkelordet i C#
- Øvelse – Bruke checked-nøkkelordet i C#
- Unntak utløst av overflow i C#
-
Case study – heltalsoverflow i .NET
- En reell heltalsoverflow-sårbarhet
- Exploitering av heltalsoverflow-sårbarheten
-
Sårbarhet i path traversal
- Mitisering av path traversal
Dag 2
Prinsipper for sikker implementering
-
Injection
- Typiske SQL-injection-angrepsmetoder
- Blind og tidsbasert SQL injection
- Metoder for å beskytte mot SQL injection
- Kommandoinjection
-
Brutt autentisering - passordhåndtering
- Øvelse – svakhet ved krypterte passord
- Passordhåndtering og lagring
- Specialalgoritmer for hash for passordlagring
-
Cross-Site Scripting (XSS)
- Cross-Site Scripting (XSS)
- CSS injection
- Exploitering: injection gjennom andre HTML-tagger
- Mitisering av XSS
-
Manglende funksjonnivås kontroll
- Filtrering av filopplasting
-
Praktisk kryptografi
- Sikkerhet med symmetrisk kryptografi
- Symmetriske krypteringsalgoritmer
- Blokkchiffre – moduser for operasjon
- Hash eller meldingsoversikt
- Hashalgoritmer
- Message Authentication Code (MAC)
- Sikkerhet og autentisitet med symmetrisk nøkkel
- Sikkerhet med offentlig nøkkels kryptering
- Regel av daumen – eierskap til privat nøkkel
- Typiske feil i passordhåndtering
- Øvelse – Hardcoded passord
- Konklusjon
Prinsipper for sikker verifisering
- Funksjonstesting vs. sikkerhetstesting
- Sikkerhetsfeil
- Prioritering
- Sikkerhetstesting i SDLC
- Trinn i testplanlegging (risikoanalyse)
-
Omfang og informasjonsinnsamling
- Interessenter
- Resurser
- Angrepsflate
- Sikkerhetsmål for testing
-
Truselmodellering
- Truselmodellering
- Angrepprofil
- Truselmodellering basert på angreps-tre
- Truselmodellering basert på misbruk/missbrukssaker
- Misbruk/missbrukssaker – et enkelt webbutikk-eksempel
- STRIDE per element tilnærming til truselmodellering – MS SDL
- Identifisering av sikkerhetsmål
- Diagrammering – eksempler på DFD-elementer
- Dataflytdiagram – et eksempel
- Truselenumerering – MS SDL’s STRIDE og DFD-elementer
- Risikoanalyse – klassifisering av trusler
- DREAD trusel/risikoklassemodell
-
Sikkerhetstestingsmetoder og verktøy
- Generelle testtilnærminger
- Metoder for ulike steg i SDLC
-
Kodelyse
- Kodelyse for programvare-sikkerhet
- Forurensningsanalyse
- Heuristikk
-
Statiske kodeanalyser
- Statiske kodeanalyser
- Øvelse – Bruk av statiske kodeanalyseverktøy
-
Testing av implementeringen
- Manuell kjøringstidverifisering
- Manuelle vs. automatiserte sikkerhetstester
- Penetrationstesting
- Stress-tester
-
Fuzzing
- Automatiserte sikkerhetstester - fuzzing
- Utfordringer med fuzzing
-
Web-sårbarhetslaster
- Øvelse – Bruk av sårbarhetsskenner
-
Kontroll og hardening av miljøet
- Common Vulnerability Scoring System – CVSS
- Sårbarhetsskenner
- Offentlige databaser
-
Case study – Forms Authentication Bypass
- NULL byte termineringsvulnerabilitet
- Sårbarheten i koden for Forms Authentication Bypass
- Exploitering av Forms Authentication Bypass
Kunskapskilder
- Sikre kodingkilder – et starterkit
- Sårbarhetsdatabaser
- .NET sikre kodningsveiledninger på MSDN
- .NET sikre kodningscheatsheets
- Anbefalte bøker – .NET og ASP.NET
Referanser (5)
Flere eksempler for hvert modul og stor kunnskap hos instruktøren.
Sebastian - BRD
Kurs - Secure Developer Java (Inc OWASP)
Maskinoversatt
Modul 3 Anfallsmåter og utnyttninger mot applikasjoner, XSS, SQL-injection Modul 4 Anfallsmåter og utnyttninger mot servere, DoS, BOF
Tshifhiwa - Vodacom
Kurs - How to Write Secure Code
Maskinoversatt
Generell kursinformasjon
Paulo Gouveia - EID
Kurs - C/C++ Secure Coding
Maskinoversatt
Instruktørens faglige kunnskap var fremragende, og måten sesjonene var strukturert på, slik at publikum kunne følge med i demonstrasjonene, virkelig bidro til å fastlegge denne kunnskapen, i motsetning til bare å sitte og lytte.
Jack Allan - RSM UK Management Ltd.
Kurs - Secure Developer .NET (Inc OWASP)
Maskinoversatt
Alt var perfekt.
Zola Madolo - Vodacom
Kurs - Android Security
Maskinoversatt