FixVibe
Covered by FixVibecritical

SQL-injektio: Tietokannan luvattoman käytön estäminen

SQL-injektio (SQLi) on kriittinen haavoittuvuus, jossa hyökkääjät häiritsevät sovelluksen tietokantakyselyitä. Lisäämällä haitallisen SQL-syntaksin hyökkääjät voivat ohittaa todennuksen, tarkastella arkaluontoisia tietoja, kuten salasanoja ja luottokorttitietoja, tai jopa vaarantaa taustalla olevan palvelimen.

CWE-89

SQL-injektion vaikutus

SQL-injektion (SQLi) avulla hyökkääjä voi puuttua kyselyihin, joita sovellus tekee tietokantaansa [S1]. Ensisijainen vaikutus sisältää luvattoman pääsyn arkaluonteisiin tietoihin, kuten käyttäjien salasanoihin, luottokorttitietoihin ja henkilökohtaisiin tietoihin. [S1].

Tietovarkauksien lisäksi hyökkääjät voivat usein muokata tai poistaa tietokannan tietueita, mikä johtaa pysyviin muutoksiin sovellusten käyttäytymisessä tai tietojen katoamiseen. [S1]. Vakavissa tapauksissa SQLi voidaan eskaloida taustainfrastruktuurin vaarantamiseksi, palvelunestohyökkäysten mahdollistamiseksi tai jatkuvan takaoven tarjoamiseksi organisaation järjestelmiin [S1][S2].

Perussyy: Turvaton syötteiden käsittely

SQL-injektion perimmäinen syy on SQL-komennossa [S2] käytettyjen erikoiselementtien virheellinen neutralointi. Tämä tapahtuu, kun sovellus rakentaa SQL-kyselyjä ketjuttamalla ulkoisesti vaikuttavat syötteet suoraan kyselymerkkijonoon [S1][S2].

Koska syöttöä ei ole eristetty kunnolla kyselyrakenteesta, tietokannan tulkki voi suorittaa osia käyttäjän syötteestä SQL-koodina sen sijaan, että se käsittäisi sitä kirjaimellisena datana [S2]. Tämä haavoittuvuus voi ilmetä kyselyn eri osissa, mukaan lukien SELECT-lauseet, INSERT-arvot tai UPDATE-lauseet [S1].

Konkreettisia korjauksia ja lievennyksiä

Käytä parametroituja kyselyitä

Tehokkain tapa estää SQL-injektio on käyttää parametroituja kyselyitä, joita kutsutaan myös valmiiksi lauseiksi [S1]. Merkkijonojen yhdistämisen sijaan kehittäjien tulisi käyttää strukturoituja mekanismeja, jotka pakottavat erottamaan tiedot ja koodi [S2].

Vähimmän etuoikeuden periaate

Sovellusten tulee muodostaa yhteys tietokantaan käyttäen alhaisimpia niiden tehtävien edellyttämiä oikeuksia [S2]. Verkkosovellustilillä ei saa olla järjestelmänvalvojan oikeuksia, ja se tulee rajoittaa tiettyihin taulukoihin tai toimintoihin, jotka ovat tarpeen sen toiminnalle [S2].

Syötteen vahvistus ja koodaus

Vaikka syötteen validointi ei korvaa parametrointia, se tarjoaa syvällisen suojan [S2]. Sovellusten tulee käyttää hyväksyttyä-hyvä strategiaa, joka vahvistaa, että syöte vastaa odotettuja tyyppejä, pituuksia ja muotoja [S2].

Kuinka FixVibe testaa sitä

FixVibe kattaa jo SQL-injektion portitetun active.sqli-skannerimoduulin kautta. Aktiiviset tarkistukset suoritetaan vasta verkkotunnuksen omistajuuden vahvistamisen ja vahvistuksen jälkeen. Tarkistus indeksoi samaa alkuperää olevat GET-päätepisteet kyselyparametreilla, muodostaa perusvastauksen, etsii SQL-kohtaisia ​​loogisia poikkeavuuksia ja raportoi havainnon vasta ajoituksen vahvistuksen jälkeen useiden viivepituuksien ajalta. Tietovaraston tarkistukset auttavat myös löytämään perimmäisen syyn aikaisemmin code.web-app-risk-checklist-backfill:n avulla, joka merkitsee malliinterpoloinnilla rakennetut raaka-SQL-kutsut.