Cybersecurity: wapen je tegen deze top 10 van beveiligingsfouten
OWASP is een van de beste open bronnen voor security-informatie voor websites en online systemen. OWASP (Open Web Application Security Project) is vooral bekend van de top 10 van security-problemen, die iedere drie à vier jaar uitkomt. De nieuwste versie van deze toplijst is onlangs gepubliceerd. Hoewel de lijst vrij technisch is, heeft deze lijst veel invloed op de veiligheid van alle internetgebruikers, en levert de nieuwe lijst extra verantwoordelijkheid op voor website-eigenaars. Daarom geef ik in dit artikel een zo min mogelijk technische samenvatting.
Waarom is er OWASP top 10?
OWASP, het Open Web Application Security Project is begin deze eeuw gestart omdat het droevig gesteld is met de veiligheid op internet. Voor autorijden is er een examen, maar voor websites maken niet. Veel mensen leren zichzelf websites maken, en een groot deel van de ontwikkelaars bouwt systemen zonder enige veiligheidsmaatregelen. Voor opdrachtgevers van websites is de veiligheid vaak niet van buiten te zien, en daarom een ondergeschoven kindje.
Maar zelfs voor opdrachtgevers en ontwikkelaars die wel willen, is security een lastig onderwerp. Het ontbreekt aan een eenvoudige, duidelijke standaard. Veel bestaande security-standaarden zijn gericht op security-professionals en niet bruikbaar voor programmeurs. De bekende ISO-standaard ISO27001 is bijvoorbeeld alleen gericht op organisaties en niet op systemen. PCI maakt goede standaarden, maar alleen voor de betaal-industrie. Het gevolg was dat de gemiddelde ontwikkelaar van websystemen zich niet verdiepte in beveiliging en dat de meeste websystemen slecht beveiligd waren.
Kapstok voor beschikbare documentatie
Het OWASP-initiatief heeft dit grotendeels opgelost door de belangrijkste kennis beter toegankelijk te maken voor ontwikkelaars. Dit wordt niet gedaan met dikke handboeken, maar met een top 10 van beveiligingsfouten. Deze top 10 kan voor elk systeem gebruikt worden als testlijstje, om in ieder geval de simpele fouten te vermijden. Inmiddels is de kennisbank van de OWASP flink gegroeid en zijn er ook veel andere documenten, zoals cheat sheets en handboeken. De top 10 blijft echter wel belangrijk als kapstok voor alle beschikbare documentatie. Binnen IT-contracten wordt de OWASP top 10 ook wel gebruikt als minimale security-eis.
De nieuwe OWASP top 10 2017
De top 10 van OWASP wordt ongeveer elke drie tot vier jaar bijgewerkt naar de laatste inzichten. Dit gebeurt op een open manier: iedereen mag altijd nieuwe data aanleveren. De mensen achter OWASP verzamelen deze elke 3 á 4 jaar en maken dan een nieuwe top 10. Deze wordt eerst als beta-versie aangeboden zodat iedereen commentaar kan geven. Als al het commentaar verwerkt is, wordt de nieuwe top 10 definitief.
De top 10 is in 2003 voor het eerst gepubliceerd en is vervolgens in 2007, 2010 en 2013 bijgewerkt. Op 10 april 2017 is de nieuwste versie ter review online gezet. Iedereen kan de nieuwe top 10 reviewen tot en met 30 juni.
De nieuwe top 10 ziet eruit als volgt:
1. Invoegen van code uit invoer (injectie)
Veel websites doen onvoldoende validatie of invoer geldig is. Hackers maken hier gebruik van door niet netjes getallen in te voeren, maar vreemde tekst als 1′ OR True =True. Als een programma deze invoer in een zoekopdracht plakt, dan geeft het systeem te veel invoer bloot en kan een hacker zoeken naar alle data, in plaats van alleen eigen data.
2. Kapotte authenticatie
Dit is een verzamelnaam voor mogelijke fouten van programmeurs. Een eenvoudig voorbeeld is als websites keys meesturen in links in e-mailberichten. Als iemand zijn bericht deelt met anderen, kan iedereen inloggen op de account van de oorspronkelijke ontvanger. Een ander voorbeeld is systemen die niet automatisch uitloggen na bepaalde tijd.
3. Cross-site scripting
Bij een aanval met cross-site scripting, geeft een hacker invoer die javascript-code bevat en laat een website dit ongecontroleerd zien aan een andere gebruiker. De webbrowser van die andere gebruiker voert vervolgens de code uit.
Een leuk voorbeeld heeft zich ooit voorgedaan bij een internetveiling, waarbij een hacker een euro bood op een item, gebruikmakend van een gebruikersnaam die browsers deed crashen. Hierdoor konden anderen geen hogere biedingen plaatsen op dit item en won de hacker heel goedkoop de veiling.
4. Kapotte toegangscontrole (was twee items)
Bij het ontbreken van goede toegangscontrole kan een hacker die normaal ingelogd is op een systeem allerlei extra data inzien van andere gebruikers. Dit kan bijvoorbeeld door in de adresbalk de getallen te veranderen, bijvoorbeeld door een accountnummer te veranderen. De link zou er dan zo uit komen te zien: https://example.com/app/accountInfo?acct=notmyacct
5. Verkeerde configuratie
Veel systemen zijn opgebouwd met bestaande bouwblokken. Al deze bouwblokken hebben instructies en deze worden niet altijd goed opgevolgd. Veel systemen hebben bijvoorbeeld een admin-console dat na installatie moet worden weggehaald. Als dit niet wordt weggehaald, kunnen hackers deze gebruiken.
6. Gevoelige informatie openstellen
Veel systemen verzenden gevoelige informatie, zoals namen, adressen, creditcardnummers onversleuteld of slaan dit zonder extra beveiliging op. Dit geeft extra risico’s. Het gebruik van https is een goede eerste stap hiertegen.
7. Onvoldoende detectie van aanvallen (nieuw)
Dit is geen aanval op zich, maar wel een probleem dat veel andere aanvallen erger maakt. Programmeurs moeten ervoor zorgen dat zij verdachte zaken zoals mislukte inlogpogingen loggen, en zorgen dat ontwikkelaars een mail krijgen als er verdacht verkeer is.
8. Cross-site request forgery
Bij cross-site request forgery maakt een hacker een eigen website en lokt gebruikers hiernaartoe met bijvoorbeeld spamberichten. In de code van deze website zitten vervolgens aanroepen verborgen naar een bekende bank, om bijvoorbeeld geld over te maken. Als de gebruiker toevallig is ingelogd bij deze bank, wordt er vervolgens echt geld overgemaakt naar de hacker.
9. Gebruik van componenten met bekende zwakheden
Veel oudere versies van bekende componenten (denk aan WordPress, Drupal, Magento) bevatten bekende fouten. Deze worden gepubliceerd en zijn gefixt in de nieuwste versie. Wie de oude versies blijft gebruiken, kan vervolgens eenvoudig worden gehackt.
10. Onvoldoende beschermde koppelvlakken (API’s) (nieuw)
Systemen hebben steeds meer koppelingen, waarbij er informatie opgehaald wordt uit andere systemen. Ontwikkelaars vergeten wel eens om deze koppelingen te beveiligen, ervan uitgaande dat de ontwikkelaars van het bronsysteem te vertrouwen zijn. Hackers maken hier gebruik van, door koppelingen over te nemen en allerlei ongeldige input naar een systeem te sturen.
Top 10 of top 11
In theorie is de top 10-gedachte verfrissend: het houdt security-onderzoekers scherp omdat ze moeten aantonen dat hun zwakheden in de praktijk ook voorkomen. Het motiveert ontwikkelaars omdat het altijd overzichtelijk blijft. Ook geeft het proces van nieuwe binnenkomers en afvallers een leuke invalshoek om het onderwerp minder saai te maken. In de praktijk echter zie je dat het een probleem is om alle kennis in een top 10 te smokkelen. Daarom wordt er af en toe gesmokkeld door onderwerpen samen te voegen: door een slimme samenvoeging zijn er twee nieuwe onderwerpen.
Helpt OWASP tegen de nieuwste aanvallen?
Internet security krijgt veel aandacht in de media omdat er regelmatig grote aanvallen zijn. Een van de laatste wereldwijde incidenten is WannaCry, een ransomware-aanval waarbij bestanden versleuteld worden.
WannaCry maakte gebruik van een technisch lek diep in een component uit het besturingssysteem, en dus niet van programmeerfouten waar OWASP voor bedoeld is. Echter: er was al in februari een fix uitgebracht voor het lek waar WannaCry gebruik van maakte. Organisaties die regel 9 hanteren, hebben dus geen last gehad van WannaCry. Echter: je moet dan wel OWASP niet eenmalig gebruiken, maar elke maand blijven testen en updaten. Veel werk dus.
Gevolgen voor de praktijk
De nieuwe OWASP top 10 lijkt gelukkig veel op op de oude. Toch zijn er een paar praktische gevolgen van de update. Omdat OWASP in de praktijk en in contracten gebruikt wordt als minimale veiligheidseisen, zal iedere websitemaker en gebruiker regelmatig tegen OWASP moeten testen. Met de nieuwe top 10 zal men bij deze test ook alle koppelvlakken mee moeten nemen in de test. Veel ethische hackers deden dit gelukkig al (bijvoorbeeld met scanningtools en gebruik van tools als burpsuite), maar nog niet iedereen deed dit expliciet.
Daarnaast zal iedere beheerder of eigenaar van een website meer aandacht moeten besteden aan logbestanden. Er moet meer worden gelogd en de logs moeten vaker worden bekeken, om aanvallen op te kunnen sporen. Security wordt hiermee niet alleen een zaak van de ontwikkelaar, maar van alle betrokken bij een website-systeem.
Voor internetgebruikers verandert er niet heel veel. Dankzij de nieuwe OWASP worden systemen iets veiliger. Het internet blijft echter onveilig: het feit dat OWASP werkt met top tien-lijsten geeft al aan dat er teveel security-problemen zijn om te benoemen. Ook in de komende jaren zullen er veel hacks plaatsvinden en zal iedereen zichzelf moeten beschermen tegen ransomware.