En befintlig variabel började användas på en webbsida
En variabel är en namngiven plats där ett program lagrar ett värde tillfälligt. SportAdmin införde variabeln på en webbsida den 28 juni 2022 och använde den direkt i kommunikationen med databasen.
SportAdmins utredning pekade ut en SQL-injektion via variabeln som den sannolika intrångsvägen. IMY utgick från uppgiften i sin bedömning.
SportAdmin klassificerade kodändringen som en högriskändring och lät flera personer granska den. Granskningen fokuserade främst på inloggning och åtkomst till användaruppgifter. Sårbarheten blev kvar i koden. IMY kopplade kodgranskningen till överträdelsen av artikel 32.1 i dataskyddsförordningen.
Källor: IMY:s beslut, sidorna 2–3, samt IMY:s bedömning, sidorna 8–10.
Så fungerar en SQL-injektion
SQL är ett språk som program kan använda för att hämta och ändra uppgifter i en databas. När en besökare använder en sökfunktion kan webbplatsens program skapa en SQL-instruktion för just den sökningen. Instruktionen kan exempelvis betyda ”hämta uppgifterna för den här föreningen”.
Angriparen lägger in ett eget kommando
Webbplatsens program ska behandla besökarens text som ett värde att söka efter, exempelvis ett föreningsnummer.
Vid en SQL-injektion skriver angriparen SQL-kod i ett fält som webbplatsen tar emot. Sårbar programkod fogar in hela texten i instruktionen till databasen. Databasen tolkar angriparens kod som en del av instruktionen och kör den med de rättigheter som webbplatsens databaskonto har.
Angriparen kan då hämta eller ändra uppgifter och använda de databasfunktioner som kontot har behörighet till.
Från SQL-injektion till upptäckt
De tekniska kontona gav åtkomst till servern
Ett databaskonto låter ett program ansluta till databasen och bestämmer vad programmet får göra. Ett Windowskonto bestämmer vilka program och tjänster som får köras på servern. Databaskontot hade fler behörigheter än driften krävde, och Windowskontot hade fler behörigheter än SportAdmin kände till. Behörigheterna gav angriparen åtkomst till servern.
SQL-servern hanterade databasen och kunde starta externa programfiler, däribland PowerShell-skript. PowerShell styr Windows med skrivna kommandon. Ett skript samlar kommandon som datorn kör automatiskt.
Källa: IMY:s beslut, sidan 3.
Ett driftlarm ledde till upptäckten
Driftövervakning följer servrarnas tillgänglighet, prestanda och belastning. Den 16 januari 2025 slutade en server att svara. Serverstoppet utlöste ett larm från driftövervakningen. SportAdmin upptäckte det pågående intrånget genom en manuell granskning.
Systemloggar är datorernas och programmens automatiska loggböcker. Loggarna visade upprepade intrångsförsök från morgonen den 14 januari och avvikande utgående trafik tidigt den 16 januari. SportAdmin bedömde trafiken som ett troligt tecken på att data fördes ut ur produktionsmiljön.
Källa: IMY:s beslut, sidan 3.
SportAdmins säkerhetsåtgärder efter incidenten
SportAdmin uppgav till IMY att bolaget gick igenom de befintliga funktionerna och aktiverade en ny produktionsmiljö. Där förstärkte bolaget skyddet mot SQL-injektioner och aktiverade en brandvägg för webbapplikationer. Brandväggen filtrerar bort skadliga webbförfrågningar innan de når servern.
Källa: IMY:s beslut, sidorna 4–5.
Källdokument
Integritetsskyddsmyndigheten, Beslut efter tillsyn enligt dataskyddsförordningen – Sportadmin i Skandinavien AB, .