After successful completion of the course, students are able to understand common errors and security vulnerabilities as well as to deploy ways to detect and avoid them. Students are further able to conduct planning, testing and development of secure software applications. They gain a deeper understanding about the root causes of those errors and vulnerabilities by exploiting them themselves in a controlled environment, as well as apply principles of secure programming in practical examples. As a result, students are able to actively avoid these vulnerabilities and implement appropriate security measures in security relevant projects.
The lecture deals with common errors and vulnerabilities across OS and application layers as well as ways to detect and avoid them. Examples are used to highlight the general error classes and how they can be abused. Furthermore, software security testing techniques and binary analysis techniques are presented to detect vulnerabilities in applications and protocols and secure the development process.
In order to teach the subject in the most authentic way, the lecture uses a mostly "offensive approach": Security-related topics are viewed from an attacker's perspective and possible attack scenarios are shown. In practical challenges the students need to exploit previously discussed security vulnerabilities inside a controlled challenge-environment. This improves the students' understanding of the handled topics and helps them to prevent similar mistakes in own projects and allows them to actively take security measures when handling security relevant projects.
Please note that this course substitutes the two previous courses Advanced Internet Security as well as Software Security. In case you already finished both of these courses, you can not use Systems- and Application-Security for your degree.
ECTS Breakdown (6 ECTS = 150 hours)
Lectures (20h)Online Discussions, Self-studies (38h)Challenges (90h)Exam (2h)
Written exam and practical exercises (challenges).
Programming experience in C/C++ and/or Python would be helpful.