Uticaj SQL injekcije
SQL injekcija (SQLi) omogućava napadaču da ometa upite koje aplikacija postavlja svojoj bazi podataka [S1]. Primarni utjecaj uključuje neovlašteni pristup osjetljivim podacima kao što su korisničke lozinke, detalji o kreditnoj kartici i lični podaci [S1].
Osim krađe podataka, napadači često mogu mijenjati ili brisati zapise baze podataka, što dovodi do stalnih promjena u ponašanju aplikacije ili gubitka podataka [S1]. U slučajevima visoke ozbiljnosti, SQLi se može eskalirati kako bi se kompromitovala pozadinska infrastruktura, omogućili napadi uskraćivanja usluge ili obezbijedila trajna pozadinska vrata u sisteme organizacije [S1][S2].
Osnovni uzrok: Nebezbedno rukovanje ulazom
Osnovni uzrok SQL injekcije je nepravilna neutralizacija posebnih elemenata koji se koriste u SQL naredbi [S2]. Ovo se događa kada aplikacija konstruira SQL upite spajanjem ulaza pod utjecajem izvana izravno u niz upita [S1][S2].
Budući da ulaz nije pravilno izoliran od strukture upita, interpreter baze podataka može izvršiti dijelove korisničkog unosa kao SQL kod umjesto da ih tretira kao literalne podatke [S2]. Ova ranjivost se može manifestirati u različitim dijelovima upita, uključujući izraze SELECT, vrijednosti INSERT ili UPDATE izjave [S1].
Konkretni popravci i ublažavanja
Koristite parametrizirane upite
Najefikasniji način da se spriječi SQL injekcija je korištenje parametriziranih upita, također poznatih kao pripremljeni izrazi [S1]. Umjesto spajanja stringova, programeri bi trebali koristiti strukturirane mehanizme koji provode odvajanje podataka i koda [S2].
Princip najmanje privilegija
Aplikacije bi se trebale povezati na bazu podataka koristeći najniže privilegije potrebne za njihove zadatke [S2]. Račun web aplikacije ne bi trebao imati administrativne privilegije i trebao bi biti ograničen na specifične tablice ili operacije potrebne za njegovu funkciju [S2].
Provjera valjanosti unosa i kodiranje
Iako nije zamjena za parametrizaciju, provjera valjanosti unosa pruža dubinu odbrane [S2]. Aplikacije bi trebale koristiti strategiju prihvatljivo-poznato dobro, provjeravajući da li ulaz odgovara očekivanim tipovima, dužinama i formatima [S2].
Kako FixVibe testira za to
FixVibe već pokriva SQL injekciju kroz modul skenera active.sqli sa gatedima. Aktivna skeniranja se pokreću samo nakon verifikacije i atestiranja vlasništva nad domenom. Provjera indeksira GET krajnje točke istog porijekla s parametrima upita, uspostavlja osnovni odgovor, traži logičke anomalije specifične za SQL i samo izvještava o nalazu nakon potvrde vremena u višestrukim dužinama kašnjenja. Skeniranje spremišta također pomaže da se ranije uhvati osnovni uzrok kroz code.web-app-risk-checklist-backfill, koji označava sirove SQL pozive izgrađene interpolacijom šablona.
