Security Visualization

Eine interaktive Visualisierungsplattform unterstützt Studierende des Moduls Software Security dabei, Programmspeicher, Programmabläufe und sicherheitskritische Schwachstellen praxisnah zu verstehen. Mit paralleler Anzeige von C- und Assembler-Code, schrittweiser Analyse und sicherer Ausführung in isolierten Containern.

Ausgangslage

An der Universität Basel wird im Rahmen des Informatikstudiums das Modul Software Security angeboten. Als Voraussetzung für dieses Modul wird ein grundlegendes Verständnis der Programmierung verlangt. In diesem Modul lernen die Studierenden, wie sie sicherheitskritische Aspekte in der Softwareentwicklung identifizieren und adressieren können. Die derzeit eingesetzten Unterrichtsmaterialien sind jedoch oft abstrakt und schwer verständlich, was den Lernprozess erschwert. Bestehende Tools wie Microcorruption bieten zwar praktische Übungen, setzen jedoch tiefgehende Assembler-Kenntnisse voraus und sind somit für viele Studierende ungeeignet. Dadurch fällt es den Studierenden schwer, die Konzepte der Software-Sicherheit zu verstehen und anzuwenden.

Zielsetzung

Das Ziel dieser Arbeit ist die Entwicklung einer interaktiven Visualisierungsplattform, die zentrale sicherheitskritische Konzepte in der Softwareentwicklung verständlich und praxisnah vermittelt. Im Fokus steht eine intuitive Darstellung des Programmspeichers, insbesondere des Stacks, um Studierenden die zugrunde liegenden Strukturen und Abläufe näherzubringen. Dazu werden Beispielprogramme bereitgestellt, deren Ablauf schrittweise analysiert und visuell nachvollzogen werden kann. Sicherheitsrelevante Schwachstellen wie Buffer Overflows sollen anschaulich visualisiert werden, um abstrakte Bedrohungen greifbar zu machen und das Bewusstsein für sichere Programmierung zu stärken. Die Plattform wird didaktisch wertvoll, benutzerfreundlich und fachlich korrekt gestaltet, um den Lernprozess optimal zu unterstützen. Eine Bereitstellung ist sowohl lokal als auch optional serverbasiert mit Login-System vorgesehen, um einen flexiblen Einsatz im Unterricht zu ermöglichen.

Detailansicht einer Übung

FHNW

Die Detailansicht einer Übung zeigt den C-Code, den Assembler-Code und den Stack in vereinter Ansicht. Studierende können den Programmablauf Schritt für Schritt verfolgen und die Auswirkungen verschiedener Codeabläufe direkt beobachten. Diese Funktionalität erleichtert das Verständnis komplexer Abläufe und fördert das Lernen durch aktives Mitmachen.

Mobileansicht

FHNW

Die mobile Version der Plattform bietet dieselben Funktionen wie die Desktopansicht, ist jedoch nicht optimal, da relativ viel gescrollt werden muss um die Übung zu absolvieren. Mit der mobilen Ansicht können Studierende jedoch auch unterwegs auf die Plattform zugreifen und ihre Übungen bearbeiten.

Einladung per E-Mail

FHNW

Neue Nutzer erhalten eine Einladung per E-Mail mit einem Anmeldelink und einem eindeutigen Verifizierungscode. Dadurch wird der sichere Zugang zur Plattform gewährleistet und der volle Funktionsumfang freigeschaltet.

Ergebnisse

Die in dieser Arbeit entwickelte interaktive Visualisierungsplattform erfüllt alle definierten Ziele und unterstützt Studierende dabei, Programmspeicher, Programmabläufe und sicherheitskritische Schwachstellen praxisnah zu verstehen. Sie ermöglicht eine parallele Darstellung von C- und Assembler-Code sowie eine visuelle Darstellung des Stacks, wodurch komplexe Konzepte leichter nachvollziehbar werden. Dozenten können eigene Übungen hochladen, löschen oder deaktivieren und diese in isolierten Docker-Containern bereitstellen, sodass alle Studierenden gleichzeitig daran arbeiten können. Ein Debugging-Mechanismus erlaubt es, Breakpoints zu setzen und den Programmablauf Schritt für Schritt zu analysieren, was gezielte Erklärungen im Unterricht erleichtert. Sicherheitsrelevante Aspekte wie Buffer Overflows können visuell demonstriert werden, inklusive der Manipulation von Registern und Stackpointer. Die Plattform ist sowohl lokal als auch serverbasiert einsetzbar, verfügt über ein Login- und Authentifizierungssystem und kann per GitHub-Action automatisch deployed werden.

  • Verständliche und intuitive Darstellung des Programmspeichers (Stack)
  • Parallele Anzeige von C- und Assembler-Code
  • Möglichkeit zum Hochladen eigener Übungen mit Ausführung in Docker-Containern
  • Debugging-Funktion mit Breakpoints für schrittweise Ablaufanalyse
  • Visuelle Demonstration von Sicherheitslücken wie Buffer Overflows
  • Lokale und serverbasierte Bereitstellung mit Login-System
  • Automatisiertes Deployment via GitHub-Action

Die Plattform stellt damit ein didaktisch wertvolles Werkzeug dar, das sowohl für eigenständiges Lernen als auch für den Unterrichtseinsatz geeignet ist.

Technische Schlüsselbegriffe

  • Buffer Overflow Eine Ausnutzung, bei der mehr Daten in einen Puffer geschrieben werden, als er aufnehmen kann, wodurch angrenzender Speicher überschrieben und der Programmfluss manipuliert werden kann.
  • CTF (Capture the Flag) Ein IT-Sicherheitswettbewerb, bei dem Schwachstellen gefunden und ausgenutzt werden, um virtuelle „Flaggen“ zu sammeln.
  • Docker Plattform zur Bereitstellung von Anwendungen in leichtgewichtigen Containern, die alle Abhängigkeiten enthalten und isoliert laufen.
  • Exploit Eine gezielte Ausnutzung einer Schwachstelle in einem System oder Programm.
  • GDB (GNU Debugger) Debugger zum schrittweisen Ausführen und Analysieren von Programmen, z. B. in C oder Assembler.
  • Heap Speicherbereich für dynamische Speicherzuweisungen, der während der Laufzeit wachsen oder schrumpfen kann.
  • JSON Web Token (JWT) Ein signierter Token im JSON-Format, der meist zur Authentifizierung und Identifizierung von Benutzern verwendet wird.
  • Programmspeicher Bereich im Arbeitsspeicher, in dem ausgeführte Programme und deren Daten liegen, bestehend aus Stack und Heap.
  • Stack Speicherbereich für Methodenaufrufe und lokale Variablen, der nach dem LIFO-Prinzip arbeitet.
  • Stack-Frame Teil des Stacks, der die Daten eines einzelnen Methodenaufrufs enthält.

Team

Patrick Frischknecht

Betreuer
Christopher Scherb