Maar wat is hier dan groot? En welke data precies? En wat was dan het lek?
Afgelopen week was groot in het nieuws dat Odido gehackt was. Ik ben daar klant en ze hadden van ruim zes miljoen klanten gegevens buitgemaakt. Waaronder paspoortgegevens en rijbewijsnummers, en nog veel meer. Persoonlijk ben ik niet zo heel bang voor phishing. En ook niet voor het lekken van mijn wachtwoord, want ik heb niet voor niets voor elk platform een ander wachtwoord. Maar nu ik zelf veel met data bezig ben, zat ik me af te vragen wat er dan precies gelekt was en hoeveel dat dan precies is, en vooral hoe het kon gebeuren.
Security heeft me altijd wel geboeid, maar het bleef abstract. Ik sprak er regelmatig over met mensen als Brenno de Winter, Daniel Verlaan en Edwin van Andel, maar zelf had ik er nooit direct mee te maken. Dat is aan het veranderen. Nu ik een eigen server beheer en zelf verantwoordelijk ben voor het beschermen van mijn informatie, wordt security concreet op een niveau dat ik eerder niet kende. Deze enorme hack van mijn eigen provider zette me flink aan het denken. Ik dook eens in de materie rondom die hack.
De datagrootte van deze hack viel in GB's eigenlijk wel mee
De klantgegevens van zes miljoen klanten, dat lijkt groot in aantallen. En aangezien dat een fors deel is van alle Nederlanders, dan klopt dat.
Maar in data is het verrassend klein. Ik schreef onlangs een column voor IP Magazine over hoeveel een kilobyte eigenlijk is en hoeveel data we eigenlijk dagelijks gebruiken. Ik sloeg aan het rekenen. Per persoon heb je het over een stuk of tien velden: naam, adres, e-mail, telefoonnummer, geboortedatum, bankrekening, en in sommige gevallen een paspoortnummer. Alles bij elkaar is dat 150 tot 250 tekens. Als je dat keer zes miljoen doet, heb je het over één tot vier gigabyte. Wat weinig mensen realiseren is dat de persoonsgegevens van zes miljoen Nederlanders in een bestand passen dat kleiner is dan de meeste films die je 's avonds streamt.
Waarschijnlijk zijn die zes miljoen gelekte accountgegevens niet per se automatisch zes miljoen verschillende personen. Er zullen vast dubbelingen in zitten. En Odido zegt zelf dat niet zeker is of van iedereen daadwerkelijk de data is gedownload.
Waarom stonden er paspoortgegevens in een klantenservicesysteem?
Dat in het klantsysteem van Odido namen, adressen, telefoonnummers, e-mailadressen, geboortedata, bankrekeningnummers en klantnummers voorkomen, is niet meer dan normaal. En in sommige gevallen paspoort- of rijbewijsnummers met geldigheidsdatums. Dat is ergens nog wel verklaarbaar. Blijkbaar stonden wachtwoorden, belgegevens en facturen op een hele andere plek.
Maar het is precies de combinatie van die gegevens die het interessant maakt, want dit zijn de gegevens waarmee bedrijven controleren of jij bent wie je zegt dat je bent. De controlevragen die je bank stelt, de verificatie bij je zorgverzekeraar, dat soort dingen. Bij elkaar vormen die gegevens niet zomaar een lijst maar een identiteit. In de beveiligingswereld noem je dat soort informatie de kroonjuwelen van een organisatie, de gegevens die je het zwaarst moet beschermen. En bij Odido waren die kennelijk gewoon toegankelijk voor iedereen met een medewerkeraccount.
Ergens halverwege mijn uitzoekwerk had ik een gesprek met Mark Vletter dat me een andere kant op stuurde. Mark weet als oprichter van een telecombedrijf veel over wet- en regelgeving, en hij zei iets over paspoortgegevens dat bleef hangen. Je mag die niet zomaar bewaren, en er zijn strenge regels over wanneer dat mag en hoe lang.
Een paspoortnummer heb je nodig op het moment dat iemand een contract afsluit, bijvoorbeeld als er toestelfinanciering bij komt kijken. Maar als dat contract eenmaal loopt, waarom staat dat nummer dan nog in een systeem waar klantenservicemedewerkers dagelijks in werken? En hoeft een medewerker die een adreswijziging verwerkt een paspoortnummer te kunnen zien? In de informatiebeveiliging heet dat least privilege: een medewerker hoort alleen toegang te hebben tot wat strikt nodig is voor het werk. De AVG kent hier twee begrippen voor. Doelbinding zegt dat je gegevens alleen mag bewaren zolang ze nodig zijn voor het doel waarvoor je ze verzamelde, en dataminimalisatie zegt dat je niet meer mag verzamelen dan strikt noodzakelijk. Het eerste gaat dus over hoe lang en het tweede over hoeveel, en allebei zijn ze hier relevant want de paspoortnummers stonden er langer dan nodig én ze waren ook nog zichtbaar voor meer mensen dan strikt noodzakelijk.
ICT Magazine stelde dezelfde vraag. Odido zegt in het privacy statement dat kopieën van identiteitsbewijzen worden verwijderd na contractbeëindiging, maar de nummers en geldigheidsdatums bleven blijkbaar gewoon in het systeem staan. Zelfs tot twee jaar na beëindiging van het contract, waardoor ook oud-klanten zijn geraakt.
Wat was dan het lek?
De meeste mensen denken bij "telecombedrijf gehackt" aan een enorm netwerk dat is opengebroken, maar dat is niet wat er gebeurde. Het doelwit was het klantcontactsysteem, de CRM-omgeving die Odido gebruikt voor klantenservice en administratie. Vakmedia waaronder Security.nl en ICT Magazine meldden op basis van bronnen dat het specifiek om de Salesforce-omgeving ging, al noemt Odido zelf geen productnaam.
Volgens de NOS kwamen de aanvallers binnen door eerst via phishingmails wachtwoorden van klantenservicemedewerkers te stelen. Daarna belden ze diezelfde medewerkers op, deden zich voor als de ICT-afdeling, en wisten hen te bewegen een frauduleuze inlogpoging goed te keuren. Zo werd de tweefactorauthenticatie omzeild, en bij meerdere medewerkers is dat gelukt. De NOS meldt dat het mogelijk ging om medewerkers van buitenlandse callcenters die Odido inhuurt. Odido wil daar niet op reageren.
Tweefactorauthenticatie beschermt wel het inloggen, maar niet wat je daarna mag doen. Zodra je binnen bent maakt het systeem geen onderscheid meer tussen een echte medewerker en iemand die zich voordoet als een echte medewerker. Vanaf dat moment tel je mee als legitieme gebruiker, met alles wat daarbij hoort.
Wat kon je doen als je eenmaal binnen was?
Een paar gigabyte download je in no time, maar de kunst is dat je dat in hele kleine porties doet, verspreid over een paar dagen, zodat het minder opvalt. Elk individueel verzoek ziet eruit als een medewerker die een klant opzoekt, en dat is gewoon werk. Maar als er vanaf één account ineens duizenden klanten per uur opgevraagd worden, dag na dag, dan zou je mogen verwachten dat er ergens een alarm afgaat. Dat gebeurde hier blijkbaar niet.
De NOS en ICT Magazine beschreven wat er gebeurde als scraping: het geautomatiseerd doorlopen van het systeem, record voor record, via de zoekfunctionaliteit en de mogelijkheid om door resultaten te bladeren die er gewoon in zitten. Salesforce biedt mogelijkheden om dat soort gedrag te detecteren en te begrenzen, maar of dat bij Odido was ingericht weten we niet.
NU.nl meldde dat de hackers zelf de provider hebben laten weten dat ze data hadden. Odido wil niet zeggen of het onder druk is gezet. Maar als dat klopt, dan heeft de eigen monitoring het niet opgepikt. Dan is er dagenlang geautomatiseerd gescraped zonder dat er een alarm afging. In de beveiligingswereld is het gangbare uitgangspunt tegenwoordig assume breach: ga ervan uit dat iemand een keer binnenkomt, en investeer in het zo snel mogelijk merken wanneer dat gebeurt. Dat lijkt hier niet te zijn gelukt.
Dit was dus niet echt een lek. Dit was iemand die via de voordeur binnenliep, ging zitten, en in alle rust de archiefkast doorwerkte.
Vorige week wist ik hier nog niks van. Dat ik er nu iets meer van snap komt doordat je tegenwoordig met de juiste tools en de juiste vragen verrassend ver kunt komen in een onderwerp dat niet het jouwe is.
Wie meer wil weten over de fundamenten van informatiebeveiliging: Brenno de Winter schreef er een fantastisch boek over. Een absolute aanrader.