It-brøler hos Rejsekort: Brugere kunne se hinandens personlige data

Blandt andet lokationsdata og oplysninger om hemmelige adresser har været tilgængelige for uvedkommende som følge af en softwarefejl i rejsekortsystemet.

Hvornår har du været ved hospitalet? Eller hvad er din hemmelige adresse? Disse spørgsmål har uvedkommende i princippet kunnet få svar på som følge af en fejl i rejsekortsystemet.

Fejlen er opstået i forbindelse med softwareopdatering, og den har betydet, at rejsekort-brugere har kunnet tilgå oplysninger om, hvor andre brugere har befundet sig på givne datoer i forbindelse med optankning af rejsekort, samt oplysninger om navn og adresse - uanset om sidstnævnte ellers har haft adressebeskyttelse i cpr-registret.

Administrerende direktør i Rejsekort A/S Bjørn Wahlsten fortæller, at fejlen opstod 3. juli i år i forbindelse med en software-leverance fra den franske leverandør til systemet, Thales.

Fakturaer mv. på rejsekort Fakturaer, kreditnotaer og rykkere tilgås af kunden på selvbetjening via funktionen for visning af kontoopgørelse. Dog kun tre måneder tilbage i tiden. Fakturaer, kreditnotaer og rykker oprettes kun for registrerede rejsekortkunder. Det vil sige, at de kan være relateret til Rejsekort Personligt og Rejsekort Flex, men ikke til rejsekort anonymt. Der dannes fakturaer for betaling af kort, som er bestilt gennem kundecenter eller selvbetjening, for betaling af tank-op, som er bestilt på selvbetjening, og for automatisk tank-op. Der dannes ikke faktura for kort, som er købt i et betjent salgssted eller i en automat, eller for tank-op, som er udført i et betjent salgssted eller i en automat. Kontoopgørelsen indeholder dels en tekstlinje med type, nummer og beløb for fakturaer, rykkere, kreditnotaer og betalinger, og dels – fra idriftsættelsen af version 6 3/7 – et link, hvor en pdf-kopi af fakturaer, kreditnotaer og rykkere kan hentes frem. Fejlen bestod i, at linket til fremhentning af pdf-kopier indeholdt dokumentets løbenummer og kunne manipuleres, så andre kunders dokumenter fremkom. Fejlen omfattede alle de typer dokumenter, der er links til.

»Den fejl er inden for et område, som kræver øjeblikkelig handling og en rettelse. Fejlen er ikke acceptabel,« siger rejsekort-direktøren.

Fejlen blev lukket 17. august i år, efter at Version2 via et tip fra en læser gjorde Rejsekort A/S opmærksom på problemet.

Den 3. juli blev en ny softwareopdatering rullet ud i rejsekortsystemet, den såkaldte Version 6. I den forbindelse kom der også ny funktionalitet, som har gjort det muligt for brugere at hente fakturaer, kreditnotaer og rykkere i pdf-format tre måneder tilbage via rejsekortets online-selvbetjening.

Fakturaerne bliver eksempelvis oprettet, når en bruger som følge af automatisk optankning får sat flere penge ind på kortet ved ind- og udtjekning.

Version2 har kun set eksempel på fakturaer og altså ikke kreditnotaer og rykkere. Af fakturaerne fremgår blandt andet oplysninger som kundenummer, navn, adresse, rejsekort-nummer, samt hvor rejsekort-optankningen har fundet sted. Eksempelvis 'København H'.

Fejlen, som Version2 har efterprøvet, har gjort det muligt for brugere, der er logget ind via selvbetjeningsløsningen, at tilgå blandt andet fakturaer for andre brugere. Det har kunnet lade sig gøre ved at ændre i den url, som optræder i browserens adressefelt.

De enkelte fakturaer er tildelt et fakturanummer, som rejsekort-systemet bruger til at finde frem til det rigtige dokument. Fakturanummeret fremgår af adressefeltet.

Og her opstår problemet. For hvis en bruger har klikket i browserens adressefelt og skrevet et nummer, som viser sig at tilhøre en anden brugers pdf-faktura, har det været muligt at se denne faktura.

Der har altså ikke været nogen validering af, hvorvidt den bruger, der er logget ind, faktisk har ret til at se den faktura, som han eller hun forsøger at få vist.

Trivielt at høste data

Bjørn Wahlsten understreger, at fejlen ikke har gjort det muligt målrettet at hente data ud om en bestemt person, da der i udgangspunktet ikke er noget, der kobler et fakturanummer til et personnavn.

Så informationer om eksempelvis 'Jens Jensen' har altså ikke uden videre kunnet søges frem af uvedkommende, uden at man kender et specifikt fakturanummer for 'Jens Jensen'.

Datalog og internetaktivist fra BitBureauet Christian Panton har tidligere gjort sig bemærket i forhold til rejsekortet, hvor han har påvist, at det var muligt at ændre data på kortet i en tidligere udgave.

Christian Panton står desuden bag flere aktivistiske kodeprojekter, hvor han blandt andet har påvist, at flere danske teleselskaber sendte kunders - også de hemmelige - mobilnumre til hjemmesider, når kunden besøgte siden fra en telefon.

Version2 har bedt Christian Panton vurdere, hvor svært det ville være at udnytte den nu lukkede sårbarhed i rejsekort-systemet til at trække kundedata ud med.

»Som regel er det jo sådan, at hvis man kan få fat i en faktura, og man kan få fat i to, så kan man også få fat i dem alle sammen,« siger internetaktivisten.

Og det ville da heller ikke have været nødvendigt med det rene gætværk, hvis en hacker havde ønsket at trække data ud om rejsekort-kunder. Fakturanumrene er nemlig fortløbende.

I et tænkt eksempel vil det sige, at en faktura fra 15. maj klokken 14:46 for en person kunne have nummer 1, mens en faktura 15. maj klokken 14:47 for en anden person ville have nummer 2. Og så fremdeles.

Dette mønster betyder i udgangspunktet, at det med lidt programmeringssnilde ville være muligt at skrue et kode-script sammen, der hiver alle de fakturaer ud af systemet, som fejlen har givet adgang til.

»Det er trivielt at lave sådan nogle scripts. Man skal typisk have en eller anden cookie i forbindelse med et login, og når man har det, så er det bare at gå i gang fra en ende af,« siger Panton.

Det ville i princippet være muligt for Rejsekort A/S automatisk at blokere for sådan et udtræk, hvis der eksempelvis blev lavet mange faktura-forespørgsler på kort tid fra en enkelt ip-adresse. Men som Christian Panton bemærker, ville det formentlig være muligt at omgå sådan en detektionsmekanisme ved at lægge en forsinkelse ind i det script, der trækker data ud.

Tandpasta tilbage i tuben

Der er dog ikke noget, der tyder på, at nogen har brugt hullet til på den måde systematisk at trække rejsekort-passagerers data ud af systemet.

Bjørn Wahlsten fortæller, at logs i systemet ville vise, hvis nogen havde gjort netop dette.

»Det har vi ikke set på nogen måde, at nogen har,« siger han.

Og heldigvis. For når først data er trukket ud af et it-system og eksempelvis flyder frit på nettet, så er det svært at gøre skaden god igen. Eller som Christian Panton bemærker:

»Det er svært at få tandpasta tilbage i tuben. Når det først er ude, så havner det hurtigt i afledte databaser.«

Men hvad så, hvis data var røget ud, vil nogen måske spørge.

Ud over de åbenlyst personlige data som hemmelige adresser, samt hvor folk har befundet sig på en given dato i forbindelse med automatisk optankning af rejsekortet, peger Christian Panton på, at andre faktura-oplysninger som kundenummer og rejsekortnummer også kan misbruges.

Eksempelvis i forbindelse med url-hacking andre steder i rejsekort-systemet, hvor disse parametre måtte være en del af inputtet for at kunne tilgå data.

Derudover vil oplysningerne formentlig også kunne bruges i gængse social engineering-forsøg, hvor en angriber eksempelvis kontakter rejsekortets kundeservice telefonisk og opgiver oplysningerne.

»Blotlægning af informationer er jo altid problematisk, fordi det tit kan bruges som afsæt til et angreb,« siger Christian Panton.

Han er i øvrigt ikke synderligt overrasket over, at fejlen har eksisteret i første omgang:

»Der burde ikke være sådan en fejl, det undrer mig bare ikke, at man laver sådan nogle fejl. Det er stadig mennesker, der er bag, men det undskylder ikke, at man ikke har forsøgt at undgå det,« siger Panton og tilføjer:

»Normalt får man jo testet sådan nogle ting via nogle folk, der sidder og kigger på det med andre briller end dem, der har udviklet det.«

Gennemgik selvbetjeningsløsning

For at undgå flere af denne type fejl gik Rejsekort A/S umiddelbart efter Version2's henvendelse i gang med at finkæmme rejsekort.dk.

»Vi benyttede lejligheden til at sætte alle testere i gang mandag, hvor vi gennemgik hele vores område for alle lignende situationer.«

I den forbindelse fandt Rejsekort A/S et enkelt andet sted, hvor det via en tilsvarende metode umiddelbart så ud til, at det var muligt for uvedkommende at tilgå fakturaoplysninger, fortæller Bjørn Wahlsten.

Det viste sig dog, at et forsøg på at udnytte hullet i dette tilfælde sendte brugeren videre til en fejlside. Så i denne situation var der altså ikke adgang til andres data.

»Desuden har jeg haft en alvorlig snak med vores leverandør i forhold til, hvordan fejlen kan opstå. Vi har arrangeret et møde, hvor vi tager en grundig gennemgang af hele deres test-procedurer og særligt i forhold til deres sikkerhedstest,« siger Bjørn Wahlsten.

»Tak for hjælpen.«

En ting er leverandørens sikkerhedstests, noget helt andet er de uofficielle tests, som et system, der på den måde er offentligt tilgængeligt, bliver udsat for. Det var eksempelvis ved at prøve sig frem, at Version2's læser opdagede sikkerhedshullet i første omgang.

Når folk på den måde opdager sikkerhedshuller, kan der være al mulig grund til at være forsigtig. En offentlig eller privat organisation kan nemlig vælge at se det som et forsøg på hacking. Så i stedet for et 'tak for hjælpen' modtager brugeren en politianmeldelse.

I det konkrete tilfælde med rejsekortet fortæller Bjørn Wahlsten, at den måde, hvorpå fejlen er blevet opdaget, er blevet diskuteret internt hos Rejsekort A/S. I den forbindelse har nogle givet udtryk for, at måden, fejlen er fundet på, svarer til at dirke en dør op, uden at gå ind.

Og det ville faktisk ikke være lovligt, påpeger Wahlsten.

Men ville I hellere, at det ikke var blevet testet på den måde, og I så ikke var blevet gjort bekendt med fejlen?

»Nej. Her må jeg være meget klar. Jeg er glad for, at den henvendelse er gået til Mediehuset Ingeniøren (som udgiver Version2, red.), og at den er blevet behandlet professionelt. Og jeg er glad for, at vi har fået fejlen rettet,« siger han og tilføjer:

»Og jeg vil sige, at hvis det var gået direkte til os, så ville mit udgangspunkt også have været: 'Tak for hjælpen'.«

Så dit udgangspunkt havde ikke været en advarsel eller en politianmeldelse, hvis brugeren havde henvendt sig direkte til jer?

»Nej, det havde det ikke. Vi er et offentligt system forstået på den måde, at vi må forvente, at der vil være folk, der laver den slags ting. Og hjælper de os med at gøre systemet bedre, så vil jeg starte med at sige tak.«