HOME | ENGLISH | IMPRESSUM | KIT

Bachelor-/Masterarbeit (veraltet): Statische SQL-Analyse

Informationsflusskontrolle (IFC) untersucht, ob ein Angreifer aus öffentlichen Ausgaben eines Programms Rückschlüsse auf geheime Eingaben ziehen kann. Manchmal müssen Programme zur Erfüllung ihrer Aufgaben aber geringe Mengen an Information herausgeben, deswegen gibt es quantitative Analysen, welche die Rückschlüsse des Angreifers quantifiziert. Die meisten Analysen beschäftigen sich mit Programmen wie

if (secret == 1){
    print(0)
} else {
    print(1)
}
// durch das Programm erfährt der Angreifer, ob das Geheimnis den Wert 1 hat, also 1 Bit

In dieser Arbeit soll es dagegen um die statische Analyse von Datenbankzugriffen in Form von SQL-Statements gehen, wobei andere Datenbankabfragesprachen auch betrachtet werden dürfen. Es soll also darum gehen Statements wie

UPDATE students SET grade = $secret WHERE id = 324
SELECT id, grade FROM students  
// durch das Ergebnis erfährt der Angreifer das Geheimnis

zu analysieren.

Aufgabe:

Die Aufgabe ist hierbei die Semantik von Datenbankzugriffen im Sinne des Informationsflusses zu formalisieren. Und dann eine Analyse auf Basis eines Bit-Verbandes (vgl. Nildumu) oder Modell-Checking (vgl. ApproxFlow) ist ihnen frei gestellt.

Es wäre wünmschenswert, wenn diese Analyse am Ende in eine existierende Programmanalyse integriert wird, sodass einfache SQL-Statements in Java-Code approximativ analysiert werden können:

Statement stmt = conn.createStatement();
stmt.executeQuery("UPDATE students SET grade = " + secret + " WHERE id = 324");

// …

ResultSet rs = stmt.executeQuery("SELECT id, grade FROM students"); 
// hängt vom Geheimnis ab
while (rs.next()) {    
    System.out.println(rs.getInt("grade")); 
    // der Angreifer erfährt den Wert des Geheimnisses
}

Voraussetzungen

Erfahrungen mit SQL, Grundlagen der Logik sind hilfreich.

Schlüsselworte

QIFC 

Betreuer

Ehemalige Mitarbeiter
M.Sc. Johannes Bechberger