Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

Hvis der er én ting, cyberkriminelle elsker, så er det data. Stjålne data er meget værdifulde på ulovlige markedspladser, og adgang til private databaser kan være en fantastisk måde for ondsindede aktører at tjene penge på deres forehavender. En måde at få adgang til private data på er via en SQL-injektion. Men hvad er egentlig en SQL-injektion, hvordan fungerer den, og kan sådan et angreb forhindres?

Hvad er en SQL-injektion?

Softwareprogrammer er afhængige af kode for at fungere. Kode er også det sprog, som maskiner bruger til at udføre operationer, og kan komme i mange former (Python, JavaScript, C++ osv.). Det er ofte gennem kode, at cyberkriminelle kan angribe ofre, og SQL-injektioner (eller SQLis) er ikke anderledes. Disse tillader ondsindede aktører at "injicere" skadelig kode i en SQL-sætning.

Lad os først gennemgå, hvad SQL betyder.

instagram viewer

SQL står for Structured Query Language. Dette er en anden form for programmeringssprog specifikt brugt, når man har med databaser at gøre. SQL, der blev udviklet i 1970'erne af IBM, kan manipulere, gemme og hente databaseoplysninger. Mange databasekommunikationssystemer rundt om i verden bruger SQL, så det er ingen overraskelse, at trusselsaktører har udtænkt måder at misbruge det for at målrette databaser.

SQL-sætninger udgør en vigtig del af databasekommunikation. En SQL-sætning er en kommando der kommer i mange forskellige former. Nogle ændrer data, nogle henter eller sletter dem, og nogle kan ændre selve databasens struktur. Når der opstår en SQL-injektion, injiceres den ondsindede kode i en SQL-sætning.

Selvfølgelig skal et websted eller en applikation bruge SQL-programmeringssproget for at en SQL-injektion er mulig. Men hvordan virker denne angrebsvektor?

Lad os sige, at du har en almindelig kodelinje, der bruges af et program. Når en cyberkriminel indsætter en ondsindet SQL-injektion, tilføjes en kodelinje, der kan forstyrre de forespørgsler, som applikationen selv sender til sin database. Ved at gøre dette kan databasen udnyttes på en måde, så trusselsaktøren kan se data, som de ellers ikke ville have adgang til.

Herfra kunne den cyberkriminelle stjæle data for at udnytte dem direkte eller sælge det på det mørke web eller andre steder. De kan også ændre, tilføje eller slette data fra den målrettede database. Afhængigt af graden af ​​SQL-injektionsangrebet kan der ske en masse skade. Hvis betalingsoplysninger, personnumre eller andre former for private data tilgås, kan mange mennesker risikere at blive udnyttet.

På den anden side, hvis angriberen formår at ændre databasen væsentligt, kan store dele af data gå tabt permanent. Alt i alt kan SQL-injektioner ødelægge hele databaser gennem kun et angreb. Selvom de har eksisteret siden 1998, er de stadig relevante og farlige i vore dage.

Som fundet af Åbn webapplikationssikkerhedsprojekt (OWASP)274.000 forekomster af SQL-injektioner blev identificeret ved test af applikationer for tilstedeværelsen af ​​et sådant angreb i 2021.

Typerne af SQL-injektion

Der er et par forskellige slags SQL-injektion, hvor de tre vigtigste er blind-, in-band- og out-of-band-injektioner.

En blind (eller inferentiel) SQL-injektion opstår, når applikationen eller webstedet angribes af injektion, men de angivne HTTP-svar (Hypertext Transfer Protocol) indeholder ikke resultatet af SQL-forespørgsel. Der gives med andre ord ingen data fra den angrebne database til den cyberkriminelle. Så hvad er meningen med det her?

Ved hjælp af en blind SQL-injektion sender en angriber data til målserveren og kan derefter skelne visse ting om en database gennem arten af ​​selve HTTP-svaret. Oven i dette kan faktorer forbundet med HTTP-svaret hjælpe angriberen med at skabe en anden, mere effektiv SQL-injektion for at få adgang til databasen.

Der er to nøgletyper af blind SQL-injektion, kendt som tidsbaseret og boolsk. Disse to varianter er ret ens i deres natur. Både en boolsk og tidsbaseret SQL-injektion sender en række ja- eller nej-svar-spørgsmål, selvom sidstnævnte vil kræve, at databasen venter et kort stykke tid, før den svarer på forespørgslerne.

Dernæst er der in-band SQL-injektioner. In-band SQL-injektioner giver operatøren mulighed for at udføre angrebet og få det ønskede resultat ved hjælp af den samme kanal. In-band SQL-injektioner er de mest almindeligt anvendte, simpelthen fordi de er de nemmeste at udføre på grund af det faktum, at de kun kræver én kanal.

Til sidst har du en SQL-injektion uden for båndet. Dette er i det væsentlige den alternative version af en in-band SQL-injektion, hvor angriberen ikke kan udføre angrebet i alt ved hjælp af en enkelt kanal. Alternativt kan et angreb være nødvendigt at ty til en SQL-injektion uden for båndet, hvis målserveren simpelthen ikke er hurtig nok til at give resultater.

Disse faktorer gør processen lidt vanskeligere, hvilket betyder, at den skal stole på visse funktioner for at være aktiv på den målrettede database for succes. For eksempel skal den platform, der bliver angrebet, have en mangel på input-sanering. På grund af dette er in-band SQL-injektioner langt mere almindelige end out-of-band SQL-injektioner. Men de sker stadig.

Kan SQL-injektioner undgås?

SQL-injektioner er mere et problem for virksomheder og organisationer end almindelige enkeltpersoner. Men der er ting, som disse potentielle mål kan gøre for at mindske chancen for at blive ramt af sådan et angreb.

Input-sanering er den vigtigste almindelige praksis for at undgå SQL-injektioner. Dette er en filtreringsproces, der scanner og renser input for farlige tegn. Hvis SQL-kode behandles før den renses, vil chancen for en SQL-injektion naturligvis stige.

Derudover kan parametriserede forespørgsler hjælpe dig med at undgå SQL-injektioner. Disse er forespørgsler, der kræver mindst én parameter for udførelse. Anvendelse af parametre gør det sværere for cyberkriminelle at udføre et SQL-injektionsangreb med succes.

Men der er ingen sikker måde at forhindre en SQL-injektion på. Som det er tilfældet med mange cyberangreb, er det stort set umuligt at holde dine enheder og systemer fuldstændig lufttætte. Når det kommer til SQL-injektioner, er det bedste, du kan gøre, at rense alle input og etablere parametriserede forespørgsler.

SQL-injektioner er ældet, men stadig en trussel

Selvom SQL-injektioner har eksisteret i over 20 år, udgør de stadig en risiko for mange websteder og applikationer. Så det er en god idé at have denne form for angreb i tankerne og tage de nødvendige skridt for at forsøge at forhindre det, da det kan udgøre en trussel mod dine databaser på et tidspunkt i fremtiden.