Nach positiver Absolvierung der Lehrveranstaltung sind Studierende in der Lage häufige Fehler und Schwachstellen zu verstehen, sowie gängige Techniken anzuwenden um diese zu erkennen und zu vermeiden. Zusätzlich sind Studierende in der Lage die Planung, das Testen und die Entwicklung von sicheren Softwareanwendungen durchzuführen. Sie erlangen ein tieferes Verständnis für die Ursachen dieser Sicherheitslücken, indem sie sie selbst in einer kontrollierten Umgebung ausnutzen, und die Grundlagen der sicheren Programmierung in praktischen Beispielen anwenden. Dadurch können die Studierenden diese Schwachstellen aktiv vermeiden und entsprechende Sicherheitsmaßnahmen in sicherheitsrelevanten Projekten umsetzen.
Die Vorlesung befasst sich mit häufigen Fehlern und Schwachstellen auf Betriebssystem- und Anwendungsebenen sowie mit Techniken, diese zu erkennen und zu vermeiden. Anhand von Fallbeispielen werden Problemklassen vertieft und es wird gezeigt wie diese missbraucht werden können. Techniken aus dem Bereich Software Security Testing und Binäranalyse werden vorgestellt, um Schwachstellen in Anwendungen und Protokollen zu erkennen, und Sicherheit im Entwicklungsprozess zu gewährleisten.
Um das Thema authentisch zu vermitteln, wird in der Vorlesung ein Grossteils "offensiver Ansatz" verwendet: Sicherheitsrelevante Themen werden aus der Sicht eines Angreifers betrachtet und mögliche Angriffsszenarien aufgezeigt. Im praktischen Teil müssen Studierende die zuvor diskutierten Sicherheitslücken in einer kontrollierten Übungsumgebung ausnutzen. Dies verbessert das Verständnis der Studierenden für die behandelten Themen und hilft ihnen, ähnliche Fehler in eigenen Projekten zu vermeiden und ermöglicht ihnen, Sicherheitsmaßnahmen beim Umgang mit sicherheitsrelevanten Projekten aktiv zu ergreifen.
ECTS Schlüssel (6 ECTS = 150 Stunden)
Vorlesungen (20h)Online Diskussion & Selbststudium (38h)Challenges (Übung) (90h)Exam (2h)
Schriftliche Prüfung und praktische Übungen (Challenges).
Die Teilleistungen bestehen aus:
Programmiererfahrung in C/C++ und/oder Python ist hilfreich.