FixVibe
Covered by FixVibecritical

SQL Injekcija: Sprečavanje neovlaštenog pristupa bazi podataka

SQL injekcija (SQLi) je kritična ranjivost u kojoj napadači ometaju upite baze podataka aplikacije. Ubacivanjem zlonamjerne SQL sintakse, napadači mogu zaobići autentifikaciju, pregledati osjetljive podatke kao što su lozinke i detalji o kreditnim karticama, ili čak kompromitirati osnovni server.

CWE-89

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.