Če kaj obožujejo kibernetski kriminalci, so to podatki. Ukradeni podatki so zelo dragoceni na nezakonitih trgih in dostop do zasebnih baz podatkov je lahko odličen način za zlonamerne akterje, da ustvarijo dobiček s svojimi podvigi. Eden od načinov za dostop do zasebnih podatkov je prek vbrizgavanja SQL. Toda kaj pravzaprav je vbrizgavanje SQL, kako deluje in ali je takšen napad mogoče preprečiti?
Kaj je vbrizgavanje SQL?
Programi se za delovanje zanašajo na kodo. Koda je tudi jezik, ki ga stroji uporabljajo za izvajanje operacij in je lahko v številnih oblikah (Python, JavaScript, C++ itd.). Pogosto lahko kibernetski kriminalci napadejo žrtve prek kode in vbrizgavanje SQL (ali SQLis) ni nič drugačno. Ti omogočajo zlonamernim akterjem, da "vbrizgajo" škodljivo kodo v stavek SQL.
Najprej poglejmo, kaj pomeni SQL.
SQL je kratica za Structured Query Language.
To je druga vrsta programskega jezika se posebej uporablja pri delu z bazami podatkov. SQL, ki ga je leta 1970 razvil IBM, lahko manipulira, shranjuje in pridobiva informacije o bazi podatkov. Številni komunikacijski sistemi podatkovnih baz po vsem svetu uporabljajo SQL, zato ne preseneča, da so akterji groženj iznašli načine, kako ga zlorabiti, da bi ciljali na baze podatkov.Stavki SQL tvorijo ključni del komunikacije z bazo podatkov. Stavek SQL je ukaz ki prihaja v številnih različnih oblikah. Nekateri spreminjajo podatke, nekateri jih pridobijo ali izbrišejo, nekateri pa lahko spremenijo strukturo same baze podatkov. Ko pride do vbrizgavanja SQL, se zlonamerna koda vbrizga v stavek SQL.
Seveda mora spletno mesto ali aplikacija uporabljati programski jezik SQL, da je vstavljanje SQL mogoče. Toda kako deluje ta vektor napada?
Recimo, da imate običajno vrstico kode, ki jo uporablja aplikacija. Ko kibernetski kriminalec vstavi zlonamerno injekcijo SQL, se doda vrstica kode, ki lahko moti poizvedbe, ki jih aplikacija sama pošlje svoji bazi podatkov. S tem je bazo podatkov mogoče izkoristiti na način, ki povzročitelju grožnje omogoči ogled podatkov, do katerih sicer ne bi imel dostopa.
Od tu lahko kibernetski kriminalec ukrade podatke, da jih neposredno izkoristi oz prodati na temnem spletu ali drugje. Prav tako lahko spremenijo, dodajo ali izbrišejo podatke iz ciljne baze podatkov. Odvisno od stopnje napada z vbrizgavanjem SQL lahko povzroči veliko škode. Če se dostopa do podatkov o plačilu, številk socialnega zavarovanja ali drugih vrst zasebnih podatkov, bi lahko bili številni ljudje izpostavljeni izkoriščanju.
Po drugi strani pa, če napadalcu uspe bistveno spremeniti bazo podatkov, lahko trajno izgubi velike količine podatkov. Skratka, vbrizgavanje SQL lahko uniči celotne zbirke podatkov s samo enim napadom. Čeprav obstajajo že od leta 1998, so še vedno pomembni in nevarni v današnjem času.
Kot je ugotovil Open Web Application Security Project (OWASP)274.000 primerov vbrizgavanja SQL je bilo ugotovljenih med testiranjem aplikacij za prisotnost takšnega napada v letu 2021.
Vrste vbrizgavanja SQL
Obstaja nekaj različnih vrst vbrizgavanja SQL, pri čemer so glavne tri slepe, znotrajpasovne in izvenpasovne.
Do slepega (ali sklepnega) vbrizgavanja SQL pride, ko aplikacijo ali spletno mesto napade vbrizgavanje, vendar posredovani odgovori HTTP (Hypertext Transfer Protocol) ne vsebujejo rezultata SQL poizvedba. Z drugimi besedami, kiberkriminalcu niso posredovani nobeni podatki iz napadene zbirke podatkov. Torej, kaj je smisel tega?
Z uporabo slepe injekcije SQL napadalec pošlje podatke ciljnemu strežniku in nato lahko razbere določene stvari o bazi podatkov skozi naravo samega odziva HTTP. Poleg tega lahko dejavniki, povezani z odzivom HTTP, napadalcu pomagajo ustvariti drugo, učinkovitejšo injekcijo SQL za dostop do baze podatkov.
Obstajata dve ključni vrsti slepega vbrizgavanja SQL, znani kot časovno in logično. Ti dve različici sta si po naravi precej podobni. Tako logična kot časovna vstavitev SQL pošljeta niz vprašanj z odgovorom da ali ne, čeprav bo slednje zahtevalo, da baza podatkov počaka nekaj časa, preden se odzove na poizvedbe.
Naslednje so znotrajpasovne injekcije SQL. In-band SQL injekcije omogočajo operaterju, da izvede napad in doseže želeni rezultat z uporabo istega kanala. In-band SQL injections so najpogosteje uporabljeni, preprosto zato, ker jih je najlažje izvesti zaradi dejstva, da zahtevajo samo en kanal.
Nazadnje, imate zunajpasovno vbrizgavanje SQL. To je v bistvu alternativna različica znotrajpasovne injekcije SQL, pri kateri napadalec ne more izvesti celotnega napada z uporabo enega samega kanala. Druga možnost je, da bo napad morda moral uporabiti izvenpasovno vbrizgavanje SQL, če ciljni strežnik preprosto ni dovolj hiter, da bi zagotovil rezultate.
Zaradi teh dejavnikov je postopek nekoliko težji, kar pomeni, da se mora za uspeh zanašati na določene funkcije, da je aktiven v ciljni bazi podatkov. Na primer, platforma, ki je napadena, mora imeti pomanjkanje sanacije vnosa. Zaradi tega so in-band SQL injections veliko bolj pogosti kot zunajpasovni SQL injections. Vendar se še vedno dogajajo.
Ali se je mogoče izogniti vbrizgavanju SQL?
Vbrizgavanje SQL bolj skrbi podjetja in organizacije kot običajne posameznike. Toda obstajajo stvari, ki jih lahko te potencialne tarče storijo, da zmanjšajo možnost, da jih takšen napad zadene.
Prečiščevanje vnosa je ključna običajna praksa za izogibanje vbrizgavanju SQL. To je postopek filtriranja, ki pregleda in očisti vnesene nevarne znake. Če se koda SQL obdela pred sanacijo, se verjetnost vstavitve SQL seveda poveča.
Poleg tega vam lahko parametrizirane poizvedbe pomagajo, da se izognete vbrizgavanju SQL. To so poizvedbe, ki zahtevajo vsaj en parameter za izvedbo. Uporaba parametrov kiberkriminalcem oteži uspešno izvedbo napada z vbrizgavanjem SQL.
Vendar ni zanesljivega načina za preprečitev vbrizgavanja SQL. Tako kot pri mnogih kibernetskih napadih, je precej nemogoče ohraniti svoje naprave in sisteme popolnoma nepredušne. Ko gre za vbrizgavanje SQL, je najboljše, kar lahko storite, razčistiti vse vnose in vzpostaviti parametrizirane poizvedbe.
Injekcije SQL so zastarele, vendar še vedno predstavljajo grožnjo
Čeprav so injekcije SQL prisotne že več kot 20 let, še vedno predstavljajo tveganje za številna spletna mesta in aplikacije. Zato je dobro, da imate v mislih to obliko napada in storite vse potrebno, da jo poskusite preprečiti, saj lahko nekoč v prihodnosti predstavlja grožnjo vašim zbirkam podatkov.