SQL injekcijas ietekme
SQL injekcija (SQLi) ļauj uzbrucējam iejaukties vaicājumos, ko lietojumprogramma veic savā datubāzē [S1]. Galvenā ietekme ietver neatļautu piekļuvi sensitīviem datiem, piemēram, lietotāju parolēm, kredītkaršu informācijai un personiskajai informācijai [S1].
Papildus datu zādzībai uzbrucēji bieži var modificēt vai dzēst datu bāzes ierakstus, izraisot pastāvīgas izmaiņas lietojumprogrammu darbībā vai datu zudumu. [S1]. Smagos gadījumos SQLi var tikt saasināts, lai apdraudētu aizmugures infrastruktūru, iespējotu pakalpojumu atteikuma uzbrukumus vai nodrošinātu pastāvīgu aizmugures durvis uz organizācijas sistēmām [S1][S2].
Galvenais iemesls: nedroša ievades apstrāde
SQL ievadīšanas galvenais iemesls ir nepareiza īpašo elementu neitralizēšana, kas tiek izmantoti SQL komandā [S2]. Tas notiek, ja lietojumprogramma konstruē SQL vaicājumus, savienojot ārēji ietekmētu ievadi tieši vaicājuma virknē [S1][S2].
Tā kā ievade nav pareizi izolēta no vaicājuma struktūras, datu bāzes tulks var izpildīt lietotāja ievades daļas kā SQL kodu, nevis apstrādāt to kā burtiskus datus [S2]. Šī ievainojamība var izpausties dažādās vaicājuma daļās, tostarp SELECT priekšrakstos, INSERT vērtībās vai UPDATE priekšrakstos [S1].
Betona labojumi un mazināšanas pasākumi
Izmantojiet parametrizētus vaicājumus
Visefektīvākais veids, kā novērst SQL ievadīšanu, ir parametrizētu vaicājumu izmantošana, ko sauc arī par sagatavotiem paziņojumiem [S1]. Tā vietā, lai savienotu virknes, izstrādātājiem ir jāizmanto strukturēti mehānismi, kas nodrošina datu un koda atdalīšanu [S2].
Mazāko privilēģiju princips
Lietojumprogrammām vajadzētu izveidot savienojumu ar datu bāzi, izmantojot zemākās privilēģijas, kas nepieciešamas to uzdevumu veikšanai [S2]. Tīmekļa lietojumprogrammas kontam nedrīkst būt administratīvās tiesības, un tas ir jāierobežo ar konkrētām tabulām vai darbībām, kas nepieciešamas tā funkcijai [S2].
Ievades validācija un kodēšana
Lai gan ievades validācija neaizstāj parametrēšanu, tā nodrošina padziļinātu aizsardzību [S2]. Lietojumprogrammām ir jāizmanto zināmā labā stratēģija, kas apstiprina, ka ievade atbilst paredzamajiem veidiem, garumiem un formātiem [S2].
Kā FixVibe to pārbauda
FixVibe jau aptver SQL ievadīšanu caur skenera moduli active.sqli. Aktīvā skenēšana tiek veikta tikai pēc domēna īpašumtiesību pārbaudes un atestācijas. Pārbaude pārmeklē vienas izcelsmes GET galapunktus ar vaicājuma parametriem, izveido bāzes atbildi, meklē SQL specifiskas Būla anomālijas un ziņo par konstatējumu tikai pēc laika apstiprināšanas vairākos aizkaves garumos. Krātuves skenēšana arī palīdz agrāk noteikt galveno cēloni, izmantojot code.web-app-risk-checklist-backfill, kas atzīmē neapstrādātus SQL zvanus, kas izveidoti ar veidņu interpolāciju.
