Gå til hovedindhold

SQL-injektionsangreb er en af de ældste sårbarheder i webapplikationer, og er blevet diskuteret siden slut-90'erne, men de er stadig relevante i dag. Denne forklaringstekst fortæller hvad de er, hvordan de virker, og hvordan du kan forhindre dem.

SQL-injektion – betydning og definition

En SQL-injektion, nogen gange forkortet til SQLi, er en slags sårbarhed, hvor en hacker bruger et stykke SQL-kode (Structured Query Language) til at manipulere en database og få adgang til potentielt værdifulde oplysninger. Det er en af de mest udbredte og truende typer af angreb, fordi det potentielt kan bruges mod enhver webapplikation eller ethvert websted, der bruger en SQL-baseret database, og det gør næsten alle.

Hvordan virker SQL-injektionsangreb?

For at forstå SQL-injektion er det vigtigt at forstå hvad SQL er. SQL er et forespørgselssprog, der bruges i programmering til at tilgå, ændre og slette data, der opbevares i relationelle databaser. Siden langt de fleste hjemmesider og webapplikationer afhænger af SQL-databaser, kan et SQL-injektionsangreb have alvorlige konsekvenser for organisationer.

En SQL-forespørgsel er en anmodning, der sendes til en database med en eller anden form for aktivitet eller funktion, f.eks. forespørgsel på data eller eksekvering af SQL-kode, der skal udføres. Et eksempel er, når login-oplysninger sendes via en webformular for at give en bruger adgang til et websted. Typisk er denne type webformularer designet til kun at acceptere specifikke typer data, f.eks. navn og/eller adgangskode. Når disse oplysninger er tilføjet, sammenlignes de med en database, og hvis de stemmer, får brugeren adgang. Hvis ikke, formenes de adgang.

Der opstår potentielle problemer, fordi de fleste webformularer ikke kan forhindre, at der indføres andre informationer i formularerne. Hackere kan udnytte denne svaghed og bruge tekstfelter i formularen til at sende deres egne anmodninger til databasen. Dette kan potentielt give dem mulighed for at gennemføre en række kriminelle aktiviteter, lige fra at stjæle følsomme data til at manipulere oplysningerne i databasen til deres egne formål.

På grund af udbredelsen af websteder og servere, der anvender databaser, er sårbarhed overfor SQL-injektion en af de ældste og mest udbredte typer af internetbaserede angreb. Flere udviklinger i hackerfællesskabet har øget risikoen for denne type angreb, især fremkomsten af værktøjer, der kan opdage og udnytte SQL-injektion. Disse værktøjer, der er frit tilgængelige fra open source-udviklere, gør cyberkriminelle i stand til automatisk at udføre angreb på blot et par minutter ved at give dem mulighed for at få adgang til enhver tabel eller kolonne i databasen blot med et enkelt klik og en angrebsproces.

Symptomer på SQLi

Et SQL-injektionsangreb behøver ikke at vise symptomer overhovedet. Men nogle gange er der tegn udadtil, som for eksempel:

  • At modtage en ekstrem mængde anmodninger inden for kort tid. For eksempel kan du se adskillige emails fra dit websteds kontaktformular.
  • Reklamer, der peger på mistænkelige websteder.
  • Mærkelige popups og beskedfejl. 

Typer af SQL-injektion

Afhængigt af, hvordan de får adgang til back-end data, og omfanget af de potentielle skader, de forårsager, falder SQL-injektioner i tre kategorier:

SQLi i båndet: 

Denne type SQLi-angreb er ligetil for angribere, siden de bruger samme kommunikationskanal til at angribe og indsamle resultater. Denne type SQLi-angreb har to underkategorier:

  • Fejlbaseret SQLi: Databasen producerer en fejlmeddelelse på grund af angriberens handlinger. Angriberen indsamler information om databasens infrastruktur, baseret på de data, der genereres af disse fejlmeddelelser.
  • Union-baseret SQLi: Angriberen bruger SQL-operatoren UNION til at opnå de ønskede data, ved at sammensætte flere udsagn i et enkelt HTTP-svar.

Inferens-SQLi (Også kendt som blind SQL-injektion): 

Denne type SQLi involverer angribere, der bruger svar og adfærdsmønstre fra serveren, efter den sender datapayloads tli at lære mere om dens struktur. Data overføres ikke fra webstedets database til angriberen, så angriberen ser ikke information om angrebet i båndet (derfor begrebet "blind SQLi"). Inferens-SQLi kan inddeles i to underkategorier:

  • Tidsbaseret SQLi: Angribere sender en SQL-anmodning til databasen, og får databasen tli at vente et par sekunder, før den svarer sandt eller falsk på anmodningen.
  • Boolean SQLi: Angribere sender en SQL-anmodning til databasen, og lader applikationen svare ved at generere enten et sandt eller falsk resultat.

SQLi uden for båndet: 

Denne type SQL-angreb finder sted i to situationer:

  • Når angribere ikke kan bruge samme kanal til at angribe og indsamle information; eller,
  • Når en server enten er for langsom eller ustabil til at udføre disse handlinger.
Interior of a server room. SQL injection attacks are one of the oldest web application vulnerabilities

Indvirkning af SQL-injektionsangreb

Et SQL-angreb kan have alvorlige konsekvenser for en virksomhed. Det er fordi et SQL-injektionsangreb kan:

  • Afsløre følsomme data. Angribere kan hente data, hvilket risikerer at afsløre følsomme data, der lagres på SQL-serveren.
  • Kompromittere dataintegritet. Angribere kan ændre eller slette oplysninger fra dit system.
  • Kompromittere brugeres privatliv. Afhængig af de data, der lagres på SQL-serveren, kan et angreb afsløre følsomme brugeroplysninger, som adresser, telefonnumre, og kortoplysninger.
  • Give en angriber administratoradgang til dit system. Hvis en databasebruger har administrative rettigheder, kan en angriber få adgang til systemet med skadelig kode.
  • Give en angriber generel adgang til dit system. Hvis du bruger svage SQL-kommandoer til at tjekke brugernavne og kodeord, kan en angriber få adgang til dit system uden at kende en brugers oplysninger. Derfra kan en angriber forvolde skade ved at tilgå og manipulere følsomme oplysninger.

Prisen på et SQL-injektionsangreb er ikke kun finansiel: Den kan også involvere tab af kundetillid og skader på omdømme, hvis personlige oplysninger som navne, adresser, telefonnumre, og kortoplysninger bliver stjålet. Når man har mistet kundernes tillid, kan den være svær at genvinde.

Eksempler på SQL-injektion

I årenes løb har mange organisationer været ofre for SQLi. Nogle synlige eksempler inkluderer:

Fortnite, 2019

Fortnite er et onlinespil med over 350 millioner brugere. I 2019 opdagedes en sårbarhed overfor SQL-injektion, der lod angribere tilgå brugerkonti. Sårbarheden blev patchet.

Cisco, 2018

En sårbarhed overfor SQL-injektion blev fundet i Cisco Prime License Manager i 2018. Sårbarheden tillod angribere at få shell-adgang til systemer, hvor licensadministratoren var installeret. Cisco har siden patchet sårbarheden.

Tesla, 2014

I 2014 annoncerede sikkerhedsforskere, at de var i stand til at trænge ind på Teslas websted ved brug af SQL-injektion, og dermed få administratorrettigheder og stjæle brugeroplysninger.

Ofte stillede spørgsmål om SQL-injektionsangreb

Ofte stillede spørgsmål om SQLi inkluderer:

Hvad er et SQL-injektionsangreb?

Et SQL-injektionsangreb bruger skadelig SQL-kode til at manipulere backend-databaser for at tilgå private oplysninger. Disse oplysninger kan inkludere følsomme virksomhedsdata, brugerlister, eller kundedetaljer. SQL står for "Structured Query Language" og SQL-injektion bliver nogle gange forkortet til SQLi.

Hvad gør SQL-injektion?

SQL-injektionsangreb tillader angribere at forfalske deres identitet, ændre eksisterende data, afsløre data på systemet, ødelægge data eller gøre det utilgængeligt og blive administratorer på databaseserveren. SQL-injektionsangreb kan forvolde alvorlig skade på virksomheder, inklusive tab af kundetillid, hvis fortrolig kundedata bliver stjålet.

Hvor almindelige er SQL-injektionsangreb?

Fordi de er relativt lette at implementere, og fordi den potentielle belønning er stor, er SQL-injektionsangreb ikke sjældne. Statistikkerne varierer, men det estimeres at SQL-injektionsangreb udgør hovedparten af angreb på softwareapplikationer. Ifølge Open Web Application Security Project er injektionsangreb, inklusive SQL-injektioner, den tredjemest alvorlige sikkerhedsrisiko for webapplikationer i 2021.

Sådan forhindrer man SQL-injektionsangreb

For virksomheder, der er bekymret over hvordan, de skal forhindre SQL-injektioner, inkluderer nøgleprincipper til at forsvare websteder og webapplikationer:

Personaletræning:Gør dem opmærksomme på SQLi-baserede risici inden for det hold, der er ansvarlig for din webapplikation, og giv nødvendig rollebaseret træning til alle brugere.

Hold styr på brugerinput:Alt brugerinput i en SQL-forespørgsel introducerer risiko. Behandl input fra autentificerede og/eller interne brugere på samme mode som offentligt input, indtil det er bekræftet. Giv kun de minimale, nødvendige rettigheder til konti, der forbindes til SQL-databasen. Brug whitelists som standard i stedet for blacklists til at verificere og filtrere brugerinput.

Brug de seneste versioner:Det er vigtigt at bruge den seneste udgave af udviklingsmiljøet for at maksimere beskyttelse, siden ældre udgaver kan mangle nye sikkerhedsfunktioner. Sikr dig, at du installerer de nyeste software- og sikkerhedsopdatering, når de er tilgængelige.

Bliv ved med at scanne webapplikationer:

Brug omfattende værktøjer til administration af applikationsydelse. Scan jævnligt webapplikationer for at identificere og håndtere mulige sårbarheder, før de fører til alvorlig skade.

Brug en firewall:En firewall til webapplikationer (WAF) bruges ofte til at bortfiltrere SQLi, såvel som andre onlinetrusler. En WAF afhænger af en stor og hyppigt opdateret liste af signaturer, der tillader den at bortflitrere skadelige SQL-forespørgsler. Normalt har listen signaturer, der håndterer særlige angrebsvektorer, og opdateres hyppigt som modsvar på nyopdagede sårbarheder.

Relaterede produkter:

Mere læsning:

Hvad er SQL-injektion? Definition og forklaring

SQL-injektion tillader angribere at få uautoriseret adgang til databaser, hvilket beskadiger virksomheder. Få mere at vide om, hvordan SQL-injektion virker.
Kaspersky Logo