Kodefejl lækker 10.000 CPR-numre på elever fra førstehjælpskurser

Illustration: leowolfert/Bigstock
Sjusk i koden på hjemmesiden hos en af landets udbydere af førstehjælpskurser til kørekort har blotlagt personlige oplysninger på omkring 10.000 elever - heriblandt deres CPR-numre.

Endnu en gang har manglende sikkerhed været skyld i en større kompromittering af CPR-numre fra tusindvis af danskere.

Læs også: 900.000 danske CPR-numre lagt til frit skue - downloadet 18 gange

Der er tale om en fejl i koden på hjemmesiden hos Førstehjælpcenteret, der gjorde det muligt for hvem som helst at få adgang til personlige oplysninger på brugerne i systemet. Det omfatter blandt andet CPR-numrene på omkring 10.000 personer. Version2 er blevet opmærksom på sikkerhedshullet af en læser og har efterfølgende taget kontakt til ejeren af websitet, så hullet nu er blevet lukket.

»Det er ikke i orden, at det her sker. Jeg har lænet mig op ad de råd og vejledninger, jeg fik, da jeg overtog systemet,« siger direktør og ejer af Førstehjælpscenteret Niels Sommer.

Førstehjælpscenteret tilbyder førstehjælpskurser i samarbejde med en række køreskoler til elever, der er ved at tage et kørekort. Når kurset er færdigt, får eleverne udstedt et førstehjælpscertifikat med blandt andet navn og CPR-nummer, og derfor har det hidtil været en fast del af proceduren, at de skulle opgive de personlige oplysninger til førstehjælpsvirksomheden.

Konkret består sikkerhedshullet i en alvorlig svipser i koden til den administrationsside, hvor eleverne kan ændre i deres egne oplysninger. Normalt bør man være logget ind for at have adgang til disse oplysninger, men dette sikkerhedstjek er af ukendte årsager ikke lagt ind i koden. Derfor har det indtil nu været muligt for enhver udefrakommende at skrive id-nummeret på en hvilken som helst elev ind i adressefeltet i browseren og således få direkte adgang til vedkommendes oplysninger.

Eksempelvis kunne man skrive www.trafik1.dk/elev_edit.php?id=11005 i browseren og få adgang til følgende (censureret):

Man skulle blot ændre på tallet efter id= for at få adgang til de andre elevers oplysninger. Normalt bliver adgangen til sådan en side blokeret, medmindre man har logget ind. Dette tjekker koden ved hjælp af en session, der er en cookie, som bliver gemt i brugerens browser og dermed husker, at vedkommende er logget ind.

Problemet var bare, at den kode, der skulle verificere brugerens session-cookie og holde alle andre væk, ikke fandtes.

»Det ligner noget copy-paste-kode fra en administrationsside, der er lagt over på elevernes administrationsside uden at være blevet ændret til eleven,« siger Ronni Haastrup Madsen, der er direktør i West Soft Development, som tidligere har stået for at lave nogle enkelte rettelser i hjemmesiden.

»Det er totalt no-go at lægge et id på brugerne ind i adressen, for hvis du glemmer at sikre det, er det bedre, at der slet ikke er et id med,« siger han.

Ukendt udvikler står bag amatørfejl

Det er endnu uvist, hvem der har stået for at lave det oprindelige system til Førstehjælpscenteret og dermed står bag den oprindelige fejl i koden.

Historien er dermed også et eksempel på, hvad der kan ske, når man overtager et gammelt it-system og ikke gennemgår sikkerheden i det.

Niels Sommer overtog Førstehjælpscenteret i 2011 og dermed også den nuværende hjemmeside, hvor sikkerhedshullet lå og truede.

Virksomheden stammer tilbage fra 2006 og har omkring 1.000 kunder om året, som alle har deres personlige oplysninger som navn, adresse, telefonnummer og CPR-nummer liggende i systemet. Det giver sammenlagt omkring 10.000 kunder i databasen.

»Jeg har ikke snakket med dem, der lavede systemet i tidernes morgen. Jeg overtog bare et eksisterende system, men har ikke været nede i mulden for at undersøge, om noget haltede. Det fungerede bare, og så opdager man først, at noget er galt, når det ikke fungerer,« siger Niels Sommer.

Han fik efter overtagelsen udviklerne hos West Soft Development til at foretage nogle små rettelser i administrationsdelen, men det var ifølge udviklerne selv ikke nok til, at fejlen blev opdaget.

»Hvis vi havde fået til opgave at lave et sikkerhedstjek af hjemmesiden, ville vi opdage det. Men når vi bare skal ind i administrationsdelen og ændre nogle felter, ser vi det ikke,« siger Ronni Haastrup Madsen og fortsætter:

»Det er en fejl, vi ser rigtig meget hos folk. Det er typisk, hvis man har overtaget noget kode fra hobbyprogrammører eller knap så erfarne folk, at de her ting opstår.«

Glemte at rådgive om krav til krypteret forbindelse

Ud over det konkrete sikkerhedshul i koden har førstehjælpssiden et andet og mere overordnet sikkerhedsproblem:

Når man som virksomhed opbevarer folks personnumre, er det nemlig et krav, at man foretager en række nødvendige foranstaltninger for at sikre dem. Heriblandt skal virksomhederne sørge for, at forbindelsen mellem brugeren og serveren er krypteret med SSL for at forhindre uvedkommende i at få adgang. Hvis man kan se et ikon af en hængelås oppe i browserens adressefelt, betyder det, at forbindelsen er krypteret.

Men heller ikke det gør Førstehjælpscenteret brug af.

Det lyder, som om det her kommer som noget nyt for dig?

»Ja, det gør det. Jeg er ikke orienteret om, hvordan den del fungerer, men vi vil tage det videre med vores udviklere,« siger Niels Sommer.

Da webudviklerne hos West Soft Development lavede rettelserne i hjemmesiden for Førstehjælpscenteret, gjorde de heller ikke Niels Sommer opmærksom på de manglende SSL-certifikater. Og det var en fejl, indrømmer direktøren:

»Det burde vi have gjort. Normalt gør vi det, når folk opbevarer CPR-numre,« siger Ronni Haastrup Madsen, og erkender også, at sikkerhedshullet i koden måske kunne være opdaget tidligere i forløbet:

»Man kunne håbe på, at når man går ind og laver et certifikat, så skal du manuelt ind og rette koden, og så kunne man have opdaget fejlen,« siger han.

Datatilsynet har tidligere sagt følgende til Version2 omkring kryptering af trafikken:

Læs også: Datatilsynet: CPR-numre skal krypteres - men ikke i e-mails

»På en hjemmeside kan det lade sig gøre at kryptere trafikken, uden at jeg som almindelig bruger skal installere noget indviklet. Derfor kræver vi, at det sker krypteret, når det er personnummer eller andre fortrolige oplysninger indblandet,« sagde kontorchef hos Datatilsynet Lena Andersen.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (14)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Jens Beltofte

De burde nok også rimelig hurtigt få SSL på siden http://trafik1.dk/lost_certificate.php.

Man tænker lidt hvordan gemmer CPR-numrene i systemet. Når systemet har været så piv åbent som det var/er, mon de så ikke også bare gemmer CPR-numre m.m. i ren tekst?

PS: de bør nok også fikse deres bestillingsside. Man kam bestille og gå til betaling uden at udfylde nogle oplysninger over hovedet.

  • 6
  • 0
Peter Jensen

Chokerende at man kan lave så amatøragtig programmering.

@Jens : Ja HTTPS blæser de tilsyneladende også på, men det undrer ikke når man også kan lave det så amatøragtigt at man ved at ændre i URLen kan læse (og redigere?) andre brugeres personfølsomme data.

  • 5
  • 0
Jacob Hansen

CPR-numret er ikke hemmeligt. Det er ikke en kode. Det er ikke på nogen måde en verificeret identifikation at kunne nogens CPR-nummer. Nummeret at bare et ID på samme niveau som at kende nogens emailadresse.

Den eneste måde at få banket det ind i skallen på folk er at offentliggøre alle numrene, så vi endelig kan få lagt den myte i graven, at CPR-numrene skulle være "hemmelige" på nogen måde.

Offentliggør alle CPR-numre og læg ansvaret over på den (tosse), der tror, CPR-nummeret tæller som verificeret identifikation!

  • Hvis nogen køber noget på nettet per efterkrav og bruger mit CPR-nummer som identifikation, så bør det være den pågældende butik og ikke mig, der har et problem.

  • Hvis en offentlig myndighed foretager en ændring (i skatten f.eks.), fordi de har snakket med nogen i telefon, som tilfældigvis kunne mit CPR-nummer, så bør det være den pågældende myndighed, der har et problem, og ikke mig.

Det er noget fantastisk rod, at man på den ene side bruger CPR-nummeret som identifikation, men samtidig udleverer hele CPR-registret til diverse operatører, der håndterer listen med så ringe sikkerhed, at man lige så godt kunne skrive numrene i telefonbogen!

  • 17
  • 2
Milos Game

Dette tjekker koden ved hjælp af en session, der er en cookie, som bliver gemt i brugerens browser og dermed husker, at vedkommende er logget ind.

Session:
En session gemmes på webserveren, så der er med andre ord ikke adgang til oplysningerne i browseren. Brugeren kan derfor ikke manipulere disse data.

Cookies:
En cookie gemmes derimod på klienten og kan både læses og skrives af brugeren. Med andre ord, brugerne kan manipulere de data der ligger i cookies, så han/hun kan faktisk redigere, slette og oprette cookies.

Sikkerhed:
Den manglende sikkerhed kunne skyldes at systemet måske oprindeligt var tiltænkt et internt netværk, et intranet. Hvis det er scenariet, så "behøver" man egentligt ikke denne sikkerhed, da man stoler på de interne brugere, men ekstra sikkerhed kan da bestemt ikke skade. Det anbefales dog at man "aldrig" slækker på sikkerheden.
Hvis det var direkte tiltænkt et eksternt netværk, dvs. eksterne brugere (vilkårlige elever), så er det klart et krav at man har sikkerheden på plads.

  • 8
  • 0
Jesper Høgh

.. at inkompetente IT personager sælger/forærer væk vores data?
Når nu inkompetencen er så foretrukket frem for kompetencen. Som ny uddannet IT medarbejder af i dag, skal du jo helst ikke kunne programmere, næh du skal kunne konfigurere.
Hvis man skal være large, så kan man sammenligne det med det, der i gamle dage hed systemprogrammør - altså implementeur.
Men de systemer, som i disse tider skal implementeres, er ganske anderledes end de forhenværende - og de har også ganske andre objektiver.

Stort set ingen nyuddannede IT folk af i dag ved hvad stack eller heap betyder, men, det er også ligegyldigt, hvis man kan konfigurere Googles 'værktøjer', så er man jo chefens, altså økonomens øjesten.

  • 5
  • 3
Palle Due Larsen

Den eneste måde at få banket det ind i skallen på folk er at offentliggøre alle numrene, så vi endelig kan få lagt den myte i graven, at CPR-numrene skulle være "hemmelige" på nogen måde.

Det vil så kræve en lovændring, idet persondatalovens §11, stk. 3 siger:

Uanset bestemmelsen i stk. 2, nr. 3, må der ikke ske offentliggørelse af personnummer uden udtrykkeligt samtykke.

  • 8
  • 0
Peter Christiansen

Session:
En session gemmes på webserveren, så der er med andre ord ikke adgang til oplysningerne i browseren. Brugeren kan derfor ikke manipulere disse data.

Det er PHPSESSID session id cookien han taler om, den bliver send med expiry end-of-session og bliver sammenlignet med session id i deres backend db.

Den kan sagtens ændres og det er derfor man altid skal sanitere cookie data på serveren inden man smider det ind i en sql søgning for at se om brugeren har adgang.

  • 2
  • 0
Mickey Rasmussen

Et cpr nummer er altså bare ikke så hemmeligt og personligt som det bliver gjort til!
Der er så mange folk der i forbindelse med deres erhverv har adgang til dit personnummer - endda matchet op med adresse etc.

Virksomheder kan købe sig adgang til cpr registret hvis nødvendigt. Hvis du ved hvornår folk har fødselsdag - kender du størstedelen af deres CPR - Derudover ved du også om det sidste er lige eller ulige.

Du skal altså "beregne" dig frem til 3½ tal - det svært, men langt fra umuligt!

Vejen frem er at et personnummer fortæller hvem der ejer CPR nummeret - det er ikke hemmeligt, men kan bruges til identifikation i forlængelse af billede ID.

Derimod skal der udvikles en metode til at identificere sig selv, i telefon, online (Nemid) ETC. Gerne noget med en variabel af en art. Eksempel: Jeg ringer til mit teleselskab, for at ændre mit abonnement. Den søde dame beder om min identifikationskode, som jeg kan genere f.eks. med en nøgleviser, online whatever.

Idag virker teleselskabet ret lige glade med hvem der er i den anden ende hvis bare du kender adresse, cpr eller lign. Nogen gange er telefonnummeret nok!

Banken er - for det meste - lidt mere kritiske, og stiller nogen kontrol spørgsmål, f.eks. om sidste transaktioner, lån/kreditter, antal konti etc.

CPR nummeret er DØDT som identifikationsmodel, og kunne i virkeligheden gøres offentligt tilgængeligt.

  • 0
  • 0
Peter Stricker

Derimod skal der udvikles en metode til at identificere sig selv


Njah, det er en sikker metode til autentifikation, vi mangler. Du kan jo sagtens påstå, at du er Mickey Rasmussen eller at du har CPR nummer 231045-0637. Din modpart har brug for en sikker metode til at verificere, at du er den, du udgiver dig for, og ikke en eller anden gårdsanger.

CPR nummeret er DØDT som identifikationsmodel, og kunne i virkeligheden gøres offentligt tilgængeligt.


Et af problemerne ved CPR nummeret er, at det bærer informationer, der ikke er nødvendige til identifikation, men som derimod udgør en hurtig og simpel autentifikationsmetode. Hvis du fortæller mig, at du har det førnævnte CPR nummer, så vil jeg tænke, at det passer nok meget godt, at det slutter med et ulige nummer, men at du skulle være født i '45 er nok ikke helt korrekt. Dermed vil jeg let kunne afvise autenciteten af dit CPR nummer.

Et problem med offentliggørelse af alle CPR numre er, at det ikke rager Gud og hvermand, hvornår jeg har fødselsdag.

  • 0
  • 0
Log ind eller Opret konto for at kommentere
IT Company Rank
maximize minimize