Sånn fant Robert lekkasjen hos Gule Sider: «Ekkelt»

Gule Sider lakk fødselsdatoer til mindreårige. Og det var Robert Sæther som fikk stoppet det.

Robert Sæther fant ut at det var mulig å hente ut fødselsdatoer til barn. 📸: Lasse Fløde
Robert Sæther fant ut at det var mulig å hente ut fødselsdatoer til barn. 📸: Lasse Fløde Vis mer

Nylig skrev Dagens Næringsliv om hvordan søketjenesten Gule Sider utilsiktet delte fødselsdatoer til både voksne og mindreårige på grunn av det som fremstår som en kodetabbe.

Det var frontendutvikleren Robert Sæther i ItumX som avdekket sårbarheten som gjorde at alle med litt teknisk kompetanse kunne finne personopplysninger til barn med alder helt ned til 7 år. Dette selv om informasjonen ikke var tilstede i den synlige resultatlisten

– Jeg hadde vanskelig for å tro at det stemte, men i lys av hva som har kommet frem så mistenker jeg at det stemmer, sier Sæther til kode24.

Nysgjerrig av natur

Sæther forteller til kode24 at det var hans vanlige nysgjerrighet som gjorde at han oppdaget sårbarheten.

– Jeg liker å åpne inspector-en og se på hvilke requests som går mellom klient og server.

Da han begynte å kikke på Gule Siders kartløsning, oppdaget han at de brukte JSONP for å hente data. Dette er en litt gammeldags måte å forespørre data på uten å måtte forholde seg til sikkerhetsmekanismer som for eksempel Same-origin Policy (SoP), Content Security Policy (CSP) eller Cross-origin resource sharing (CORS).

I dataene som kom fra Gule Siders API lå både navn, adresse og fødselsdato som Unix-timestamp. 📸: Robert Sæther
I dataene som kom fra Gule Siders API lå både navn, adresse og fødselsdato som Unix-timestamp. 📸: Robert Sæther Vis mer

Sæther er kritisk til at selskapet i 2024 velger å bruke en såpass gammeldags og potensielt usikker teknologi som JSONP. Men det som virkelig fikk han til å sperre opp øynene var hvilke data som ble tilgjengelig fra klienten.

– I dataene som kom tilbake sto fødselsdatoen til alle personene i Unix timestamp. Det gjorde meg mer nysgjerrig, og jeg oppdaget at på Gule Siders personsøk så dukket faktisk fødselsdatoene opp i selve kildekoden – i YMD-format.

"Ekkelt!"

Sæther sier at personvernentusiasten i han ble litt oppgitt over at at Gule sider kunne være så slepphendte med persondata.

– Jeg ønsket ikke å risikere at feilen enten ikke ville bli fikset eller at den hadde blitt fikset i stillhet. I lys av dette så tok jeg kontakt med Datatilsynet – uten å få svar.

Først når Dagens Næringsliv tok kontakt med Eniro og Datatilsynet ble det fart i sakene, og Gule sider fjernet kort tid etter fødselsdatoer fra både kildekoden i personsøket og API-responsen i karttjenesten.

«Som utvikler vil man kunne utnytte dette.»

– Men er det egentlig et problem at fødselsdatoer ligger ute – det er vel ikke hemmelig?

– Jeg synes det er underspilt at det er snakk om barn. Man kan kartlegge bosted, telefonnumre og alder til barn. Som utvikler vil man kunne utnytte dette ved å utføre databerikelse og slå sammen dataene med andre datasett, noe som vil kunne øke potensiale for misbruk.

– Da jeg begynte å tenke på konsekvensene, synes jeg det gikk fra å være spennende og gøy til å bli litt ekkelt, sier Sæther.

Eniro opererer for øvrig i både Danmark, Sverige og Norge. I Sverige er det mulig å se personers fødselsdato i telefonkatalogen, men dette er "by design".

Lagde app for å teste

For å grave mer i hvorvidt mistankene om at mindreårige var med i dataene fra Gule sider stemte, lagde Sæther en enkel Next.js-app som han kjørte lokalt på sin egen datamaskin.

Appen behandlet kun dataene klientside, uten noen mellomlagring eller databerikelse, men gjorde det enklere å søke etter personer i stigende alder.

Via appen fikk han bekreftet at det lå mange mindreårige i dataene, og at det var enkelt å finne mindreårige ved å for eksempel søke på et fornavn i tillegg til for eksempel område, kommune eller postnummer.

Appen Sæther lagde og kjørte kun lokalt på egen maskin viser hvor enkelt det kan være for andre å lage en tjeneste som for eksempel kan finne alle barn i et bestemt område, inkludert navn, alder og bosted. 📸: Robert Sæther
Appen Sæther lagde og kjørte kun lokalt på egen maskin viser hvor enkelt det kan være for andre å lage en tjeneste som for eksempel kan finne alle barn i et bestemt område, inkludert navn, alder og bosted. 📸: Robert Sæther Vis mer

– Dette viser fraværet av sikkerhetsmekanismer som for eksempel CORS og CSRF-beskyttelse som gjør at hvem som helst kan konsumere dataene.

– Man kunne jo ha omgått CORS ved å heller gjøre HTTP-forespørslene fra serverside, men med en CSRF-implementasjon samt "HTTP throttling" så ville API-et vært mye bedre sikret, sier Sæther.

En oppdagelse han har gjort, er at Gule sider lanserte en Next.js-versjon av nettsiden i september 2022. Ved å sjekke med Wayback Machine kunne han se at tidligere så lå kun dag og måned i kildekoden, men etter lanseringen av Next-versjonen kom også fødselsåret med.

Hele fødselsdatoen var ikke med i kildekoden før Next.js-sidene ble lansert i september i fjor.
Hele fødselsdatoen var ikke med i kildekoden før Next.js-sidene ble lansert i september i fjor. Vis mer

Tar det alvorlig

Som nevnt er sårbarheten fjernet nå.

Eniro-sjef Hosni Teque-Omeirat sier til kode24 at han ikke ønsker å kommentere saken utover det han allerede har sagt til Dagens Næringsliv, og at hendelsen skal være håndtert i tråd med gjeldende policy og regelverk.

– Vi tar dette feiltrinnet alvorlig og har allerede satt i gang nødtiltak for å umiddelbart fjerne fødselsdatoer fra API-svaret for Gule Sider, og dette er nå utført og bekreftet, sa Teque-Omeirat til avisen.