image

SQL injection bestaat 25 jaar: nog overal aanwezig en zeer effectief

maandag 25 december 2023, 11:06 door Redactie, 7 reacties
Laatst bijgewerkt: 25-12-2023, 20:33

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.

Gebruikersinvoer

De eerder genoemde rain.forest.puppy beschrijft in zijn Phrack-artikel de mogelijkheid hoe "mensen hun SQL-opdrachten aan jouw SQL-opdrachten kunnen toevoegen." De oplossing volgens de auteur is webontwikkelaars niet moeten aannemen dat gebruikersinvoer oké is voor SQL-opdrachten. Wat ook de kern van het probleem is waar websites en applicaties een kwart eeuw later nog steeds mee te maken hebben, namelijk dat de invoer van gebruikers niet goed gecontroleerd wordt. Een website moet zo zijn geprogrammeerd dat een bezoeker in zijn vraagstelling alleen om producten mag vragen, en niet om gegevens van andere gebruikers.

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.

Grootste SQL injection-aanval van 2023

MITRE, de organisatie achter het Common Vulnerabilities and Exposures (CVE) systeem om kwetsbaarheden mee te identificeren, publiceert elk jaar een Top 25 van de gevaarlijkste kwetsbaarheden. Net als vorig jaar staat SQL injection dit jaar wederom in de top drie. Het grootste SQL injection-lek dit jaar komt op naam van MOVEit Transfer, een door softwarebedrijf Progress aangeboden applicatie voor het uitwisselen van bestanden. Allerlei organisaties maken er gebruik van om onder andere vertrouwelijke informatie binnen de organisatie te delen. Een zerodaylek in deze software werd eind mei bij een wereldwijde aanval gebruikt, waarbij criminelen achter de Clop-ransomware toegang tot de MOVEit-servers van duizenden organisaties kregen en daarbij allerlei gegevens buitmaakten.

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."

Image

Voorbeeld van SQL injection door de populaire online strip xkcd

Reacties (7)
25-12-2023, 12:52 door Anoniem
http://phrack.org/issues/54/8.html
25-12-2023, 14:25 door Anoniem
Helaas zie ik dit toch als teken dat IT security toch vooral gaat om brandjes blussen ipv. strukturele oplossingen. Dat er een SQL injection kwetsbaarheid zit in hobby Bob z'n website dat zal niemand hier verbazen, maar dat het toch nog regelmatig op grote productie draaiende websites zit is toch wel een teken dat er iets goed mis gaat.
Blijkbaar is het voor bedrijven nog steeds goedkoper om de reputatieschade en bijkomende schade van een datalek te nemen dan om de boel zo in te richten dat zoiets nooit in productie terecht kan komen.
26-12-2023, 11:58 door Anoniem
Invoervalidatie in de IT is inmiddels bijna zo oud als de kerk.

We zijn eenvoudig te lui geworden om wat goeds te maken. Om goed te testen. Teveel haast ook om alles tada af te hebben.

Alles zit vol met kinderslotjes, zoals prepared statements. Maar ook dat is veel te veel werk. En nadenken.

Gelukkig kun je dan tegenwoordig naar de AP om te melden dat je lui, ongeduldig en onvoldoende opgeleid bent.

Alleen wordt dat anders geformuleerd: We zijn gehekt door de boeven uit de Donald Duck, doe daar eens wat aan!
26-12-2023, 12:41 door karma4
Niet enkel voor websites, het geldt voor elke soort input.
Twijfel aan de geldigheid van wat binnenkomt.
Een lijstje:
- de zogenaamde helpdesk die toegang tot de computer moet hebben
- Het kind via whatsapp die dringend geld nodig heeft
- De ongecontroleerd vraag naar privacy met het ontslaan van verplichtingen.
26-12-2023, 16:04 door Anoniem
Door karma4: Niet enkel voor websites, het geldt voor elke soort input.
Twijfel aan de geldigheid van wat binnenkomt.
Een lijstje:
- de zogenaamde helpdesk die toegang tot de computer moet hebben
- Het kind via whatsapp die dringend geld nodig heeft
- De ongecontroleerd vraag naar privacy met het ontslaan van verplichtingen.

Wat heeft dat nou met SQL-injectie te maken?
Ik denk dat je niet weet waar je over praat.
26-12-2023, 16:30 door Anoniem
Gaat AI het beter doen?

Laten we ons opzij zetten door AI de scripter, die het sneller en veiliger kan?

luntrus
27-12-2023, 09:29 door Anoniem
Door Anoniem: Gaat AI het beter doen?

Laten we ons opzij zetten door AI de scripter, die het sneller en veiliger kan?

luntrus

Daar zat ik ook al aan te denken. Op zich is de techniek met AI wel handig om saai werk te doen. Als iets nou saai werk is, dan is het testen. Daar zou je dus prima iets met AI op los kunnen laten.

AI zou misschien ook kunnen helpen om zerodays te voorkomen. Of om de waarschijnlijkheid van eentje te voorspellen zolang het nog zero min 1 day is. Want er zitten ook patronen in die zogenaamde zerodays. Zoals buffer overflows en zo. Het zijn vaak variaties op het zelfde kunstje. De AI techniek kan denk ik best helpen om te voorspellen of software stinkt, of wat de kans is dat het spoedig gaat stinken. Persoonlijk word ik erg moe als ik weer eens zeroday lees. Het is zo een standaard vaginasmoes geworden. Zoiets als niemand kon dat weten DUS wij ook niet, DUS niet onze schuld. Maar als je dat dan zeroday noemt dan valt het minder op. Wat het woord zeroday wat mij betreft het eufemisme van 2023 maakt.

Om betere software te maken kan de technologie van AI denk ik veel bijdragen. Vooral in het besef dat AI helemaal niet intelligent is. Wat mij betreft is kunstmatige intelligentie dus al het eufemisme van 2024, maar laten we even afwachten want dat hele jaar moet nog beginnen! Waar veel bij goed gaat in software is dat iemand zomaar spontaan ook nog aan een paar extra dingen heeft gedacht. Dat kan een AI niet. Die hemelse inspiratie zal er nooit uit komen want het zit er niet in. Je weet als mens soms zelf niet waar het vandaan kwam dat je ergens aan gedacht hebt. Dat is iets wat een machine niet kan. Het omgekeerde gebeurt echter ook. Dat je alles in je hoofd hebt en er iemand komt vragen of je koffie wil. Of dat er iemand jarig is op de afdeling en dat daarna het weekend begint. Een maand later gaat er dan wat fout, en dan denk je sjit, het ging nog door mijn hoofd maar ik werd afgeleid. Het storen van broedende kippen, daar komen denk ik veel zerodays uit voort. Daar kan AI techniek dan weer handig bij zijn. Want die blinde kip broedt gewoon door, die kan het niks schelen of er iemand jarig is of dat het weekend begonnen is.
Reageren
Ondersteunde bbcodes
Bold: [b]bold text[/b]
Italic: [i]italic text[/i]
Underline: [u]underlined text[/u]
Quote: [quote]quoted text[/quote]
URL: [url]https://www.security.nl[/url]
Config: [config]config text[/config]
Code: [code]code text[/code]

Je bent niet 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.