Säkerhetsbrister i MinRidskola kvarstår ett år senare

Idag är det lite över ett år sedan jag skrev om säkerhetsbristerna i Prosperous tjänst MinRidskola.se (Xenophon Cloud Edition), men även idag ett år senare så kvarstår fortfarande ett flertal större säkerhetsbrister i tjänsten. Medlemmars personuppgifter riskerar att läckas, och det är tveksamt om GDPR-kraven är uppfyllda.

Genom att använda sig av endast ett personnummer och en e-postadress så går det att helt ta över någons konto via en ”glömt lösenord” funktion som finns på MinRidskola.se. Funktionen funkar så att om en användare har glömt sitt lösenord så kan användaren återställa det genom att skriva in sitt personnummer och sin e-postadress. Då återställs användarens lösenord till de sista fyra siffrorna i användarens personnummer, och användaren kan då logga in med endast sitt personnummer. Därefter får användaren skriva in ett nytt lösenord.

Ett personnummer är allmän uppgift och kan enkelt hittas. För att komma in på någons konto behövs också användarens e-postadress, vilken inte är särskilt svårt att få tag på heller (t.ex. se nedan). Så genom att känna till dessa uppgifter om någon annan så går det enkelt att återställa användarens lösenord, och därefter komma in på deras konto. Är man inne på någons konto har man då även tillgång till alla personuppgifter den personen har fyllt i, inklusive namn, e-postadress, mobilnummer, vikt och längd, samt man kan både boka och avboka lektioner, se fakturor och t.om. avanmäla personen från klubben.

Skärmbild över glömt lösenord funktionen i MinRidskola
Glömt-lösenord funktionen på MinRidskolas hemsida

Hur kan detta ses som ett säkert system? Ska det räcka med endast ett personnummer och en e-postadress för att komma in i någons konto? I och för sig skickas ett mejl till den registrerade mejladressen som står skrivet på kontot om att kontots lösenord återställs, men då är det redan för sent.

Enklare när inloggad

Så här ser startsidan ut efter jag har loggat in hos en ridskola i MinRidskola.se.Loggar jag in på en ridskola och klickar på ”KURSER”, så kommer jag till en lista med alla kurser som kan bokas. Klickar jag på en kurs, vilken som helst, det spelar ingen roll, så kommer det upp lite blandad information om kursen.

Skärmbild över kursinformation i MinRidskola
Kursinformation

Trycker jag sedan på ”Visa bokade” nere i högra hörnet så kommer det upp en ny ruta med en lista över vilka som har bokat en plats på lektionen.

Skärmbild över kursdeltagare i MinRidskola
En lista över vilka som har bokat en plats på kursen

Det är ju i och för sig bra, men trycker jag på personens namn eller håller med musen på namnet så syns den användarens registrerade mejladress.

Skärmbild över en kursdeltagares e-postadress i MinRidskola
Personens e-postadress

Nu vet jag inte bara namnet på en användare, utan jag vet också deras e-postadress! Jag skulle kunna använda mig av denna informationen, t.ex. för att kolla upp någons personnummer, och sedan återställa deras lösenord med funktionen som jag beskrev ovan, och tada! Nu har jag tillgång till någon annans konto!

Ska det vara så här enkelt? Kan den här nivån på säkerhet verkligen uppfylla dataskyddsförordningens lagar och riktlinjer?

Till exempel så har den här ridklubben 37 aktuella kurser. Dessa kurser kan då bokas av minst en person, vilket betyder att man då hyfsat enkelt, genom att använda sig av bristerna i MinRidskola, skulle kunna få fram inloggningsinformation till alla som har bokat dessa kurser, och sedan återställa deras lösenord och komma in i deras konton. Det här är endast en ridklubb, hur många användares personuppgifter är synliga totalt för alla de ~70 ridklubbar som använder sig av denna tjänst? Om det är ett snitt av 20 personer som har bokat kurser per klubb, så betyder detta att det finns nästan 1500 användare som enkelt kan få sina konton ”hackade” bara för att de har bokat en kurs.

Jag har (”tyvärr”) ingen inloggning till fler ridskolor via MinRidskola så jag kan inte se om andra har samma problem, men med största sannolikhet så är det så då alla använder sig av samma tjänst.

TLS

Qualys SSL Labs har ett test som testar hemsidors SSL-/TLS-konfiguration och meddelar om den är bra eller dålig. Detta blev resultatet efter den kollade www.minridskola.se:

Skärmdump av resultatet från SSL Labs TLS test på minridskola.se

Hemsidan stödjer TLS 1.1, 1.0 samt SSL 3 och 2, versioner som har kända sårbarheter sedan åratal tillbaks. Sidan stödjer också ett flertal svaga krypteringssviter och är sårbar mot både POODLE och DROWN attacker.

Blandat

Före 2022 sparades lösenord i klartext i webbläsarens Local storage om man valde ”kom ihåg mig” vid inloggning. Detta är dock nu fixat då funktionen är borttagen.

Alla som loggar in via sin ridklubb får sitt namn publicerat på en helt annan hemsida med tidsstämpel samt klubbnamn, https://www.ridskolor.se/XenoWebb/XeWebb_Inloggning_Senaste.asp?rader=10.

Byter man lösenord skickas ens nya lösenord via en GET förfrågan till webbservern, vilket i värsta fall kan sparas i serverns loggar samt synas i användarens webbläsarhistorik. Använder man sig av glömt lösenord funktionen skickas användarens personnummer och mejladress också via GET.

Mina användaruppgifter skickas i en GET förfrågan till webbservern (över HTTPS).

Så här skriver w3schools om GET requests:

GET requests can be cached
GET requests remain in the browser history
GET requests can be bookmarked
GET requests should never be used when dealing with sensitive data

Vad är problemet?

  1. Användarnas konton är alldeles för dåligt skyddade mot obehörig åtkomst
  2. E-postadresser för de som bokar en kurs är synliga för alla i hela klubben
  3. Kontons lösenord är för korta
  4. MinRidskola.se eller xenophon.se har ingen integritetspolicy
  5. Hemsidan tillåter sårbara SSL-versioner
  6. Namn på alla som loggar in publiceras offentligt
  7. Lösenord skickas med GET

Vad kan hända?

Användare kan få sina konton ”hackade” eller återställda och därmed förlora åtkomst till dem. Om någon får åtkomst till ett konto som hen inte äger, kan hen ändra personuppgifter, avboka och boka lektioner, se fakturor och betalningshistorik och läcka personuppgifter, vilket kan orsaka bl.a. ekonomisk skada för både ridskolan och för personen som äger kontot. Funktionen för Glömt lösenord kan missbrukas, där någon återställer någon annans lösenord gång på gång för att låsa ute den andra personen från sitt konto. Detta kan pågå tills personen som utsätts för det ändrar e-postadress i sina kontoinställningar (vilket ofta användaren inte kan göra själv, utan behöver kontakta ridskolan).

Hur kan dessa problem fixas?

  1. Kan snabbt fixas genom att göra om Glömt lösenord funktionen så att användaren istället för ett mejl med en unik och tidsbegränsad länk som leder till en sida där användaren får skriva in ett nytt lösenord.
  2. Dölj e-postadressen för övriga användare. Låt användaren själv välja om hens mejladress ska vara synlig för andra.
  3. Öka max-längden som ett lösenord får vara till minst 16 tecken.
  4. Skriv en integritetspolicy och ha den synlig på hemsidorna.
  5. Stäng av föråldrade SSL-/TLS-versioner
  6. Lösenordsskydda sidan
  7. Skicka lösenord hashat eller med t.ex. POST

Företaget som äger och driver tjänsten (Prosperous AB) har kontaktats flera gånger sedan 2020 om dessa problem. Detta inlägg har publicerats för att göra MinRidskolas användare och kunder (ridklubbarna) medvetna om problemen med tjänsten. Förhoppningsvis kommer dessa säkerhetshål fixas inom en snar framtid, men det återstår att se.

Tack för att du har läst, och always encrypt!


Det är inte tillåtet att använda sig av dessa säkerhetsbrister för att till exempel få tillgång till någon annans konto, vare sig det är för att ”testa om det funkar” eller för att faktiskt med mening orsaka skada.
https://en.wikipedia.org/wiki/Full_disclosure_(computer_security)
https://www.schneier.com/essays/archives/2007/01/schneier_full_disclo.html


Ridskolor som berörs av detta (2021-03-10):

Ale-Jennylunds Ridklubb, Bohus, Billdals Ridklubb, Billdal, Bodens Ridklubb, Boden, Bogesundslandets Ryttare, Vaxholm, Bollnäs Ridsällskap, Bollnäs, Botkyrka Ridsällskap, Tumba, Bulycke Ryttarförening, Torslanda, Christinehamns Ridklubb, Kristinehamn, Djursholms Ridskola, Djursholm, Ekerö Ridskola, Ekerö, Enköpings Ridklubb, Enköping, Falkenbergsortens Rf, Falkenberg, Farsta Ridskola, Enskededalen, Färjestad Ridklubb, Karlstad, Gustavsbergs Ryttarsällskap, Gustavsberg, Göteborgs Fältrittklubb, Göteborg, Hageby Ridklubb, Norrköping, Hamre Ridskola, Västerås, Haparanda Ryttare, Haparanda, Heda Ridskola, Vreta Kloster, Härnösands Ridklubb, Härnösand, Järfälla Ryttarförening, Järfälla, Karlstads Ridklubb, Karlstad, Katrineholms Ryttarförening, Katrineholm, Kungsbacka Ridklubb, Kungsbacka, Kungsörs Ridklubb, Kungsör, Köpings Ridklubb, Köping, Landskrona Ridklubb, Landskrona, Ljungskile Ridklubb, Ljungskile, Luleå Ridklubb, Luleå, Lunds Civila Ryttarförening, Lund, Malmö Ridklubb, Malmö, Marks Ridklubb, Örby, Nacka Ridhus, Saltsjö-Boo, Nordhallands Ridklubb, Vallda, Norrköpings Fältrittklubb, Norrköping, Nybro Ridklubb, Nybro, Nyby Torshälla Ridklubb, Torshälla, Piteå Ridklubb, Piteå, Ridklubben Rimbo Ryttare, Rimbo, Ridklubben Östjämten, Hammarstrand, Ridskolan Ridalätt, Stallköping (För Test), Ridskolan Stockby, Lidingö, Solna Fältrittklubb, Solna, Sorunda Ridklubb, Ösmo, Stall Adam, Göteborg, Skogslotten, Norrköping, Stenkullens Ridskola, Stenkullen, Stenungsunds Ridklubb, Ödsmål, Sundsvalls Fältrittklubb, Sundsvall, Sundsvalls Ridklubb, Sundsvall, Säva Ridcenter, Örsundsbro, Trollhättans Fältrittklubb, Trollhättan, Trällekilla Ridklubb, Genarp, Tyresö Ryttarförening, Tyresö, Umeå Ryttarförening, Umeå, Upplands-bro Ryttarförening, Bro, Vallentuna Ridskola Ab, Vallentuna, Varbergs Ridskola, Varberg, Vendelsö Ridskola, Vendelsö, Viarps Kör- Och Ridklubb, Härslöv, Viggbyholms Ridskola, Täby, Västerhaninge Ridskola, Västerhaninge, Åby Ridklubb, Åby, Åsbygdens Ridskola, Ås, Älvkarleby Ridklubb, Skutskär, Örebro Fältrittklubb, Örebro, Örestads Ryttaresällskap, Malmö, Örnsköldsviksortens Rk, Domsjö, Östersund-frösö Ridklubb, Frösön.


För att skydda både mina egna och andras uppgifter har jag censurerat känslig information i bilderna ovan.

Uppdatering 2021-03-10: Lade till avsnittet om kundzonen.
Uppdatering 2021-03-12: Lade till en lista med ridskolor som använder sig av tjänsten.
Uppdatering 2021-03-18: Fixat småfel i denna text.
Uppdatering 2021-04-23: Lade till avsnittet om SSL.

Lämna en kommentar

Din e-postadress kommer inte publiceras.