Jei yra vienas dalykas, kurį kibernetiniai nusikaltėliai mėgsta, tai duomenys. Pavogti duomenys yra labai vertingi nelegaliose prekyvietėse, o prieiga prie privačių duomenų bazių gali būti puikus būdas piktybiniams veikėjams pasipelnyti iš savo verslo. Vienas iš būdų pasiekti privačius duomenis yra SQL injekcija. Bet kas iš tikrųjų yra SQL injekcija, kaip ji veikia ir ar galima išvengti tokios atakos?
Kas yra SQL įpurškimas?
Programinės įrangos programos veikia nuo kodo. Kodas taip pat yra kalba, kurią mašinos naudoja operacijoms atlikti, ir gali būti įvairių formų (Python, JavaScript, C++ ir kt.). Kibernetiniai nusikaltėliai dažnai gali užpulti aukas naudodami kodą, o SQL injekcijos (arba SQLis) nesiskiria. Tai leidžia kenkėjams „įterpti“ žalingą kodą į SQL sakinį.
Pirmiausia pažiūrėkime, ką reiškia SQL.
SQL reiškia struktūrinės užklausos kalbą.
Tai dar viena programavimo kalbos rūšis specialiai naudojamas dirbant su duomenų bazėmis. Aštuntajame dešimtmetyje IBM sukurtas SQL gali manipuliuoti, saugoti ir gauti duomenų bazės informaciją. Daugelis duomenų bazių ryšio sistemų visame pasaulyje naudoja SQL, todėl nenuostabu, kad grėsmių subjektai sugalvojo būdus, kaip ja piktnaudžiauti, siekdami nukreipti duomenų bazes.SQL sakiniai sudaro pagrindinę duomenų bazių komunikacijos dalį. SQL sakinys yra komanda kuri būna įvairių formų. Kai kurie pakeičia duomenis, kai kurie juos nuskaito arba ištrina, o kai kurie gali pakeisti pačios duomenų bazės struktūrą. Kai įvyksta SQL įterpimas, kenkėjiškas kodas įterpiamas į SQL sakinį.
Žinoma, svetainė arba programa turi naudoti SQL programavimo kalbą, kad būtų galima įvesti SQL. Bet kaip veikia šis atakos vektorius?
Tarkime, kad turite įprastą kodo eilutę, kurią naudoja programa. Kai kibernetinis nusikaltėlis įterpia kenkėjišką SQL injekciją, pridedama kodo eilutė, kuri gali trukdyti užklausoms, kurias pati programa siunčia į savo duomenų bazę. Tai darant duomenų bazę galima išnaudoti taip, kad grėsmės veikėjas galėtų peržiūrėti duomenis, prie kurių jis kitu atveju neturėtų prieigos.
Iš čia kibernetinis nusikaltėlis gali pavogti duomenis, kad galėtų juos tiesiogiai išnaudoti arba parduoti tamsiajame internete ar kitur. Jie taip pat gali keisti, pridėti arba ištrinti duomenis iš tikslinės duomenų bazės. Atsižvelgiant į SQL injekcijos atakos laipsnį, gali būti padaryta daug žalos. Jei prieiga prie mokėjimo duomenų, socialinio draudimo numerių ar kitų privačių duomenų, daugeliui žmonių gali kilti pavojus būti išnaudojamais.
Kita vertus, jei užpuolikas sugebės žymiai pakeisti duomenų bazę, gali būti visam laikui prarasta didelė duomenų grupė. Apskritai, SQL injekcijos gali sunaikinti visas duomenų bazes per vieną ataką. Nors jie egzistuoja nuo 1998 m., jie vis dar aktualūs ir pavojingi mūsų dienomis.
Kaip nustatė Open Web Application Security Project (OWASP)274 000 SQL injekcijų atvejų buvo nustatyta, kai 2021 m. buvo tikrinamos programos, ar nėra tokios atakos.
SQL įpurškimo tipai
Yra keletas skirtingų SQL įpurškimo tipų, iš kurių trys pagrindiniai yra aklas, dažnių juostoje ir už juostos ribų.
Aklas (arba išvadinis) SQL įterpimas įvyksta, kai programą ar svetainę užpuola injekcija, tačiau pateiktuose HTTP (Hypertext Transfer Protocol) atsakymuose nėra rezultato SQL užklausa. Kitaip tariant, kibernetiniam nusikaltėliui neteikiami jokie duomenys iš užpultos duomenų bazės. Taigi, kokia to prasmė?
Naudodamas aklą SQL injekciją, užpuolikas siunčia duomenis į tikslinį serverį ir gali atpažinti tam tikrus duomenis apie duomenų bazę pagal paties HTTP atsako pobūdį. Be to, su HTTP atsaku susiję veiksniai gali padėti užpuolikui sukurti kitą efektyvesnį SQL injekciją, kad būtų galima pasiekti duomenų bazę.
Yra du pagrindiniai aklo SQL įterpimo tipai, vadinami laiko pagrindu ir loginiu. Šie du variantai yra gana panašūs savo prigimtimi. Tiek loginė, tiek laiku pagrįsta SQL įpurškimas siunčia taip arba ne atsakymų klausimų masyvą, tačiau pastariesiems reikės, kad duomenų bazė šiek tiek palauktų, kol atsakys į užklausas.
Toliau yra SQL injekcijos juostoje. In-band SQL injekcijos leidžia operatoriui įvykdyti ataką ir gauti norimą rezultatą naudojant tą patį kanalą. SQL injekcijos juostoje yra dažniausiai naudojamos vien todėl, kad jas lengviausia atlikti, nes reikia tik vieno kanalo.
Galiausiai, jūs gavote už juostos ribų esantį SQL injekciją. Iš esmės tai yra alternatyvi SQL injekcijos juostoje versija, kai užpuolikas negali įvykdyti viso atakos naudodamas vieną kanalą. Arba ataka gali prireikti naudoti už juostos ribų esantį SQL injekciją, jei tikslinis serveris tiesiog nėra pakankamai greitas, kad gautų rezultatus.
Šie veiksniai šiek tiek apsunkina procesą, o tai reiškia, kad norint sėkmingai veikti tikslinėje duomenų bazėje, jis turi pasikliauti tam tikromis funkcijomis. Pavyzdžiui, atakuojama platforma turi neturėti įvesties valymo. Dėl šios priežasties SQL įpurškimas juostoje yra daug labiau paplitęs nei SQL įpurškimas už juostos ribų. Bet jų vis tiek pasitaiko.
Ar galima išvengti SQL injekcijų?
SQL injekcijos labiau rūpi įmonėms ir organizacijoms, o ne paprastiems asmenims. Tačiau yra dalykų, kuriuos šie potencialūs taikiniai gali padaryti, kad sumažintų tikimybę, kad juos nukentės tokia ataka.
Įvesties valymas yra pagrindinė įprasta praktika siekiant išvengti SQL injekcijų. Tai filtravimo procesas, kuris nuskaito ir išvalo pavojingų simbolių įvestį. Jei SQL kodas apdorojamas prieš jį išvalant, SQL injekcijos tikimybė natūraliai padidės.
Be to, parametrinės užklausos gali padėti išvengti SQL injekcijų. Tai užklausos, kurioms vykdyti reikalingas bent vienas parametras. Taikant parametrus kibernetiniams nusikaltėliams sunkiau sėkmingai įvykdyti SQL injekcijos ataką.
Tačiau nėra patikimo būdo išvengti SQL injekcijos. Kaip ir daugelio kibernetinių atakų atveju, beveik neįmanoma užtikrinti, kad jūsų įrenginiai ir sistemos būtų visiškai sandarūs. Kalbant apie SQL injekcijas, geriausia, ką galite padaryti, tai išvalyti visas įvestis ir nustatyti parametrizuotas užklausas.
SQL injekcijos yra pasenusios, bet vis dar kelia grėsmę
Nors SQL injekcijos buvo naudojamos daugiau nei 20 metų, jos vis dar kelia pavojų daugeliui svetainių ir programų. Todėl verta nepamiršti šios atakos formos ir imtis reikiamų veiksmų, kad būtų išvengta jos, nes ateityje tai gali kelti grėsmę jūsų duomenų bazėms.