FixVibe
Covered by FixVibecritical

SQL-injectie: ongeautoriseerde databasetoegang voorkomen

SQL-injectie (SQLi) is een kritieke kwetsbaarheid waarbij aanvallers de databasequery's van een applicatie verstoren. Door kwaadaardige SQL-syntaxis te injecteren kunnen aanvallers de authenticatie omzeilen, gevoelige gegevens zoals wachtwoorden en creditcardgegevens bekijken of zelfs de onderliggende server in gevaar brengen.

CWE-89

Impact van SQL-injectie

Met SQL-injectie (SQLi) kan een aanvaller zich bemoeien met de zoekopdrachten die een applicatie doet in de database [S1]. De primaire impact omvat ongeautoriseerde toegang tot gevoelige gegevens zoals gebruikerswachtwoorden, creditcardgegevens en persoonlijke informatie [S1].

Naast gegevensdiefstal kunnen aanvallers vaak databaserecords wijzigen of verwijderen, wat leidt tot blijvende veranderingen in het gedrag van applicaties of gegevensverlies. In zeer ernstige gevallen kan SQLi worden geëscaleerd om de back-endinfrastructuur in gevaar te brengen, denial-of-service-aanvallen mogelijk te maken of een permanente achterdeur te bieden naar de systemen van de organisatie.

Hoofdoorzaak: onveilige invoerverwerking

De hoofdoorzaak van SQL-injectie is de onjuiste neutralisatie van speciale elementen die worden gebruikt in een SQL-opdracht [S2]. Dit gebeurt wanneer een toepassing SQL-query's samenstelt door extern beïnvloede invoer rechtstreeks samen te voegen in de queryreeks [S1][S2].

Omdat de invoer niet goed is geïsoleerd van de querystructuur, kan de databaseinterpreter delen van de gebruikersinvoer uitvoeren als SQL-code in plaats van deze te behandelen als letterlijke gegevens [S2]. Dit beveiligingslek kan zich manifesteren in verschillende delen van een query, waaronder SELECT-instructies, INSERT-waarden of UPDATE-instructies [S1].

Concrete oplossingen en oplossingen

Gebruik geparametriseerde zoekopdrachten

De meest effectieve manier om SQL-injectie te voorkomen is het gebruik van geparametriseerde queries, ook bekend als voorbereide instructies [S1]. In plaats van tekenreeksen aan elkaar te koppelen, moeten ontwikkelaars gestructureerde mechanismen gebruiken die de scheiding van gegevens en code [S2] afdwingen.

Principe van de minste privileges

Applicaties moeten verbinding maken met de database met de laagste rechten die vereist zijn voor hun taken [S2]. Een webapplicatie-account mag geen beheerdersrechten hebben en moet beperkt zijn tot de specifieke tabellen of bewerkingen die nodig zijn voor zijn functie [S2].

Invoervalidatie en codering

Hoewel het geen vervanging is voor parametrering, biedt invoervalidatie diepgaande verdediging [S2]. Toepassingen moeten een acceptatie-bekend-goed-strategie gebruiken, waarbij wordt gevalideerd dat de invoer overeenkomt met de verwachte typen, lengtes en formaten [S2].

Hoe FixVibe erop test

FixVibe dekt al SQL-injectie via de gated active.sqli-scannermodule. Actieve scans worden alleen uitgevoerd na verificatie en attestering van het domeineigendom. De controle doorzoekt GET-eindpunten van dezelfde oorsprong met queryparameters, stelt een basislijnreactie vast, zoekt naar SQL-specifieke Booleaanse afwijkingen en rapporteert alleen een bevinding na timingbevestiging over meerdere vertragingslengtes. Repositoryscans helpen ook om de hoofdoorzaak eerder te achterhalen via code.web-app-risk-checklist-backfill, dat onbewerkte SQL-aanroepen markeert die zijn gebouwd met sjablooninterpolatie.