Virkningen af SQL-injektion
SQL-injektion (SQLi) giver en hacker mulighed for at forstyrre de forespørgsler, som en applikation foretager til sin database [S1]. Den primære påvirkning omfatter uautoriseret adgang til følsomme data såsom brugeradgangskoder, kreditkortoplysninger og personlige oplysninger [S1].
Ud over datatyveri kan angribere ofte ændre eller slette databaseposter, hvilket fører til vedvarende ændringer i applikationsadfærd eller datatab [S1]. I alvorlige tilfælde kan SQLi eskaleres for at kompromittere back-end-infrastrukturen, muliggøre denial-of-service-angreb eller give en vedvarende bagdør ind i organisationens systemer [S1][S2].
Grundårsag: Usikker inputhåndtering
Grundårsagen til SQL-injektion er ukorrekt neutralisering af specielle elementer, der bruges i en SQL-kommando [S2]. Dette sker, når en applikation konstruerer SQL-forespørgsler ved at sammenkæde eksternt påvirket input direkte i forespørgselsstrengen [S1][S2].
Fordi inputtet ikke er korrekt isoleret fra forespørgselsstrukturen, kan databasefortolkeren udføre dele af brugerinputtet som SQL-kode i stedet for at behandle det som bogstavelige data [S2]. Denne sårbarhed kan manifestere sig i forskellige dele af en forespørgsel, herunder SELECT-sætninger, INSERT-værdier eller UPDATE-sætninger [S1].
Konkrete rettelser og afhjælpninger
Brug parametrerede forespørgsler
Den mest effektive måde at forhindre SQL-injektion på er brugen af parametriserede forespørgsler, også kendt som forberedte sætninger [S1]. I stedet for at sammenkæde strenge, bør udviklere bruge strukturerede mekanismer, der gennemtvinger adskillelsen af data og kode [S2].
Princippet om mindste privilegium
Programmer skal oprette forbindelse til databasen med de laveste rettigheder, der kræves til deres opgaver [S2]. En webapplikationskonto bør ikke have administrative rettigheder og bør være begrænset til de specifikke tabeller eller operationer, der er nødvendige for dens funktion [S2].
Inputvalidering og -kodning
Selvom det ikke er en erstatning for parametrering, giver inputvalidering et dybdegående forsvar [S2]. Applikationer skal bruge en accept-kendt-god strategi, der validerer, at input matcher forventede typer, længder og formater [S2].
Hvordan FixVibe tester for det
FixVibe dækker allerede SQL-injektion gennem det gated active.sqli scannermodul. Aktive scanninger kører kun efter domæneejerskabsbekræftelse og attestering. Kontrollen gennemgår GET-slutpunkter med samme oprindelse med forespørgselsparametre, etablerer et baseline-svar, leder efter SQL-specifikke booleske anomalier og rapporterer kun en konstatering efter timingbekræftelse på tværs af flere forsinkelseslængder. Repository-scanninger hjælper også med at fange hovedårsagen tidligere gennem code.web-app-risk-checklist-backfill, som markerer rå SQL-kald bygget med skabeloninterpolation.
