Cursus Software security Harald Vranken
Rondleiding Onderwerp van cursus Cursusmateriaal Cursusstructuur Cursusinhoud per leereenheid (highlights) 2
Waarover gaat de cursus? Software security engineering software so that it continues to function correctly under malicious attack Kernprincipe: building security in beveiliging niet achteraf repareren, maar meenemen in alle fasen van softwareontwikkeling Onderwerpen die aan de orde komen Veelvoorkomende beveiligingsproblemen, onderliggende oorzaken en oplossingen (technieken, richtlijnen, principes, tools) Technische, organisatorische en ethische aspecten 3
Cursusmateriaal Engelstalig tekstboeken Software security: building security in G. McGraw (Addison-Wesley, 2006) Secure programming with static analysis B. Chess en J. West (Addison-Wesley, 2007) OU-producties reader werkboek cursus-dvd Studienet 4
Cursusstructuur 5
1 Introductie tot software security Omvang van software security-problemen Oorzaken van software security-problemen (connectivity, extensibility, complexity) Implementation-level bug vs. design-level flaw 3 pillars of software security risk management touchpoints (best practices) kennis over software security Software security vs. security software Mix van white hat- en black hat-benadering 6
2 Software vulnerabilities Taxonomieën van software security-problemen Ranglijsten van veelvoorkomende vulnerabilities 24 deadly sins of software security OWASP top 10 SANS top 20 CWE/SANS top 25 7
Kernidee: voor gebruik dient alle invoer, 5 van Excepties alle mogelijke en privileges bronnen, eerst gevalideerd te worden Hoe 3 Ontwikkelen wel? van beveiligde software 7 Software security knowledge Indirect selection, whitelisting, reguliere 8 expressies, Risicomanagement geparameteriseerde en risicoanalyse invoer, controle van invoerlengte, minimum- en maximumwaarde van getallen) Hoe niet? Blacklisting, security ondermijnen door 11 gebruiksvriendelijkheid, Security testing repareren van ingevoerde gegevens, gedetailleerde foutmeldingen Vulnerabilities: SQL injection, path manipulation, command injection, log forging, cross-site scripting, HTTP response 14 Language-based splitting, open access redirects, control cross-site request forgery 8
verschijningsvormen van buffer overflows in C/C++ code Voorbeeld: char buf[20]; buf char prefix[] = http:// ; 12 Opdracht C: prefix statische http://0 codeanalyse 4 Language-based strcpy(buf, security prefix); 13 Safety buf http://0 strncat(buf, path, sizeof(buf)); buf http://0 memory safety en type safety statische en dynamische maatregelen ter bescherming 9
Afhandelen van foutcondities via terugkeerwaarden Afhandelen van excepties in Java 10
Opdracht A: vulnerabilities in webapplicatie 11
7 Software security knowledge Kennis over software security classificeren prescriptive, diagnostic en historical knowledge principles, guidelines, rules, attack11 patterns, Security exploits, testing vulnerabilities en historical risks 12 principes voor software security: securing the weakest link least14 common Language-based mechanismaccess control defense in depth reluctance to trust failing securely never assume your secrets are safe least privilege complete mediation 5 Ethiek separation van software privilege security psychological 17 Ethiek van acceptability software security economy of mechanism promoting 18 Opdracht privacye: ethiek 12
Blok 3: touchpoints 13
Opdracht B: architectural risk analysis 14
Opdracht B: architectural risk analysis Client tear Web tear Application tear Data tear gast Client computer browser Registreren als lid Zoeken in aanbod Leden beheer Registratie Autorisatie Veiling database lid Client computer browser Controller Login/logout Aanbieden artikel Bieden op artikel Veiling beheer Artikel beheer Bod beheer beheer Client computer browser Ondersteuning 15
Opdracht C: statische codeanalyse 16
Risk Management Framework 17
13 Safety Abstracties van besturingssysteem voor security en access control Safe/unsafe programmeertaal precise semantics (no undefined behavior) modular behavior Memory safety, type safety Vulnerabilities in Java visibility (public/protected/private/package) sealing 18
Java 2 Vulnerabilities sandbox (Bytecode Verifier, Class2 Loader Software en vulnerabilities Security Manager) Type safety in Java Code signing in Java Stack inspection Security policies 19
Code signing in Java Stack inspection Security policies 20
Traditionele access control: lezen of modificatie van gegevens en bronnen besturingssysteem: user, process programmeerplatform (JVM): modules 4 Buffer binnen overflow code Verfijnde access control via informatieflowanalyse Wat kan er gedaan kan worden met gegevens nadat ze gelezen? Wat is de herkomst van gegevens waarmee andere gegevens gemodificeerd kunnen worden? Informatieflowanalyse via typesysteem of via statische/dynamische analyse van propagatie van tainted data Non-interference 21
Javacode voor webapplicatie beveiligen met JAAS (Java Authentication and Authorization Service) Code signing Policies 22
17 Ethiek van software security Onderscheid tussen ethiek en wetgeving Ethische aspecten omtrent ethical hacking vulnerability disclosure onderzoek en onderwijs over vulnerabilities 23
Casestudie: OV-chipkaart Ethische overwegingen voor betrokken partijen overheid leveranciers onderzoekers journalisten 24