Programming lesson
Datenbank-Sicherheit: Praxisleitfaden zu Inference Attacks und SQL Injection (CS6035 Projekt)
Lerne, wie reale Datenbank-Angriffe funktionieren und wie du dich schützt. Dieser Leitfaden begleitet dich durch das CS6035 Database Security Projekt mit Fokus auf Inference Attacks und SQL Injection.
Einführung in die Datenbank-Sicherheit
Willkommen zum Database Security Projekt – deinem Einstieg in die Welt der Penetration Tests. In diesem Tutorial erfährst du, wie Angreifer Schwachstellen wie Inference Attacks und SQL Injection ausnutzen und welche Gegenmaßnahmen du ergreifen kannst. Das Projekt basiert auf einer realen Szenario: Du bist Penetration Tester und sollst mehrere Kunden-Websites auf Sicherheitslücken prüfen. Die Erkenntnisse sind direkt auf aktuelle Bedrohungen übertragbar – ähnlich wie bei den jüngsten Datenlecks großer Plattformen.
Was sind Inference Attacks?
Ein Inference Attack ist kein klassischer Hack – es gibt kein Eindringen in Systeme. Stattdessen werden scheinbar harmlose Daten analysiert, um vertrauliche Informationen zu erschließen. Stell dir vor, du hast Zugriff auf eine Mitarbeiterliste ohne Gehaltsdaten, aber auch auf eine Abteilungsstatistik mit Durchschnittsgehältern. Durch geschickte Kombination kannst du auf Einzelgehälter schließen. Genau das passiert in Task B des Projekts.
Beispiel aus der Praxis: Social Media Analytics
Ähnlich wie bei Inference Attacks können Unternehmen aus öffentlichen Posts und Likes sensible Profile ableiten – etwa politische Einstellungen oder Gesundheitsdaten. Das Projekt lehrt dich, solche Risiken zu erkennen und zu bewerten.
SQL Injection: Der Klassiker unter den Angriffen
SQL Injection (SQLi) gehört zu den gefährlichsten Angriffen auf Datenbanken. Dabei schleust ein Angreifer bösartigen SQL-Code über Eingabefelder ein. Im Projekt simulierst du Angriffe auf eine Webanwendung und dokumentierst die Funde. Aktuelle Beispiele zeigen, dass selbst große Unternehmen wie GitHub oder SolarWinds von SQLi betroffen waren.
Warum SQL Injection immer noch aktuell ist
Laut dem OWASP Top 10 steht Injection immer noch auf Platz 1 der Web-Sicherheitsrisiken. Besonders in KI-gestützten Apps, die Benutzereingaben verarbeiten, können SQLi-Lücken fatale Folgen haben – etwa wenn ein Chatbot ungefilterte Datenbankabfragen ausführt.
Projektaufbau und Aufgaben
Das Projekt besteht aus mehreren Tasks. Hier ein Überblick:
- Task A: GTID Verifikation – Setup und Hash-Generierung
- Task B: Inference Attack #1 – Daten aus öffentlichen Reports kombinieren
- Task C: Inference Attack #2 – Fortgeschrittene Inferenztechniken
- Task D: SQL Injection – Angriff auf eine Webanwendung
- Extra Credit: Defender Task – Schutzmaßnahmen implementieren
Du arbeitest in einer VM mit Microsoft SQL Server Developer Edition (Linux). Die Einrichtung ist kritisch – schon kleine Fehler können zu falschen Ergebnissen führen.
Praktische Tipps für Inference Attacks
Um Inference Attacks zu verstehen, hilft ein Blick auf Datenaggregation und Access Control. Im Projekt erhältst du mehrere Datenbank-Views, die unterschiedliche Zugriffsrechte simulieren. Deine Aufgabe: Finde heraus, wie du aus diesen Views sensible Daten ableiten kannst.
Schritt-für-Schritt-Ansatz
- Analysiere die verfügbaren Reports und deren Spalten.
- Identifiziere gemeinsame Schlüssel (z.B. Mitarbeiter-ID).
- Führe JOINs oder Aggregatfunktionen aus, um Muster zu erkennen.
- Dokumentiere deine Ergebnisse im JSON-Format.
Ein typisches Beispiel: Ein Report zeigt die Anzahl der Mitarbeiter pro Abteilung, ein anderer die Gesamtgehaltssumme. Daraus lässt sich das Durchschnittsgehalt pro Abteilung berechnen – und mit weiteren Daten sogar Einzelgehälter.
SQL Injection im Detail
Im Task D führst du eine SQL Injection auf eine Login-Seite durch. Die Anwendung verwendet keine parametrisierten Abfragen. Dein Ziel: die Datenbank umgehen und an geschützte Daten gelangen.
Typische Angriffsvektoren
- Union-basierte SQLi: Ergebnisse aus anderen Tabellen einblenden
- Blind SQLi: Wahr/Falsch-Abfragen nutzen
- Error-basierte SQLi: Fehlermeldungen auswerten
Im Projekt liegt der Fokus auf Union-basierter SQLi. Du musst die Anzahl der Spalten ermitteln und dann sensible Daten wie Passwörter oder Kreditkartennummern extrahieren.
Verbindung zu aktuellen Trends
Datenbanksicherheit ist relevanter denn je. Mit dem Aufkommen von KI-Chatbots und personalisierten Apps steigt die Angriffsfläche. Ein aktuelles Beispiel: Im Jahr 2025 wurden mehrere FinTech-Apps durch SQL Injection kompromittiert, weil sie Benutzereingaben nicht filterten. Auch Inference Attacks sind in Zeiten von Big Data und Data Mining eine wachsende Gefahr – etwa wenn Unternehmen aus Kaufdaten politische Präferenzen ableiten.
Häufige Fehler und wie du sie vermeidest
- Fehler bei der VM-Einrichtung: Überprüfe die Zugangsdaten und die Netzwerkkonfiguration.
- Falsches JSON-Format: Nutze das bereitgestellte Template und validiere mit einem JSON-Validator.
- Übersehen von Hinweisen: Lies die Prerequisite-Seite sorgfältig – dort stehen wichtige Details.
- Zu viele Submissions: Du hast nur 16 Versuche. Teste lokal, bevor du einreichst.
Ressourcen und weiterführende Links
Im Projekt werden DbGate und SQLFiddle empfohlen. Nutze sie, um deine Abfragen zu testen, bevor du sie in der VM ausführst. Weitere Hilfen findest du in der ED Discussion und in den Office Hours der TAs.
Fazit
Das CS6035 Database Security Projekt vermittelt dir essenzielle Fähigkeiten für die Penetration Testing-Praxis. Du lernst, wie Angreifer denken, und entwickelst ein Gespür für Sicherheitslücken. Mit diesem Wissen kannst du nicht nur das Projekt bestehen, sondern auch reale Systeme besser schützen. Starte früh, arbeite systematisch und nutze die verfügbaren Ressourcen – dann steht deinem Erfolg nichts im Wege.
„Sicherheit ist kein Produkt, sondern ein Prozess.“ – Bruce Schneier