Inhoud
Introductie tot de cursus 1 2
3
4
Functie van de cursus 7 Inhoud van de cursus 7 2.1 Cursusmaterialen 7 2.2 Voorkennis 8 2.3 Leerdoelen van de cursus 8 2.4 Opbouw van de cursus 9 Studeeraanwijzing 9 3.1 Wijze van studeren 9 3.2 Begeleiding en Studienet 10 Toetsing 11
6
Introductie tot de cursus
Voordat u begint met het bestuderen van de cursus Software security, informeren wij u in deze introductie over de bedoeling van de cursus, de opzet van het cursusmateriaal, de manier waarop u de cursus kunt bestuderen en de wijze waarop deze getoetst wordt. U vindt hier dus nog geen studiestof, maar praktische en studietechnische informatie die u inzicht geeft in de aard en de opzet van de cursus en u helpt bij het studeren. 1
Functie van de cursus
De cursus heeft als onderwerp de beveiliging van software, waarbij technische, organisatorische en ethische aspecten worden belicht. In de cursus komt een aantal veelvoorkomende beveiligingsproblemen aan de orde, worden de onderliggende oorzaken belicht en worden oplossingen aangedragen in de vorm van concepten, technieken, richtlijnen, principes en tools. U bestudeert de studiestof en past de opgedane kennis toe in opdrachten. De cursus heeft een studielast van 100 tot 120 uur. De cursus maakt deel uit van masteropleidingen van de faculteit Informatica.
Tekstboeken
2
Inhoud van de cursus
2.1
CURSUSMATERIALEN
In deze cursus bestudeert u delen uit twee Engelstalige tekstboeken: – Software Security: Building Security In van Gary McGraw (AddisonWesley, 2006) – Secure Programming with static analysis van Brian Chess en Jacob West (Addison-Wesley, 2007). Het eerste boek beschrijft welke activiteiten er in elke fase van het ontwikkelproces uitgevoerd moeten worden om beveiligde software te creëren. De meest effectieve activiteiten worden in het boek nader toegelicht. Een van die activiteiten is het uitvoeren van een statische analyse op de programmacode met behulp van tools. Dit wordt in het tweede boek verder uitgediept.
Reader
Daarnaast bestudeert u in de cursus een aantal artikelen, lecture notes en overnamen uit andere tekstboeken, die zijn opgenomen in de reader.
Werkboek
In het werkboek bij de cursus, dat u nu leest, wordt aangegeven welke onderdelen uit de tekstboeken en de reader u achtereenvolgens moet bestuderen.
7
Open Universiteit
Software security
Dvd
Naast het bestuderen van de leerstof voert u ook regelmatig opdrachten uit. In het werkboek worden deze opdrachten toegelicht; de daadwerkelijke tekst bij de opdrachten vindt u op de cursussite op Studienet. Bij enkele opdrachten maakt u gebruikt van tools die op de cursus-dvd te vinden zijn. 2.2
VOORKENNIS
Om de cursus te kunnen bestuderen, veronderstellen we de volgende voorkennis: – basiskennis van computer security, waaronder de beginselen van cryptografie en access control (bijvoorbeeld opgedaan in de cursus Security en IT) – globale kennis van software engineering (bijvoorbeeld opgedaan in de cursus Software engineering) – programmeerervaring in Java (bijvoorbeeld opgedaan in de cursussen Objectgeoriënteerd programmeren in Java 1 en 2) – basiskennis van C/C++. In de cursus komt u diverse voorbeelden tegen waarin fragmenten met programmacode in Java en C/C++ worden getoond. Naast kennis van Java is daarom ook basiskennis van C/C++ vereist, met name het gebruik van pointers, arrays, strings en de wijze waarop geheugen gealloceerd en gedealloceerd wordt. Op de cursussite op Studienet vindt u enkele weblinks naar bronnen waarin u deze kennis kunt opdoen. We verwachten niet dat u zelf programma’s in C/C++ kunt schrijven, maar wel dat u een gegeven programmafragment kunt begrijpen. Daarnaast is het wenselijk dat u enige kennis hebt van webapplicaties (bijvoorbeeld opgedaan in de cursus Webapplicaties: de serverkant), reguliere expressies (bijvoorbeeld opgedaan in de cursus Formele talen en automaten) en basisconcepten van programmeertalen zoals typesystemen (bijvoorbeeld opgedaan in de cursus Concepten van programmeertalen). 2.3
LEERDOELEN VAN DE CURSUS
De leerdoelen omschrijven welke kennis, inzichten en vaardigheden u zich door het bestuderen van de cursus zou moeten eigen maken. We verwachten dat u na het bestuderen van de cursus: – een aantal veelvoorkomende beveiligingsproblemen in software kent, waaronder buffer overflow en problemen gerelateerd aan invoer- en uitvoervalidatie zoals cross-site scripting – de onderliggende oorzaken van deze beveiligingsproblemen kent, gesitueerd in specifieke applicaties en applicatietypes, programmeertalen en -platformen en besturingssystemen – kunt aangeven welke activiteiten (‘best practices’) in het softwareontwikkelproces uitgevoerd moeten worden om beveiligde software te creëren, waaronder risicoanalyse en statische codeanalyse – principes en richtlijnen kunt geven om beveiligingsproblemen te voorkomen of te detecteren – taalgebaseerde en platformgebaseerde oplossingen kent zoals sandboxing en informatieflowanalyse – op verantwoorde wijze kunt omgaan met ethische aspecten rondom software security
8
Introductie tot de cursus
– een analyse kunt maken van een beveiligingsprobleem, de onderliggende oorzaak kunt aanduiden en oplossingen kunt aandragen – de voor- en nadelen van de verschillende oplossingen naast elkaar kunt zetten, vanuit technisch, organisatorisch en ethisch perspectief. 2.4
OPBOUW VAN DE CURSUS
De cursus bestaat uit achttien leereenheden, die verdeeld zijn in vijf blokken. Blok 1 Introductie
Het eerste blok bevat een introductie tot software security. Hierin wordt een definitie van software security gegeven, worden basisbegrippen toegelicht en wordt uitgelegd hoe software security geïntegreerd kan worden in alle fasen van de softwareontwikkeling.
Blok 2 Vulnerabilities
Het tweede blok bestaat uit vijf leereenheden waarin aandacht besteed wordt aan veelvoorkomende vulnerabilities (kwetsbaarheden) in software. Enkele belangrijke vormen worden daarbij nader toegelicht: validatie van invoer en uitvoer, buffer overflow, excepties en privileges. Het blok wordt afgesloten met een praktische opdracht waarin u vulnerabilities in een webapplicatie opspoort.
Blok 3 Ontwikkelen van beveiligde software
Het derde blok bestaat uit zes leereenheden en is gewijd aan de diverse activiteiten die uitgevoerd moeten worden in verschillende fasen van het softwareontwikkelproces om beveiligde software te creëren. Er is aandacht voor elementaire richtlijnen en principes, risicomanagement en risicoanalyse, statische codeanalyse en security-testen. Het blok bevat twee praktische opdrachten: het uitvoeren van een architectural risk analysis op een webapplicatie en het uitvoeren van een statische codeanalyse met behulp van een moderne tool.
Blok 4 Language-based security
Het vierde blok bestaat uit vier leereenheden waarin security-aspecten van programmeertalen en -platformen aan de orde komen. Er is aandacht voor safety van programmeertalen en diverse vormen van access control in programmeerplatformen zoals sandboxing en informatieflowanalyse. Het blok wordt afgerond met een praktische opdracht waarin u access control toevoegt aan een webapplicatie.
Blok 5 Ethiek van software security
Het vijfde blok bestaat uit twee leereenheden waarin ethische aspecten van software security centraal staan. Er wordt aandacht besteed aan ethiek van hacking, het publiceren over vulnerabilities en ethiek van security-onderwijs en -onderzoek. Het blok wordt afgerond met een opdracht waarin u een ethisch vraagstuk verkent in een casestudie. 3
Studeeraanwijzing
3.1
WIJZE VAN STUDEREN
De beide tekstboeken en de reader bevatten de leerstof die behandeld wordt in de cursus. De cursus is ingedeeld in leereenheden die elk een afgerond deel van de stof bevatten. Het werkboek geeft per leereenheid aan welk deel van welk tekstboek of de reader bestudeerd moet worden en geeft eventueel toelichtingen en aanvullingen daarbij.
9
Open Universiteit
Software security
(Op pagina 5 wordt de structuur van de cursus weergegeven. De kolom Studiestof verwijst naar welke delen uit de tekstboeken en de reader bestudeerd moeten worden, bijvoorbeeld M:4+CW:2,3,4+R bij leereenheid 10. Deze notatie duidt aan dat hoofdstuk 4 uit het tekstboek van Gary McGraw, de hoofdstukken 2 tot en met 4 uit het tekstboek van Brian Chess en Jacob West en artikelen uit de reader bij leereenheid 10 bestudeerd moeten worden. Overigens hoeft een hoofdstuk uit een tekstboek niet altijd in zijn geheel bestudeerd te worden. Dat wordt in de leereenheden aangegeven.) Daarnaast bevat elke leereenheid een korte inleiding op de betreffende stof, leerdoelen die aangeven wat u na het bestuderen van de leereenheid moet weten en/of kunnen en opgaven met uitwerkingen. De tekstboeken bevatten diverse zogenoemde sidebars, losse stukjes in een kader die bedoeld zijn als illustratie, uitstapje, enzovoort. Deze sidebars behoren niet tot de verplichte stof, tenzij anders vermeld. Voorbeeld van een studeeraanwijzing
In het werkboek vindt u in de linkerkolom van de pagina af en toe een studeeraanwijzing, waarvan u hiernaast een voorbeeld ziet. In het werkboek komt u drie soorten studeeraanwijzingen tegen: – De aanduiding ‘Studeeraanwijzing’ in de marge geeft aan dat de tekst in het werkboek hier aanwijzingen bevat over welk deel uit een tekstboek of de reader bestudeerd moeten worden. – De aanduiding ‘Weblinks’ geeft aan dat u op de cursussite op Studienet een of meerdere links kunt vinden die verwijzen naar relevante bronnen op het internet. Vaak zijn dit links naar informatie over softwaretools op gebied van security. – De aanduiding ‘Pagina x-y’ geeft aan dat de tekst in het werkboek een toelichting of aanvulling is bij de betreffende pagina’s in het tekstboek of de reader. We verwijzen uitsluitend naar paginanummers en niet naar hoofdstukken of secties, omdat we daarmee nauwkeuriger kunnen verwijzen. Sommige teksten in het werkboek zijn afgedrukt in kleine letters, zoals de tekst die u nu leest. Deze teksten zijn facultatieve passages die nader op de stof ingaan, een kanttekening plaatsen of een verwijzing naar achtergrondliteratuur bevatten. Dergelijke passages behoren niet tot de tentamenstof.
Het vakgebied security kent een eigen jargon dat veelal bestaat uit Engelse termen. We hebben er in deze cursus voor gekozen om deze termen doorgaans niet te vertalen in het Nederlands. We spreken daarom in de cursus bijvoorbeeld over vulnerabilities (kwetsbaarheden) en security (beveiliging). 3.2
BEGELEIDING EN STUDIENET
De begeleiding bij deze cursus vindt grotendeels plaats via de cursussite op Studienet. U kunt daar vragen stellen via de discussiegroepen. U vindt er ook nieuwsberichten over de cursus, weblinks, opdrachten, errata en informatie over de tentaminering. Naast de begeleiding via Studienet wordt eenmaal per jaar een reeks van enkele online begeleidingsbijeenkomsten gehouden. Tijdens deze bijeenkomsten licht de docent de leerstof toe met studeeraanwijzingen. Meer informatie over deze bijeenkomsten vindt u op de cursussite op Studienet.
10
Introductie tot de cursus
4
Toetsing
De informatie in deze sectie is geldig bij het verschijnen van de cursus. Mogelijk wijzigt de toetsvorm in de loop van de tijd; dat wordt dan aangekondigd via de cursussite op Studienet. De cursus Software security wordt getoetst door middel van vijf opdrachten en een afrondend mondeling tentamen. In het werkboek vindt u in de leereenheden 6, 9, 12, 16 en 18 een inleidende tekst bij elke opdracht. De daadwerkelijke opdrachten vindt u op Studienet. Daar vindt u ook informatie over wat u op welke wijze moet inleveren om de opdrachten af te ronden. De opdrachten worden individueel gemaakt. Na inlevering van elke opdracht ontvangt u een beknopte terugkoppeling en een beoordeling die bestaat uit ‘voldoende’ of ‘onvoldoende’. Bij een onvoldoende resultaat krijgt u een nieuwe opdracht en kunt u herkansen, maar dit heeft een negatief effect op uw eindresultaat voor de cursus. Nadat u alle opdrachten met voldoende resultaat hebt afgerond, kunt u zich aanmelden voor het afrondende mondelinge tentamen. Dit mondelinge tentamen bestaat uit twee delen: – een ondervraging over de uitwerkingen van de opdrachten die u hebt ingeleverd. Het doel hiervan is om na te gaan in hoeverre u elke opdracht en de uitwerking hebt doorgrond. U ontvangt voor elke opdracht een deelcijfer. (Als u een opdracht hebt herkanst, kan het deelcijfer voor de betreffende opdracht niet hoger worden dan een 6.) Samen vormen deze deelcijfers 40% van uw eindresultaat voor de cursus. Elke opdracht telt daarin mee naar rato van de studielast. – een ondervraging over de leerstof. Het doel hiervan is om na te gaan in hoeverre u de theorie kent en begrijpt. U ontvangt hiervoor een deelcijfer dat 60% van uw eindresultaat voor de cursus bepaalt. Het tentamen duurt maximaal twee uur. Het is niet toegestaan om het cursusmateriaal tijdens het tentamen te raadplegen. Op Studienet vindt u vragen die representatief zijn voor wat u tijdens het tentamen kunt verwachten.
11