Precies 25 jaar geleden, op eerste kerstdag 1998, verscheen de achtste editie van het bekende hackermagazine Phrack, waarin iemand met de naam 'rain.forest.puppy' een artikel over kwetsbaarheden in NT Web Technology publiceerde, waaronder de eerste gedocumenteerde beschrijving van SQL injection. Een kwart eeuw later is deze kwetsbaarheid, waarmee al honderden miljoenen persoonsgegevens zijn gestolen, nog overal aanwezig en zeer effectief voor cybercriminelen.
Het concept van SQL injection is vrij eenvoudig. Websites en applicaties maken gebruik van databases voor het opslaan van gegevens. Denk bijvoorbeeld aan een webwinkel. Gebruikers doen via de webwinkel een verzoek om een bepaald artikel te zien. De website vertaalt het verzoek aan de database, de database geeft de gevraagde informatie aan de website terug, die het weer aan de gebruiker laat zien.
Naast producten verzamelt een webwinkel ook gegevens over klanten, zoals adresgegevens, e-mailadres en wachtwoordhash voor het webwinkel-account. Al die informatie wordt vaak in dezelfde database als de productgegevens bewaard. Voor het communiceren met en beheren van de database wordt SQL (Structured Query Language) gebruikt. Deze taal stuurt vraagstellingen naar de database, en geeft vervolgens de antwoorden terug aan de website.
Bepaalde delen van de database, zoals bijvoorbeeld e-mailadressen en wachtwoordhashes, zijn normaal niet toegankelijk voor bezoekers. De website biedt gebruikers daarnaast niet de mogelijkheid om de gegevens van andere gebruikers op te vragen. In het geval van SQL Injection wordt de vraagstelling van de gebruiker niet goed gecontroleerd, waardoor die toch om gegevens kan vragen die hij eigenlijk niet hoort te zien en deze ook te zien krijgt. De techniek is niet alleen te gebruiken om gegevens te stelen, een aanvaller kan bijvoorbeeld ook beheerder van een database worden of allerlei gegevens verwijderen.
Na de eerste publicatie eind 1998 verschijnt op 4 februari 1999 een advisory over "Multiple SQL Statements in Dynamic Queries". Volgens de waarschuwing ondersteunen sommige databases de mogelijkheid om meerdere SQL opdrachten met een query mee te sturen. Daardoor is het mogelijk om kwaadaardige SQL opdrachten aan bestaande queries toe te voegen. Volgens Allaire dat de advisory uitstuurt, moeten bedrijven hun code zo schrijven, dat aan SQL opdrachten meegegeven variabelen, worden gevalideerd.
De term SQL Injection verschijnt in 2000 voor het eerst op internet. Chip Andrews plaatst de "SQL Injection FAQ" online. Begin dat jaar is het rain.forest.puppy die via SQL injection beheerderstoegang tot het forum van security website Packetstorm krijgt en daar de wachtwoorden van achthonderd gebruikers buitmaakt. 23 jaar later is dit nog steeds aan de orde van de dag. Zo kwam securitybedrijf Group-IB nog geen twee weken geleden met het bericht dat een groep criminelen SQL injection inzet tegen gokbedrijven.
De kwetsbaarheid (CVE-2023-34362) betreft SQL injection waarmee een aanvaller toegang tot MOVEit-servers kan krijgen. Volgens securitybedrijf Emsisoft zijn via het beveiligingslek 2700 organisaties aangevallen, waarbij de gegevens van meer dan 93,3 miljoen mensen zijn gestolen. Onlangs oordeelde de rechtbank dat de Hogeschool Arnhem-Nijmegen (HAN) een oud-student wegens een door SQL injection veroorzaakt datalek een schadevergoeding moet betalen. Een kwart eeuw later is het advies van rainbow.forrest.puppy dan ook nog altijd van toepassing: "Don't assume user's input is ok for SQL queries."
Voorbeeld van SQL injection door de populaire online strip xkcd
Je bent niet ingelogd en reageert "Anoniem". Dit betekent dat Security.NL geen accountgegevens (e-mailadres en alias) opslaat voor deze reactie. Je reactie wordt niet direct geplaatst maar eerst gemodereerd. Als je nog geen account hebt kun je hier direct een account aanmaken. Wanneer je Anoniem reageert moet je altijd een captchacode opgeven.