SQL įpurškimo poveikis
SQL injekcija (SQLi) leidžia užpuolikui trukdyti užklausoms, kurias programa pateikia savo duomenų bazei [S1]. Pagrindinis poveikis apima neteisėtą prieigą prie neskelbtinų duomenų, pvz., vartotojo slaptažodžių, kredito kortelių informacijos ir asmeninės informacijos [S1].
Be duomenų vagystės, užpuolikai dažnai gali keisti arba ištrinti duomenų bazės įrašus, todėl nuolat keičiasi programos elgsena arba prarandami duomenys. [S1]. Labai rimtais atvejais SQLi gali būti padidintas, kad būtų pažeista vidinė infrastruktūra, būtų įgalintos paslaugų atsisakymo atakos arba būtų užtikrintas nuolatinis užpakalinės durys į organizacijos sistemas [S1][S2].
Pagrindinė priežastis: nesaugus įvesties tvarkymas
Pagrindinė SQL įterpimo priežastis yra netinkamas specialių elementų, naudojamų SQL komandoje [S2], neutralizavimas. Taip nutinka, kai programa sukuria SQL užklausas, sujungdama išorinės įtakos turimą įvestį tiesiai į užklausos eilutę [S1][S2].
Kadangi įvestis nėra tinkamai atskirta nuo užklausos struktūros, duomenų bazės interpretatorius gali vykdyti vartotojo įvesties dalis kaip SQL kodą, o ne laikyti jį tiesioginiais duomenimis [S2]. Šis pažeidžiamumas gali pasireikšti įvairiose užklausos dalyse, įskaitant SELECT sakinius, INSERT reikšmes arba UPDATE sakinius [S1].
Betoniniai pataisymai ir švelninimai
Naudokite parametrizuotas užklausas
Veiksmingiausias būdas apsisaugoti nuo SQL injekcijos yra parametrizuotų užklausų, dar vadinamų parengtais teiginiais [S1], naudojimas. Užuot sujungę eilutes, kūrėjai turėtų naudoti struktūrizuotus mechanizmus, kurie užtikrina duomenų ir kodo atskyrimą [S2].
Mažiausios privilegijos principas
Programos turėtų prisijungti prie duomenų bazės naudodamos mažiausias teises, reikalingas jų užduotims atlikti [S2]. Žiniatinklio programos paskyra neturėtų turėti administravimo teisių ir turėtų būti apribota konkrečiomis lentelėmis arba operacijomis, būtinomis jos funkcijai [S2].
Įvesties patvirtinimas ir kodavimas
Nors įvesties patvirtinimas nepakeičia parametrų nustatymo, jis suteikia nuodugnią apsaugą [S2]. Programose turėtų būti naudojama priimtina-gera strategija, patvirtinanti, kad įvestis atitinka numatomus tipus, ilgius ir formatus [S2].
Kaip FixVibe tai tikrina
FixVibe jau apima SQL įvedimą per active.sqli skaitytuvo modulį. Aktyvūs nuskaitymai vykdomi tik patvirtinus domeno nuosavybės teisę ir patvirtinus. Patikra tikrina tos pačios kilmės GET galinius taškus su užklausos parametrais, nustato pradinį atsaką, ieško konkrečių SQL loginių anomalijų ir praneša apie radinį tik patvirtinus kelių delsos trukmę. Saugyklų nuskaitymas taip pat padeda anksčiau nustatyti pagrindinę priežastį naudojant code.web-app-risk-checklist-backfill, kuris pažymi neapdorotus SQL iškvietimus, sukurtus naudojant šablono interpoliaciją.
