FixVibe
Covered by FixVibecritical

SQL-inspuiting: Voorkoming van ongemagtigde databasistoegang

SQL-inspuiting (SQLi) is 'n kritieke kwesbaarheid waar aanvallers inmeng met 'n toepassing se databasisnavrae. Deur kwaadwillige SQL-sintaksis in te spuit, kan aanvallers stawing omseil, sensitiewe data soos wagwoorde en kredietkaartbesonderhede bekyk, of selfs die onderliggende bediener in gevaar stel.

CWE-89

Impak van SQL-inspuiting

SQL-inspuiting (SQLi) laat 'n aanvaller toe om in te meng met die navrae wat 'n toepassing na sy databasis [S1] maak. Die primêre impak sluit in ongemagtigde toegang tot sensitiewe data soos gebruikerwagwoorde, kredietkaartbesonderhede en persoonlike inligting [S1].

Behalwe datadefstal, kan aanvallers databasisrekords dikwels wysig of uitvee, wat lei tot aanhoudende veranderinge in toepassingsgedrag of dataverlies [S1]. In gevalle van hoë erns kan SQLi geëskaleer word om die back-end-infrastruktuur te kompromitteer, ontkenning-van-diens-aanvalle moontlik te maak, of 'n aanhoudende agterdeur in die organisasie se stelsels te voorsien [S1][S2].

Oorsaak: Onveilige invoerhantering

Die hoofoorsaak van SQL-inspuiting is die onbehoorlike neutralisering van spesiale elemente wat in 'n SQL-opdrag [S2] gebruik word. Dit vind plaas wanneer 'n toepassing SQL-navrae konstrueer deur ekstern-beïnvloed insette direk in die navraagstring [S1][S2] aaneen te koppel.

Omdat die invoer nie behoorlik van die navraagstruktuur geïsoleer is nie, kan die databasistolk dele van die gebruikerinvoer as SQL-kode uitvoer eerder as om dit as letterlike data te hanteer [S2]. Hierdie kwesbaarheid kan in verskeie dele van 'n navraag manifesteer, insluitend SELECT-stellings, INSERT-waardes, of UPDATE-stellings [S1].

Betonoplossings en versagtings

Gebruik geparametriseerde navrae

Die doeltreffendste manier om SQL-inspuiting te voorkom, is die gebruik van geparameteriseerde navrae, ook bekend as voorbereide stellings [S1]. In plaas daarvan om stringe saam te voeg, moet ontwikkelaars gestruktureerde meganismes gebruik wat die skeiding van data en kode [S2] afdwing.

Beginsel van die minste voorreg

Toepassings moet aan die databasis koppel met die laagste voorregte wat vir hul take vereis word [S2]. 'n Webtoepassingsrekening behoort nie administratiewe voorregte te hê nie en moet beperk word tot die spesifieke tabelle of bewerkings wat nodig is vir sy funksie [S2].

Invoervalidering en -kodering

Alhoewel dit nie 'n plaasvervanger vir parameterisering is nie, bied insetvalidering verdediging-in-diepte [S2]. Aansoeke moet 'n aanvaar-bekend-goeie strategie gebruik, wat bevestig dat invoer ooreenstem met verwagte tipes, lengtes en formate [S2].

Hoe FixVibe daarvoor toets

FixVibe dek reeds SQL-inspuiting deur die omheinde active.sqli-skandeerdermodule. Aktiewe skanderings word slegs uitgevoer na verifikasie en attest van domeineienaarskap. Die kontrole deurkruip AOO-eindpunte van dieselfde oorsprong met navraagparameters, stel 'n basislynreaksie vas, soek SQL-spesifieke Boolese anomalieë, en rapporteer slegs 'n bevinding na tydsberekening bevestiging oor veelvuldige vertragingslengtes. Bewaarskanderings help ook om die hoofoorsaak vroeër vas te stel deur code.web-app-risk-checklist-backfill, wat rou SQL-oproepe wat met sjablooninterpolasie gebou is, vlag.