Vpliv vbrizgavanja SQL
Vbrizgavanje SQL (SQLi) omogoča napadalcu, da posega v poizvedbe, ki jih aplikacija opravi v svoji bazi podatkov [S1]. Primarni vpliv vključuje nepooblaščen dostop do občutljivih podatkov, kot so uporabniška gesla, podatki o kreditnih karticah in osebni podatki [S1].
Poleg kraje podatkov lahko napadalci pogosto spremenijo ali izbrišejo zapise baze podatkov, kar povzroči trajne spremembe v vedenju aplikacije ali izgubo podatkov [S1]. V primerih visoke resnosti se lahko SQLi stopnjuje, da se ogrozi zaledna infrastruktura, omogočijo napadi z zavrnitvijo storitve ali zagotovijo trajna stranska vrata v sisteme organizacije [S1][S2].
Glavni vzrok: Nevarno ravnanje z vnosom
Glavni vzrok vbrizgavanja SQL je neustrezna nevtralizacija posebnih elementov, uporabljenih v ukazu SQL [S2]. To se zgodi, ko aplikacija sestavi poizvedbe SQL z združevanjem vnosa na zunanje vplive neposredno v poizvedbeni niz [S1][S2].
Ker vnos ni pravilno izoliran od strukture poizvedbe, lahko tolmač baze podatkov izvede dele uporabniškega vnosa kot kodo SQL, namesto da bi ga obravnaval kot dobesedne podatke [S2]. Ta ranljivost se lahko kaže v različnih delih poizvedbe, vključno z izjavami SELECT, vrednostmi INSERT ali izjavami UPDATE [S1].
Konkretni popravki in ublažitve
Uporabi parametrizirane poizvedbe
Najučinkovitejši način za preprečevanje vbrizgavanja SQL je uporaba parametriziranih poizvedb, znanih tudi kot pripravljeni stavki [S1]. Namesto veriženja nizov bi morali razvijalci uporabiti strukturirane mehanizme, ki uveljavljajo ločevanje podatkov in kode [S2].
Načelo najmanjših privilegijev
Aplikacije se morajo povezati z bazo podatkov z najnižjimi privilegiji, potrebnimi za njihove naloge [S2]. Račun spletne aplikacije ne sme imeti skrbniških privilegijev in mora biti omejen na specifične tabele ali operacije, potrebne za njegovo delovanje [S2].
Preverjanje vnosa in kodiranje
Čeprav preverjanje vnosa ni nadomestilo za parametrizacijo, zagotavlja poglobljeno obrambo [S2]. Aplikacije bi morale uporabljati strategijo sprejeti-znano-dobro, pri čemer se preverja, ali se vnos ujema s pričakovanimi vrstami, dolžinami in oblikami [S2].
Kako ga FixVibe testira
FixVibe že pokriva vbrizgavanje SQL prek zaprtega modula optičnega bralnika active.sqli. Aktivni pregledi se izvajajo samo po preverjanju in potrditvi lastništva domene. Preverjanje pajka po končnih točkah GET istega izvora s poizvedbenimi parametri, vzpostavi osnovni odgovor, poišče logične anomalije, specifične za SQL, in poroča o ugotovitvi šele po potrditvi časovne razporeditve v več dolžinah zakasnitve. Pregledi repozitorija prav tako pomagajo prej odkriti glavni vzrok prek code.web-app-risk-checklist-backfill, ki označi neobdelane klice SQL, izdelane z interpolacijo predloge.
