SQL-In­jec­tions stellen für re­la­tio­na­le Da­ten­bank­mo­del­le und die darin ge­spei­cher­ten In­for­ma­tio­nen eine große Gefahr dar. Ein um­fas­sen­der Schutz gegen diese un­be­fug­ten externen Zugriffe, die durch Si­cher­heits­lü­cken möglich werden, ist daher es­sen­zi­ell.

Was ist eine SQL-Injection?

Unter einer SQL-Injection (dt. SQL-Ein­schleu­sung) versteht man das Ausnutzen einer Si­cher­heits­lü­cke in re­la­tio­na­len Da­ten­bank­sys­te­men, die bei der Da­ten­ein­ga­be auf die Ab­fra­ge­spra­che SQL zu­rück­grei­fen. Angreifer:innen machen sich dabei solche Be­nut­zer­ein­ga­ben zunutze, die nicht aus­rei­chend maskiert sind und Me­ta­zei­chen wie den doppelten Bin­de­strich, An­füh­rungs­zei­chen oder das Semikolon enthalten. Diese Zeichen besitzen Son­der­funk­tio­nen für den SQL-In­ter­pre­ter und erlauben die externe Be­ein­flus­sung der aus­ge­führ­ten Befehle. Oft tritt eine SQL-Injection im Zu­sam­men­hang mit PHP- und ASP-Pro­gram­men auf, die auf ältere In­ter­faces zu­rück­grei­fen. Hier erhalten die Eingaben in einigen Fällen nicht die not­wen­di­ge Mas­kie­rung und sind damit das perfekte Ziel für einen Angriff.

Mit dem gezielten Einsatz von Funk­ti­ons­zei­chen kann eine un­be­rech­tig­te Person auf diese Weise weitere SQL-Befehle ein­schleu­sen und die Einträge derart ma­ni­pu­lie­ren, dass sie Daten verändern, löschen oder lesen kann. In gra­vie­ren­den Fällen ist es sogar möglich, dass sich Angreifer:innen auf diesem Wege den Zugriff auf die Kom­man­do­zei­le des be­fehls­aus­füh­ren­den Systems und damit auf den gesamten Da­ten­bank­ser­ver ver­schaf­fen.

SQL-Injection-Beispiele: So funk­tio­nie­ren die Datenbank-Angriffe

Da anfällige Da­ten­bank­ser­ver schnell auf­ge­spürt und SQL-Injection-Attacken ebenso einfach aus­ge­führt werden können, gehört die Methode weltweit zu den be­lieb­tes­ten. Dabei agieren Kri­mi­nel­le mit ver­schie­de­nen An­griffs­mus­tern und machen sich aktuelle, aber vor allem auch alt­be­kann­te Si­cher­heits­lü­cken der am Da­ten­ma­nage­ment­pro­zess be­tei­lig­ten An­wen­dun­gen zunutze. Um zu ver­deut­li­chen, wie genau eine SQL-Injection funk­tio­niert, folgen ex­em­pla­risch zwei typische Methoden.

Beispiel 1: Zugriff über eine man­gel­haft maskierte Be­nut­zer­ein­ga­be

Damit Nutzer:innen auf eine Datenbank zugreifen können, müssen sie sich für ge­wöhn­lich zunächst au­then­ti­fi­zie­ren. Zu diesem Zweck exis­tie­ren Skripte, die bei­spiels­wei­se ein Login-Formular bestehend aus Nut­zer­na­me und Passwort prä­sen­tie­ren. Die Kund­schaft füllt das Formular aus und das Skript überprüft im Anschluss, ob in der Datenbank ent­spre­chen­de Einträge exis­tie­ren. Stan­dard­mä­ßig sind hierfür in der Datenbank eine Tabelle mit dem Namen users sowie den Spalten username

Zum Hauptmenü