FixVibe
Covered by FixVibecritical

SQL Injection: Sprječavanje neovlaštenog pristupa bazi podataka

SQL injekcija (SQLi) je kritična ranjivost gdje napadači ometaju upite baze podataka aplikacije. Ubacivanjem zlonamjerne SQL sintakse, napadači mogu zaobići autentifikaciju, vidjeti osjetljive podatke poput lozinki i podataka o kreditnoj kartici ili čak kompromitirati temeljni poslužitelj.

CWE-89

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.