FixVibe
Covered by FixVibecritical

SQL-i sisestamine: volitamata juurdepääsu takistamine andmebaasidele

SQL-i süstimine (SQLi) on kriitiline haavatavus, mille puhul ründajad segavad rakenduse andmebaasipäringuid. Pahatahtliku SQL-i süntaksi sisestamisega saavad ründajad autentimisest mööda minna, vaadata tundlikke andmeid, nagu paroolid ja krediitkaardiandmed, või isegi ohustada aluseks olevat serverit.

CWE-89

SQL-i süstimise mõju

SQL-i süstimine (SQLi) võimaldab ründajal sekkuda päringutesse, mida rakendus oma andmebaasi [S1] teeb. Peamine mõju hõlmab volitamata juurdepääsu tundlikele andmetele, nagu kasutaja paroolid, krediitkaardi andmed ja isiklikud andmed. [S1].

Lisaks andmete vargustele võivad ründajad sageli andmebaasikirjeid muuta või kustutada, mis põhjustab püsivaid muutusi rakenduse käitumises või andmete kadumist. [S1]. Rasketel juhtudel saab SQLi-d eskaleerida, et ohustada taustainfrastruktuuri, võimaldada teenuse keelamise rünnakuid või pakkuda püsivat tagaukse organisatsiooni süsteemidesse [S1][S2].

Algpõhjus: ebaturvaline sisendi käsitlemine

SQL-i sisestamise algpõhjus on SQL-i käsus [S2] kasutatud erielementide vale neutraliseerimine. See juhtub siis, kui rakendus koostab SQL-päringuid, ühendades välise mõjuga sisendi otse päringustringi [S1][S2].

Kuna sisend ei ole päringustruktuurist korralikult eraldatud, võib andmebaasi interpretaator käivitada osa kasutaja sisendist SQL-koodina, mitte käsitleda seda sõnasõnaliste andmetena [S2]. See haavatavus võib avalduda päringu erinevates osades, sealhulgas SELECT avaldustes, INSERT väärtustes või UPDATE lausetes [S1].

Betooniparandused ja leevendused

Kasutage parameetritega päringuid

Kõige tõhusam viis SQL-i süstimise vältimiseks on parameetritega päringute kasutamine, mida nimetatakse ka ettevalmistatud avaldusteks [S1]. Stringide ühendamise asemel peaksid arendajad kasutama struktureeritud mehhanisme, mis jõustavad andmete ja koodi [S2] eraldamise.

Väikseima privileegi põhimõte

Rakendused peaksid ühenduma andmebaasiga, kasutades nende ülesannete täitmiseks vajalikke madalaimaid õigusi [S2]. Veebirakenduse kontol ei tohiks olla administraatoriõigusi ja see peaks piirduma konkreetsete tabelite või toimingutega, mis on selle funktsiooni jaoks vajalikud [S2].

Sisestuse kontrollimine ja kodeerimine

Kuigi sisendi valideerimine ei asenda parameetrite määramist, pakub see [S2] põhjalikku kaitset. Rakendused peaksid kasutama tunnustatud-hea strateegiat, kinnitades, et sisend vastab eeldatavatele tüüpidele, pikkustele ja vormingutele [S2].

Kuidas FixVibe seda testib

FixVibe hõlmab juba SQL-i sisestamist läbi väravaga skannerimooduli active.sqli. Aktiivsed kontrollid käivituvad alles pärast domeeni omandiõiguse kinnitamist ja kinnitamist. Kontroll roomab päringuparameetritega sama päritoluga GET-i lõpp-punktides, loob lähtereaktsiooni, otsib SQL-spetsiifilisi tõeväärtuse kõrvalekaldeid ja teatab leiust alles pärast mitme viivituspikkuse ajastuse kinnitamist. Hoidla kontrollimine aitab ka algpõhjuse varem tuvastada, kasutades code.web-app-risk-checklist-backfill, mis märgib mallide interpoleerimisega loodud töötlemata SQL-i kõned.