Als we terugblikken op enkele van de meest spraakmakende security breaches in 2017 kunnen we alleen maar vaststellen dat die eigenlijk worden veroorzaakt door bugs in de software. De WannaCry-aanval, die computers trof in 150 landen en voor zowat vier miljard dollar schade aanrichtte, maakte gebruik van een geheugenfout in het Windows File Sharing-protocol. De Equifax-aanval, waarbij persoonlijke gegevens van 143 miljoen Amerikanen openbaar werden gemaakt. werd uitgevoerd dankzij een deserialisatie-lek in de Apache Struts library.
De uitdaging bij security bugs is dat ze vaak niet worden ervaren als een kwaliteitsprobleem, omdat de software vanuit het standpunt van de ontwikkelaar of tester wel degelijk functioneert. Het is pas als een onverwacht gedrag wordt vastgesteld, dat een men echt spreekt van een beveiligingsprobleem.
Omdat security bugs de werking van de software op zich niet verstoren, beschouwen vele ontwikkelaars beveiligingsproblemen niet echt als fouten. Om het belang hiervan duidelijk te maken, wil ik dit even vergelijken met het bouwen van een huis. De ontwikkelaars zijn dan de aannemers en een softwarefunctie kan worden vergeleken met een raam in het huis. Als het raam werkt – je kan het openen en sluiten, het houdt hitte en koude buiten – dan heeft de aannemer zijn werk goed gedaan. Als nadien een inbreker via dat raam binnenkomt, is dat de verantwoordelijkheid van de dief, niet van de aannemer. Zelfs als aan de buitenkant van het raam een klink werd toegevoegd, waardoor het binnenbreken wel heel eenvoudig werd.
Hacker-pet opzetten
Als software-ontwikkelaars actief willen bijdragen aan de beveiliging tegen aanvallen, moeten ze nadenken hoe hun software zou kunnen worden misbruikt. Dit wordt ook ‘threat modeling’ genoemd.
Om aanvallen te voorkomen moeten ontwikkelaars dus leren denken als een hacker, hun hacker-pet opzetten. Hiervoor hebben ze de volgende elementaire kennis nodig
– Wat zijn de vaakst optredende software-gebreken?
– Hoe kan de software worden misbruikt?
– Hoe kan de software worden beschermd?
Ken de ‘top-lekken’
De twee bekendste lijsten met een overzicht van de vaakst terugkerende software-gebreken en aanvalscategorieën:
– de Mitre Top 25 (ook wel eens de Sans Top 25 genoemd) is een overzicht van de vaakst voorkomende lekken, de Common Weaknesses (CWE’s).
-De Owasp Top 10 is een overzicht van de vaakst gebruikte aanvalscategorieën die webtoepassingen treffen. Tussen deze twee lijsten valt een opvallende overlap vast te stellen
Gaming is de beste training
Het is weinig waarschijnlijk dat uw ontwikkelaars veel beter gaan presteren na een sessie van een uur over de Top 25 van de softwarelekken. De kans is vrij groot dat een aantal zelfs in slaap valt tijdens deze sessie.
Gaming blijkt een veel doeltreffender opleidingsvorm: het bevordert de betrokkenheid en is gewoon ‘fun’, het helpt om praktische vaardigheden te ontwikkelen en door het spel-element is de kans groter dat ze de opleiding tot het einde afwerken.
Een vaak gebruikt ‘spel’ om security testers op te leiden heet CTF (Capture the Flag). Wij hebben een gelijkaardige aanpak gebruikt om onze ontwikkelaars op te leiden in de basiskennis rond software security. We hebben de van dit training platform publiek toegankelijk gemaakt op GitHub onder het project Secure Coding Dojo.
Vechtsporten als ultieme inspiratie
Aangezien ontwikkelaars uiteindelijk moeten leren hoe ze hun software kunnen verdedigen tegen aanvallen, is het logisch dat de opleiding geïnspireerd is door de gevechtssport-games. De opleiding bevat 21 uitdagingen op zeven verschillende niveaus, van Witte Bandl tot Zwarte Band.
De opleiding is gebaseerd op de Mitre Top 25 en op één van de recentste Owasp Top 10 van aanvalscategorieën, XML External Entity. Een overzicht van het volledige opleidingscurriculum vindt u hier. Elke uitdaging beschrijft één of meerdere veiligheidslekken in detail. Om in deze uitdaging te slagen moet de deelnemer dit lek benutten om een kwetsbare toepassing te misbruiken. Tot slot leert de deelnemer welke verdedigingsmechanismen (‘code blocks’) men had kunnen gebruiken om deze aanval te voorkomen.
We hopen dat dit project kan bijdragen tot de opleiding van ontwikkelaars en iedereen meer bewust kan maken van het belang van veilig coderen in een wereld die steeds meer door software wordt gedreven.
Steven Heyde, regionaal directeur Benelux bij Trend Micro