Inhoud leereenheid 1
Introductie tot software security Introductie Leerkern 1 2
15 16
Software security 16 Software security touchpoints 19
14
Leereenheid 1
Introductie tot software security
INTRODUCTIE
Computersystemen zijn niet meer weg te denken en haast onmisbaar in onze moderne samenleving. Zo gebruiken we onze desktopcomputers, laptops, tablets en mobiele telefoons als dagelijks gereedschap thuis, onderweg en op het werk. We communiceren via e-mail, VoIP en sociale media. We beheren onze financiën via internetbankieren en doen aankopen via webwinkels. We gebruiken apparaten variërend van wasmachines tot auto’s die intern worden bestuurd door embedded systemen. De administraties van bedrijven, organisaties en overheden, de besturing van productieprocessen in fabrieken en de geleiding van verkeer over land, water en lucht zijn verregaand geautomatiseerd. Al deze computersystemen hebben het uitvoeren van software als gemeenschappelijke eigenschap. De beveiliging van software laat echter te wensen over. Vrijwel dagelijks verschijnen er berichten in de media over misbruik van computersystemen, waarbij hackers gevoelige informatie en geld buit maken of delen van de infrastructuur ontwrichten. Een groot deel van deze problematiek is het gevolg van software die onvoldoende beveiligd is. Een van de oorzaken van de problemen met software security is dat security bij het ontwikkelen van software weinig of geen aandacht krijgt. De focus is vrijwel altijd gericht op functionaliteit: ervoor zorgen dat de software de gewenste functies correct uitvoert. Echter, het afdekken van beveiligingsrisico’s en ervoor zorgen dat software alleen die functies uitvoert waarvoor de software bedoeld is en niets meer, blijft vaak onderbelicht. Niet-functionele eisen, zoals performance, gebruiksvriendelijkheid en security, komen doorgaans pas op de tweede plaats. Security neemt daarbij een aparte plaats in. Als gevraagd wordt om de performance of gebruiksvriendelijkheid van software te verbeteren, weten softwareontwikkelaars meestal wel hoe ze dat kunnen aanpakken. Security is echter wat ongrijpbaarder. Als gevraagd wordt om de software security te verbeteren, weten softwareontwikkelaars vaak niet hoe dat aan te pakken of waar te beginnen. Deze cursus reikt een aantal concrete handvatten aan om software security te verbeteren. Daarbij nemen we veelal een praktische insteek, waarmee softwareontwikkelaars in de praktijk meteen aan de slag kunnen. De cursus biedt ook de nodige theoretische verdieping. Deze eerste leereenheid geeft een introductie tot software security.
15
Open Universiteit
Software security
LEERDOELEN
Na het bestuderen van deze leereenheid wordt verwacht dat u – een definitie van software security kunt geven – drie hoofdoorzaken van software security problemen kunt toelichten (connectivity, extensibility, complexity) – het onderscheid tussen defect, bug, flaw en risk kunt toelichten – het onderscheid tussen software security en application security kunt toelichten – kunt uitleggen hoe software security kan worden geïntegreerd in een software development life cycle, gefundeerd op risk management, touchpoints (best practices) en kennis over software security – het verschil tussen software security en security software kunt uitleggen – kunt uitleggen dat software security bereikt wordt door security van meet af aan in te bouwen in de software, waarbij een mix van white hat- en black hat-benaderingen vereist is. Studeeraanwijzing Deze leereenheid is een introductie en is bedoeld om een eerste indruk te geven van software security. Er worden met name achtergrondkennis en wetenswaardigheden aangereikt. Veel onderwerpen komen slechts summier aan de orde en worden niet nader uitgelegd. In volgende leereenheden komen ze uitgebreider aan de orde. De studielast van deze leereenheid bedraagt circa 4 uur.
LEERKERN 1
Software security
Studeeraanwijzing
Bestudeer hoofdstuk 1 Defining a Discipline (pagina 3 tot en met 38) uit het tekstboek Software security: building security in van Gary McGraw.
Pagina 5 Weblinks
De data die in Figure 1-1 wordt getoond, is afkomstig van CERT/CC (Computer Emergency Response Team/Coordination Center), een coördinatiecentrum voor problemen op gebied van computer security. Dit centrum is onderdeel van het Software Engineering Institute (SEI) aan de Carnegie Mellon Universiteit en wordt gefinancierd door de Amerikaanse overheid. Het werd opgericht door DARPA (Defense Advanced Research Project Agency) naar aanleiding van de Morrisworm die in 1988 ongeveer 10% van het internet platlegde. In navolging van de oprichting van CERT aan de Carnegie Mellon Universiteit werden verspreid over de hele wereld centra opgericht met een vergelijkbare taak, die vaak eveneens de aanduiding CERT hanteerden. De term CERT is tegenwoordig een algemene aanduiding voor een team dat zich bezighoudt met het afhandelen van problemen met computer security. CERTs zijn veelal te vinden bij universiteiten en IT-bedrijven.
16
Leereenheid 1 Introductie tot software security
is het Cyber Security en Incident Response Team van de Nederlandse overheid, opgezet door het Ministerie van Binnenlandse Zaken en Koninkrijksrelaties. De missie van GOVCERT.NL is het verhogen van het niveau van informatiebeveiliging binnen de Nederlandse samenleving door samenwerking, kennisdeling en de afhandeling van ICT-gerelateerde incidenten en grootschalige calamiteiten. Op 1 januari 2012 is het Nationaal Cyber Security Centrum (NCSC) opgericht, dat bestaat uit een samenwerking van publieke en private organisaties en zich richt op een integrale aanpak van cybersecurity. GOVCERT.NL vormt de basis van het NCSC. GOVCERT.NL
In 2003 richtte het Amerikaanse Department of Homeland Security het US-CERT op, dat als doel heeft het reduceren van de frequentie en impact van cyberaanvallen via een samenwerking met diverse organisaties waaronder CERT/CC aan de Carnegie Mellon Universiteit. De software vulnerabilities die door US-CERT worden verzameld, worden opgeslagen in de NVD (National Vulnerability Database). Figuur 1.1 toont de aantallen vulnerabilities die per jaar werden toegevoegd aan de database van CERT/CC en de NVD. CERT/CC stopte eind 2008 met het publiceren van statistieken over ontdekte software vulnerabilities. De figuur toont dat elk jaar een aanzienlijk aantal nieuwe software vulnerabilities wordt ontdekt. De groei per jaar neemt sinds 2007 af. Daaruit zou de conclusie getrokken kunnen worden dat software security langzaam maar zeker lijkt te verbeteren. Een plausibelere verklaring is echter dat de ondergrondse economie van computercriminelen steeds beter gaat floreren. Een hacker die een nieuwe vulnerability ontdekt, kan deze zelf misbruiken of verkopen aan computercriminelen in plaats van deze te melden. De exacte omvang van het aantal vulnerabilities is daarom moeilijk in te schatten. De trend is dat het aantal vulnerabilities in besturingssystemen afneemt, maar dat het aantal vulnerabilities in applicaties toeneemt. CERT/CC
US-CERT
9.000
Number of vulnerabilities
8.000 7.000 6.000 5.000 4.000 3.000 2.000 1.000
FIGUUR 1.1
17
Software vulnerabilities
10
09
08
07
06
05
11 20
20
20
20
20
20
04
Year
20
02
01
00
99
03
20
20
20
20
20
98
96
97
19
19
19
19
19
95
0
Open Universiteit
Software security
Pagina 9 Weblinks
Figure 1-2 toont de groei in omvang van opeenvolgende versies van Microsoft Windows. Op het internet zijn diverse bronnen te vinden waar de groei in omvang van softwareproducten wordt geïllustreerd, al is de betrouwbaarheid van zulke gegevens soms twijfelachtig. Op Studienet zijn weblinks naar enkele bronnen opgenomen.
Pagina 10-13
De sectie Basic Science is een aardige illustratie waarin gepoogd wordt om aan te tonen dat het aantal problemen met software security ruwweg kwadratisch toeneemt met de omvang van de software. Vanuit wetenschappelijk oogpunt is er heel wat op deze sectie aan te merken. De aanname is dat er inderdaad een kwadratische relatie is en de gegevens worden zodanig gemanipuleerd dat deze kwadratische relatie zichtbaar wordt. De vraag of er een relatie is en hoe deze er dan uitziet, wordt niet gesteld. Dat er een relatie is, lijkt intuïtief wel duidelijk en er zijn ook diverse studies waarin dit wordt aangetoond. Of deze relatie inderdaad kwadratisch is, hoe de omvang van software gemeten moet worden en hoe betrouwbaar gegevens over de omvang van software zijn, is echter niet eenduidig te beantwoorden.
Pagina 14-18 Weblinks
Naast defect, bug, flaw en risk zijn er vele andere gangbare termen in het security-jargon. In Appendix D Glossary van het tekstboek Software security: building security in van Gary McGraw worden definities van een aantal termen gegeven. Op Studienet vindt u een link naar RFC 4949, een glossary van terminologie rondom security van informatiesystemen.
Pagina 37
Figure 1-12 (en de vereenvoudigde versie Figure 1-9) is de belangrijkste figuur in deze cursus. In blok 2 en blok 3 van de cursus komen de three pillars of software security uitgebreid aan bod. – Kennis over vulnerabilities is een belangrijk onderdeel van pillar III Knowledge. De leereenheden 2 tot en met 6 in blok 2 zijn daar volledig aan gewijd. Leereenheid 2 geeft een overzicht van veel voorkomende vulnerabilities. Specifieke klassen van vulnerabilities komen vervolgens meer in detail aan de orde in de leereenheden 3 tot en met 6: validatie van invoer en uitvoer, buffer overflow, excepties en privileges en een opdracht over vulnerabilities in een webapplicatie. Overige aspecten uit pillar III Knowledge komen aan de orde in leereenheid 7. – Pillar I Applied risk management komt aan de orde in leereenheid 8. – Pillar II Software security touchpoints komt aan de orde in blok 3 van de cursus. In leereenheid 8 besteden we aandacht aan risicoanalyse en in leereenheid 9 voert u daarover een opdracht uit. Leereenheid 10 is gewijd aan statische codeanalyse, waarover u in leereenheid 12 een praktische opdracht uitvoert. Leereenheid 11 gaat in op security-testen. Blok 2 en 3 hebben veelal een praktische insteek. Blok 4 en 5 hebben daarentegen een meer theoretische insteek en brengen verdere verdieping aan. In blok 4 bekijken we hoe eigenschappen en mechanismen van programmeertalen en –platformen bijdragen aan software security, met name in verfijnde vormen van access control. In blok 5 staan we tot slot stil bij ethische vraagstukken rondom software security.
18
Leereenheid 1 Introductie tot software security
2 Studeeraanwijzing
Software security touchpoints
Bestudeer hoofdstuk 3 Introduction to Software Security Touchpoints (pagina 83 tot en met 103) uit het tekstboek Software security: building security in van Gary McGraw. Dit hoofdstuk introduceert de zeven touchpoints. In volgende leereenheden komen de touchpoints in meer detail aan de orde.
19