Ergens in de jaren tien knipte je een stuk van je scherm en plakte je de link in een chat. Een foutmelding met een stukje van een config erin, een bankscherm waar je iets aan wilde laten zien, het tabblad van een collega dat per ongeluk mee in beeld stond. De link was lelijk en willekeurig, dus niemand zou hem ooit raden. Dat was de beveiliging. Dat wás de beveiliging.

Die redenering is deze week omgevallen, en daarmee een stuk van de human firewall waar we het hier normaal over hebben. Helpfeel, het Japanse bedrijf achter screenshotdienst Gyazo, schreef op 16 september dat een aanvaller via de upload-server zijn database binnenkwam en er metadata van ongeveer 490 miljoen afbeeldingen uithaalde. In die metadata zitten de image-ID’s. En het bedrijf zegt er zelf bij wat dat betekent: die informatie “could be used by a third party to access and view the corresponding images without authorization”.

De link wás het wachtwoord. Nu heeft iemand anders de wachtwoorden.

Gyazo had de kans om te raden zelf uitgerekend

Het pijnlijke is dat Gyazo dit netjes had doordacht. In hun eigen helpartikel over veiligheid staat de rekensom: een beeld-ID is 32 hexadecimale tekens, dus 2 tot de macht 128, ongeveer 3,4 maal 10 tot de 38ste combinaties. Raden noemen ze daarom wiskundig zeer moeilijk, en een aanval met veel verzoeken achter elkaar onmogelijk, want daar zit beveiliging tegen aanvragen in bulk op.

Die rekensom klopt gewoon. Niemand heeft ooit één van die ID’s geraden. Ze zijn opgehaald uit de database, en daarmee verschoof het probleem van de voordeur naar de plek waar de sleutels lagen. Daar zit de les: als je beveiliging bestaat uit een geheim dat de aanbieder bewaart, dan koop je geen onraadbaarheid maar een afhankelijkheid. Eén lek aan die kant, en de hele reeks is tegelijk waardeloos.

De aanvaller nam ook de lijst met privé-plaatjes mee

Het lelijkste zinnetje uit de hele mededeling staat een alinea verder. Helpfeel heeft bevestigd dat de aanvaller ook een lijst te pakken kreeg die aangeeft welke afbeeldingen als privé zijn gemarkeerd. Ze kunnen niet uitsluiten dat er privé-afbeeldingen bekeken zijn.

Denk daar even over door. Je hebt niet alleen een stapel sleutels, je hebt ook een lijst waarop staat achter welke deur iemand iets had staan dat niemand mocht zien. Dat is precies de sortering die je zou maken als je met beperkte tijd het meeste wilde binnenhalen. En dat is kennelijk ook gebeurd: naast de 490 miljoen records, die vooral gaan over beelden van januari 2019 en eerder en volgens Helpfeel ongeveer 14,4 procent van alle beelddata vormen, is er apart metadata van nog eens zo’n 2,4 miljoen afbeeldingen opgehaald “using specific filtering criteria”. Iemand heeft dus niet alleen gegraaid. Iemand heeft gezocht.

Op welke criteria staat er niet bij. Dat is de vraag die ik graag beantwoord zou zien, en het is precies de vraag die in de mededeling openblijft.

Zelfs zonder de plaatjes heeft de aanvaller de tekst uit je screenshots

Gyazo haalde met OCR de tekst uit elk beeld, zodat je later op woorden kon zoeken. Handige functie. Die uitgelezen tekst zit in de gelekte metadata, samen met het IP-adres waarvandaan je uploadde, je User-Agent, de titel van het beeld, de bron-URL en de GPS-coördinaten uit de EXIF als die erin zaten.

En daar hoort een belofte bij die nu gebroken is. OCR is bij Gyazo een betaalde functie, en in het helpartikel erover staat dat de uitgelezen informatie niet wordt getoond aan wie je beeld bekijkt. Alleen de uploader ziet hem. Wie ervoor betaalde, kreeg dus expliciet te horen dat die tekst privé bleef. Bij dezelfde functie staat trouwens ook dat het aanzetten ervan met terugwerkende kracht werkt: alle eerder gemaakte beelden worden dan alsnog gescand.

Dat is het deel dat de meeste berichten laten liggen. Zelfs als Helpfeel het lukt om alle beelden dicht te houden, en ze hebben de levering van een deel ervan inderdaad uitgezet, dan nog heeft de aanvaller een doorzoekbare tekstdatabase van wat er op honderden miljoenen schermen stond. Een API-sleutel die je aan een collega liet zien. Een e-mailadres. Een ordernummer. Een stuk van een chat. Een screenshot van je inbox met vijftien afzenders erop. Normaal is beeld lastig te doorzoeken en daarom in de praktijk redelijk veilig. Hier is dat werk al voor de aanvaller gedaan, door de dienst zelf.

En er staat een IP-adres en soms een GPS-coördinaat naast. Dat is geen gestolen foto meer, dat is een gestolen dossier. Voor wie social engineering professioneel bekijkt: dit is het rijkste verkenningsmateriaal dat ik in tijden voorbij heb zien komen.

“Gebruik geen deelbare links” is een advies dat niemand opvolgt, ook wij niet

Hier hoort onze eigen kant een klap te krijgen. Wij, de mensen die over digitale veiligheid schrijven, roepen al tien jaar dat een niet-geïndexeerde link geen beveiliging is. Technisch klopt dat volledig. Als advies is het waardeloos, want de hele werkwereld draait erop.

Een Google Doc gedeeld met “iedereen met de link”. Een Loom-opname in een projectkanaal. Een Figma-bestand naar een klant. Een WeTransfer. Een Zoom-opname. Elk daarvan gebruikt precies hetzelfde model, en elk daarvan gebruiken wij zelf, ook vandaag nog. Iemand die dat allemaal weigert, kan niet meer met andere mensen werken. Het advies “doe het niet” is dus geen advies maar een vorm van gelijk willen hebben.

Wat je wél kunt doen is de houdbaarheid ervan onder ogen zien. Een deelbare link is veilig zolang de lijst met links bij de aanbieder blijft. Die aanname verloopt op het moment dat de aanbieder gehackt wordt, en dat moment ligt buiten jouw invloed. Dat is een ander soort risico dan een zwak wachtwoord, en het hoort dus ook anders in je firewall test te zitten dan de gebruikelijke vraag of iemand op een linkje klikt. Het lijkt qua gevoel nog het meest op spoofing: alles ziet er precies zo uit als altijd, alleen klopt de aanname eronder niet meer.

Zoek in je chatgeschiedenis op gyazo.com

Eén ding voor vandaag, en het is klein. Zoek in je Slack, je Teams, je Discord en je WhatsApp-geschiedenis op “gyazo.com”. Je krijgt een lijst van precies de momenten waarop jij een stuk scherm de wereld in hebt gegooid, vaak jaren geleden en helemaal vergeten. Loop die lijst langs en kijk wat erop stond.

Zie je een wachtwoord, een token of een API-sleutel voorbijkomen, dan draai je die vandaag. Niet omdat bewezen is dat iemand jouw beeld heeft opgevraagd, maar omdat je van tevoren wist dat zo’n screenshot ooit een probleem zou worden en je het toch deed. Dat gold voor mij ook. De rest van de soorten phishing-verhalen gaan over slimme aanvallers; dit gaat over ons eigen gemak van tien jaar geleden.

Welke filtercriteria gebruikte de aanvaller?

Helpfeel laat een extern forensisch team het onderzoek doen en belooft updates. De zin waar het straks om draait is die over de 2,4 miljoen afzonderlijk opgehaalde records. Komt daar een filter bij te staan dat op woorden in de OCR-tekst zoekt, dan was dit geen gewone datadiefstal maar een gerichte zoektocht naar inloggegevens in andermans screenshots.

Blijft het bij “specific filtering criteria” zonder uitleg, dan weet niemand ooit wat er precies is weggehaald. En dan is de enige eerlijke conclusie dat elk plaatje dat je ooit via zo’n dienst hebt gedeeld gewoon openbaar materiaal is. Meer over dit soort keuzes staat in de briefing.

Rik Hoogland, security-awareness-specialist en vaste auteur van Humanfirewall.nl

Rik Hoogland
Rik begeleidde jarenlang phishing-simulaties en awareness-programma's bij Nederlandse organisaties. Op Humanfirewall.nl legt hij uit hoe oplichters mensen bespelen en hoe je daar als team tegen bestand raakt. Stel Rik je vraag.

Zelf een situatie die niet vertrouwd voelt?

Beschrijf wat er gebeurde of waar je over twijfelt, dan denkt Rik mee over de juiste reactie.