Utjecaj SQL injekcije
SQL injekcija (SQLi) omogućuje 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 kreditne kartice i osobni podaci [S1].
Osim krađe podataka, napadači često mogu modificirati ili izbrisati zapise baze podataka, što dovodi do trajnih promjena u ponašanju aplikacije ili gubitka podataka [S1]. U slučajevima visoke ozbiljnosti, SQLi može se eskalirati kako bi se ugrozila pozadinska infrastruktura, omogućili napadi uskraćivanja usluge ili pružila trajna stražnja vrata u sustave organizacije [S1][S2].
Glavni uzrok: nesigurno rukovanje unosom
Osnovni uzrok SQL ubacivanja je nepravilna neutralizacija posebnih elemenata koji se koriste u SQL naredbi [S2]. To se događa kada aplikacija konstruira SQL upite povezivanjem ulaza pod utjecajem izvana izravno u niz upita [S1][S2].
Budući da unos nije ispravno izoliran od strukture upita, tumač baze podataka može izvršiti dijelove korisničkog unosa kao SQL kod umjesto da ga tretira kao literalne podatke [S2]. Ova se ranjivost može manifestirati u različitim dijelovima upita, uključujući SELECT izjave, INSERT vrijednosti ili UPDATE izjave [S1].
Konkretni popravci i ublažavanja
Koristite parametrizirane upite
Najučinkovitiji način za sprječavanje SQL ubacivanja je korištenje parametriziranih upita, također poznatih kao pripremljene izjave [S1]. Umjesto ulančavanja nizova, programeri bi trebali koristiti strukturirane mehanizme koji provode odvajanje podataka i koda [S2].
Načelo najmanje privilegije
Aplikacije bi se trebale povezati s bazom podataka koristeći najniže privilegije potrebne za svoje zadatke [S2]. Račun web aplikacije ne bi trebao imati administrativne povlastice i trebao bi biti ograničen na specifične tablice ili operacije potrebne za njegovu funkciju [S2].
Validacija unosa i kodiranje
Iako nije zamjena za parametrizaciju, provjera valjanosti unosa pruža dubinsku obranu [S2]. Aplikacije bi trebale koristiti strategiju prihvaćanja-poznato-dobre, potvrđujući da se unos podudara s očekivanim tipovima, duljinama i formatima [S2].
Kako FixVibe to testira
FixVibe već pokriva SQL ubacivanje putem zatvorenog modula skenera active.sqli. Aktivna skeniranja pokreću se samo nakon provjere i atestiranja vlasništva domene. Provjera indeksira GET krajnje točke istog podrijetla s parametrima upita, uspostavlja osnovni odgovor, traži booleove anomalije specifične za SQL i prijavljuje nalaz tek nakon potvrde vremenskog određivanja kroz više duljina odgode. Skeniranje repozitorija također pomaže u ranijem otkrivanju glavnog uzroka putem code.web-app-risk-checklist-backfill, koji označava sirove SQL pozive izgrađene interpolacijom predloška.
